# Onboarding BDD E2E Tests This directory contains BDD (Behavior-Driven Development) E2E tests for the GridPilot onboarding flow. ## Overview The onboarding flow guides new users through a two-step wizard process: 1. **Personal Information** - Collects user details (name, display name, country, timezone) 2. **Racing Avatar** - Generates an AI-powered racing avatar from a face photo ## Test Files ### [`onboarding-wizard.spec.ts`](onboarding-wizard.spec.ts) Tests the complete onboarding wizard flow, including: - User redirection after login - Wizard structure and navigation - Step progression and completion - Help panel visibility - Error states and retry logic - Authentication and authorization flows ### [`onboarding-personal-info.spec.ts`](onboarding-personal-info.spec.ts) Tests the personal information collection step, including: - Form field visibility and interaction - Input validation (required fields, length limits, character restrictions) - Country and timezone selection - Step navigation (next/back) - Data persistence across steps - Real-time validation feedback ### [`onboarding-avatar.spec.ts`](onboarding-avatar.spec.ts) Tests the avatar creation step, including: - Face photo upload and preview - Suit color selection - Avatar generation process - Avatar selection from generated options - File upload validation (format, size, dimensions) - Generation error states and retry logic ### [`onboarding-validation.spec.ts`](onboarding-validation.spec.ts) Tests validation rules and error handling throughout the flow: - Form field validation (empty fields, invalid formats, length limits) - File upload validation (corrupted files, wrong dimensions, inappropriate content) - Network and server error handling - Concurrent submission prevention - Edge cases and boundary conditions ## Testing Philosophy These tests follow the BDD E2E testing concept: - **Focus on Outcomes**: Tests validate what the user sees and can verify, not visual implementation details - **Gherkin Syntax**: Scenarios are described using Given/When/Then format - **User-Centric**: Tests represent real user journeys and acceptance criteria - **Placeholder Structure**: Each test file contains TODO comments indicating what needs to be implemented ## Test Structure Each test file follows this pattern: ```typescript test.describe('Feature Name', () => { test.beforeEach(async ({ page }) => { // TODO: Implement authentication and setup }); test('User sees expected outcome', async ({ page }) => { // TODO: Implement test // Scenario: Description // Given I am in a specific state // When I perform an action // Then I should see a specific outcome }); }); ``` ## Key User Journeys Covered ### Driver Onboarding Journey 1. New user logs in for the first time 2. User is redirected to onboarding page 3. User completes personal information (Step 1) 4. User creates a racing avatar (Step 2) 5. User completes onboarding 6. User is redirected to dashboard ### Validation Journey 1. User attempts to proceed with invalid data 2. User sees validation errors 3. User corrects the data 4. User successfully proceeds ### Error Recovery Journey 1. User encounters a network error 2. User sees error message 3. User retries the operation 4. User successfully completes the operation ## Implementation Notes - All tests are placeholders with TODO comments - Tests should use Playwright's test and expect APIs - Tests should focus on user-visible outcomes - Tests should be independent and isolated - Tests should use proper authentication setup - Tests should handle both success and error scenarios ## Future Enhancements - Add test data factories for consistent test data - Add visual regression testing for critical UI elements - Add performance testing for avatar generation - Add accessibility testing for all interactive elements - Add cross-browser compatibility testing