# HVAC Community Events - E2E Tests ## Trainer Journey Testing This directory contains end-to-end tests for the complete Trainer User Journey as defined in the project requirements. ### Quick Start 1. Verify your setup: ```bash cd tests/e2e ./verify-setup.sh ``` 2. Run the trainer journey tests: ```bash cd ../.. # Go to wordpress-dev directory ./bin/run-tests.sh --trainer-journey ``` 3. Run certificate tests: ```bash # Using NPM scripts npm run test:basic # Run basic certificate tests npm run test:journey # Run full trainer journey with certificates npm run test:cert # Run certificate tests npm run test:cert:gen # Run certificate generation tests # Using advanced test runner ./bin/run-advanced-tests.sh # Basic certificate tests ./bin/run-advanced-tests.sh --test journey # Trainer journey ./bin/run-advanced-tests.sh --test journey --debug # With debug mode ./bin/run-advanced-tests.sh --test all # All certificate tests ``` 4. For detailed testing information: ```bash # Read the harmonized testing documentation cat tests/e2e/docs/harmonized-testing.md ``` ### Test Coverage The test suite covers the following trainer journey steps: - ✅ **Login & Authentication** (Steps 1-2) - ✅ **Dashboard Access** (Step 3) - ✅ **Event Management** (Step 4) - Create events (Step 4a) - View event list (Step 4b) - Modify events (Step 4c) - Delete events (Step 4d) - ✅ **Event Details View** (Step 5) - ⏳ **Event Statistics** (Step 6 - In Progress) - ⏳ **Order & Attendee Details** (Steps 7-8 - Pending) - ⏳ **Email Communication** (Step 9 - Phase 2) - ⏳ **Attendee Check-in** (Step 10) - ✅ **Certificate Generation** (Step 11 - Now Implemented!) - Generate certificates for attendees - View and manage certificates - Email and revoke certificates ### Project Structure ``` tests/e2e/ ├── pages/ # Page Object Model classes │ ├── BasePage.ts │ ├── LoginPage.ts │ ├── DashboardPage.ts │ ├── CreateEventPage.ts │ ├── EventSummaryPage.ts │ ├── ModifyEventPage.ts │ └── CertificatePage.ts ├── utils/ # Utility classes │ ├── Config.ts # Centralized configuration │ └── CertificateTestData.ts # Certificate test data ├── data/ # Test data │ ├── test-users.ts │ └── test-events.ts ├── docs/ # Documentation │ ├── trainer-journey-testing.md │ └── harmonized-testing.md # NEW! Harmonized testing approach ├── test-plan/ # Test planning documents │ └── trainer-journey-verification.md ├── trainer-journey.test.ts # Original trainer journey ├── trainer-journey-harmonized.test.ts # NEW! Harmonized trainer journey ├── certificate-basic.spec.ts # NEW! Basic certificate tests (compatible with all Playwright versions) ├── certificate-generation-checked-in.test.ts # Certificate generation tests ├── certificates.test.ts # Certificate functionality tests ├── CERTIFICATE_TESTING_GUIDE.md # Certificate testing documentation ├── verify-setup.sh # Setup verification script └── README.md # This file ``` ### Advanced Test Infrastructure ``` bin/ ├── run-tests.sh # Original test runner ├── run-playwright-tests.sh # Basic Playwright test runner ├── run-advanced-tests.sh # NEW! Advanced test runner with configuration options ├── setup-staging-test-users.sh # Setup test users └── certificate-test.js # Standalone certificate test script ``` ### Running Specific Tests #### Original Test Runner ```bash # Run all E2E tests ./bin/run-tests.sh --e2e # Run only trainer journey tests ./bin/run-tests.sh --trainer-journey # Run specific test scenarios ./bin/run-tests.sh --e2e --grep @login ./bin/run-tests.sh --e2e --grep @dashboard ./bin/run-tests.sh --e2e --grep @create-event # Run certificate tests (legacy method) ./bin/run-certificate-tests.sh generation ./bin/run-certificate-tests.sh reports ``` #### Harmonized Test Runner (Recommended) ```bash # Run specific test files npm run test:journey # Full trainer journey with certificates npm run test:basic # Basic certificate tests npm run test:cert # Certificate tests npm run test:cert:gen # Certificate generation tests # Run with debug mode npm run test:journey:debug # Run with UI mode npm run test:journey:ui # Run tests with advanced configuration ./bin/run-advanced-tests.sh --test journey --headed # With UI visible ./bin/run-advanced-tests.sh --test all --debug # All certificate tests with debug ``` ### Test Results - Console output shows real-time test progress - Screenshots saved in `test-results/screenshots/` - Test reports generated in `test-results/` ### Latest Test Summary (2025-05-21) The trainer journey and certificate tests are now **✅ PASSING** with the following coverage: 1. **Login and Dashboard Access**: Successfully tests trainer login and dashboard navigation 2. **Event Management**: Complete coverage of event CRUD operations: - Create new events with all required fields - View events in My Events page (both upcoming and past) - Modify existing events - Delete events with confirmation 3. **Event Details**: Views individual event pages 4. **Certificate Generation**: Fully implemented! - Generate certificates for event attendees - Manage certificates (view, email, revoke) - Filter and paginate certificate lists - Filter by attendee name and email Key improvements: - **Harmonized Testing Approach**: Consistent test structure that works with the latest Playwright version - **Advanced Test Runner**: Simplified execution with multiple configuration options - **Improved Page Objects**: Enhanced page object models with better encapsulation and reusability - **Consistent Dependencies**: Fixed Playwright version conflicts in package.json - **Comprehensive Documentation**: Added detailed testing documentation Key findings: - Events created during testing appear in My Events but not in main dashboard (application issue) - TinyMCE editor requires special handling in tests - Multiple fallback strategies implemented for form fields - Certificate generation properly handles checked-in vs. non-checked-in attendees For complete details on certificate testing, see the [Certificate Testing Guide](CERTIFICATE_TESTING_GUIDE.md) and [Harmonized Testing Approach](./docs/harmonized-testing.md). ### Prerequisites 1. **Environment Setup** - `.env` file with staging server credentials - Node.js and npm installed - Playwright dependencies installed 2. **Staging Server Requirements** - Test user `test_trainer` exists - Required plugins activated - HVAC Community Events plugin deployed ### Troubleshooting If tests fail, check: 1. **Network Issues** - Staging server is accessible - No proxy/firewall blocking 2. **Authentication Issues** - Test user credentials are correct - User has proper role assigned 3. **Element Not Found** - Page structure may have changed - Update selectors in page objects 4. **Certificate Generation Issues** - Verify events have attendees - Check if attendees have proper check-in status - Review certificate storage permissions 5. **Playwright Version Conflicts** - Check package.json to ensure Playwright is in devDependencies - Verify you're using version ^1.52.0 - Run `npm ci` to ensure clean installation - Use the `certificate-basic.spec.ts` file which avoids test.describe() 6. **Advanced Test Runner Issues** - Ensure the script is executable: `chmod +x bin/run-advanced-tests.sh` - Verify your .env file has the correct credentials - Try running with the `--headed` flag to see browser interactions ### Contributing When adding new tests: 1. Use the Page Object Model pattern 2. Add test data to centralized files 3. Update documentation 4. Follow existing naming conventions 5. Use the Config utility for environment variables ### Support For issues or questions: - Check the troubleshooting guide above - Review test output and screenshots - Check staging server logs - Contact the development team