# Gherkin-Style E2E Tests - Feature Summary ## Overview This directory contains Gherkin-style acceptance tests for the EuchreCamp application, written in Cucumber syntax and executed via Playwright. ## Coverage Summary ### Feature Files (6 files, 16 scenarios) | Feature File | Issue | Scenarios | Status | |--------------|-------|-----------|--------| | authentication.feature | - | 5 | ✅ Complete | | password-reset.feature | #10 | 4 | ⚠️ @wip (needs UI) | | player-schedule.feature | #9 | 3 | ⚠️ @wip (needs data) | | tournament-schedule.feature | #7 | 4 | ⚠️ @wip (needs data) | | user-registration.feature | - | 3 | ✅ Complete | | wordmark-navigation.feature | #24 | 3 | ✅ Complete | ### Step Definitions - **Total steps defined:** 75 - **Common steps:** Navigation, forms, assertions - **Auth steps:** Registration, login, logout, schedule navigation - **All steps verified:** ✅ Dry-run passes with no undefined steps ## Issues Covered ### Issue #24: Wordmark Navigation ✅ **Scenario:** Clicking EuchreCamp wordmark navigates to appropriate page - Unauthenticated users → Public homepage - Players → Their profile page - Admins → Admin dashboard ### Issue #10: Password Reset ⚠️ **Scenarios:** - Access password reset page - Request reset with valid email - Request reset with invalid email - Submit empty email field **Status:** Marked @wip because password reset UI is not yet implemented ### Issue #9: Player Schedule ⚠️ **Scenarios:** - View empty schedule (no matches) - View schedule with upcoming matches - Navigate to match details **Status:** Marked @wip because data setup requires tournament creation ### Issue #7: Tournament Schedule Tab ⚠️ **Scenarios:** - View schedule page for tournament - Generate round-robin schedule - View schedule with bye rounds - Click matchup to enter results **Status:** Marked @wip because data setup requires tournament creation ## Running Tests ### Command Line ```bash # Run all Cucumber tests bun run test:acceptance:cucumber # Run with pretty output bun run test:acceptance:cucumber:pretty # Run specific feature bun cucumber-js e2e/cucumber/features/user-registration.feature # Dry run (verify all steps defined) bun cucumber-js --config e2e/cucumber/cucumber.config.ts --dry-run ``` ### Tags Filter tests by tag: ```bash # Run only @happy-path tests bun cucumber-js --tags "@happy-path" # Skip @wip tests bun cucumber-js --tags "not @wip" # Run specific issue tests bun cucumber-js --tags "@issue-24" ``` ## Feature Examples ### Wordmark Navigation (Issue #24) ```gherkin Scenario: Authenticated player clicks wordmark goes to their profile Given I am logged in as a player When I click the "EuchreCamp" wordmark Then I should be redirected to my profile page And I should see "Welcome" ``` ### User Registration ```gherkin Scenario: Successful registration with valid data Given I am on the registration page When I fill in "name" with "Test User" And I fill in "email" with "test@example.com" And I fill in "password" with "TestPassword1234!" And I click the "Create Account" button Then I should be redirected to my profile page And my user account should exist ``` ### Tournament Schedule (Issue #7) ```gherkin Scenario: Tournament admin generates round-robin schedule Given I am logged in as a tournament admin And a tournament exists with 4 teams When I go to the tournament schedule page And I click the "Generate Schedule" button Then I should see "Schedule generated successfully" And I should see round 1 matchups ``` ## Key Principles 1. **Browser-only interactions** - Tests interact with UI only, no database access 2. **Gherkin syntax** - Plain English Given-When-Then format 3. **Happy path focus** - Tests common user workflows 4. **Issue tracking** - Each feature file linked to specific GitHub issues 5. **@wip markers** - New/incomplete features marked for development ## Next Steps ### Immediate 1. Run tests against dev server: `bun run test:acceptance:cucumber` 2. Review @wip scenarios and implement missing UI 3. Set up test data creation via API or fixtures ### Short-term 1. Add more feature files for other issues: - Issue #8: Tournament bracket visualization - Issue #11: Club admin dashboard - Issue #15: Admin view-as-user functionality - Issue #22: Team configuration options 2. Add more step definitions for: - Tournament creation - Team management - Match result entry - Calendar view ### Long-term 1. Integrate with CI/CD pipeline 2. Generate HTML reports 3. Add visual regression testing 4. Create test data factory for complex scenarios ## Useful Commands ```bash # List all feature files ls e2e/cucumber/features/ # Count scenarios grep -c "Scenario:" e2e/cucumber/features/*.feature # List all step definitions grep -r "Given\|When\|Then" e2e/cucumber/step-definitions/ | wc -l # Check for @wip scenarios grep -n "@wip" e2e/cucumber/features/*.feature ``` ## Documentation - [Cucumber.js Documentation](https://github.com/cucumber/cucumber-js) - [Gherkin Reference](https://cucumber.io/docs/gherkin/) - [Playwright Documentation](https://playwright.dev) - [Feature README](./README.md)