# mockupAWS v0.5.0 Testing Strategy ## Overview This document outlines the comprehensive testing strategy for mockupAWS v0.5.0, focusing on the new authentication, API keys, and advanced filtering features. **Test Period:** 2026-04-07 onwards **Target Version:** v0.5.0 **QA Engineer:** @qa-engineer --- ## Test Objectives 1. **Authentication System** - Verify JWT-based authentication flow works correctly 2. **API Key Management** - Test API key creation, revocation, and access control 3. **Advanced Filters** - Validate filtering functionality on scenarios list 4. **E2E Regression** - Ensure v0.4.0 features work with new auth requirements --- ## Test Suite Overview | Test Suite | File | Test Count | Priority | |------------|------|------------|----------| | QA-AUTH-019 | `auth.spec.ts` | 18+ | P0 (Critical) | | QA-APIKEY-020 | `apikeys.spec.ts` | 20+ | P0 (Critical) | | QA-FILTER-021 | `scenarios.spec.ts` | 24+ | P1 (High) | | QA-E2E-022 | `regression-v050.spec.ts` | 15+ | P1 (High) | --- ## QA-AUTH-019: Authentication Tests **File:** `frontend/e2e/auth.spec.ts` ### Test Categories #### 1. Registration Tests | Test Case | Description | Expected Result | |-----------|-------------|-----------------| | REG-001 | Register new user successfully | Redirect to dashboard, token stored | | REG-002 | Duplicate email registration | Error message displayed | | REG-003 | Password mismatch | Validation error shown | | REG-004 | Invalid email format | Validation error shown | | REG-005 | Weak password | Validation error shown | | REG-006 | Missing required fields | Validation errors displayed | | REG-007 | Navigate to login from register | Login page displayed | #### 2. Login Tests | Test Case | Description | Expected Result | |-----------|-------------|-----------------| | LOG-001 | Login with valid credentials | Redirect to dashboard | | LOG-002 | Login with invalid credentials | Error message shown | | LOG-003 | Login with non-existent user | Error message shown | | LOG-004 | Invalid email format | Validation error shown | | LOG-005 | Navigate to register from login | Register page displayed | | LOG-006 | Navigate to forgot password | Password reset page displayed | #### 3. Protected Routes Tests | Test Case | Description | Expected Result | |-----------|-------------|-----------------| | PROT-001 | Access /scenarios without auth | Redirect to login | | PROT-002 | Access /profile without auth | Redirect to login | | PROT-003 | Access /settings without auth | Redirect to login | | PROT-004 | Access /settings/api-keys without auth | Redirect to login | | PROT-005 | Access /scenarios with auth | Page displayed | | PROT-006 | Auth persistence after refresh | Still authenticated | #### 4. Logout Tests | Test Case | Description | Expected Result | |-----------|-------------|-----------------| | OUT-001 | Logout redirects to login | Login page displayed | | OUT-002 | Clear tokens on logout | localStorage cleared | | OUT-003 | Access protected route after logout | Redirect to login | #### 5. Token Management Tests | Test Case | Description | Expected Result | |-----------|-------------|-----------------| | TOK-001 | Token refresh mechanism | New tokens issued | | TOK-002 | Store tokens in localStorage | Tokens persisted | --- ## QA-APIKEY-020: API Keys Tests **File:** `frontend/e2e/apikeys.spec.ts` ### Test Categories #### 1. Create API Key (UI) | Test Case | Description | Expected Result | |-----------|-------------|-----------------| | CREATE-001 | Navigate to API Keys page | Settings page loaded | | CREATE-002 | Create new API key | Modal with full key displayed | | CREATE-003 | Copy API key to clipboard | Success message shown | | CREATE-004 | Key appears in list after creation | Key visible in table | | CREATE-005 | Validate required fields | Error message shown | #### 2. Revoke API Key (UI) | Test Case | Description | Expected Result | |-----------|-------------|-----------------| | REVOKE-001 | Revoke API key | Key removed from list | | REVOKE-002 | Confirm before revoke | Confirmation dialog shown | #### 3. API Access with Key (API) | Test Case | Description | Expected Result | |-----------|-------------|-----------------| | ACCESS-001 | Access API with valid key | 200 OK | | ACCESS-002 | Access /auth/me with key | User info returned | | ACCESS-003 | Access with revoked key | 401 Unauthorized | | ACCESS-004 | Access with invalid key format | 401 Unauthorized | | ACCESS-005 | Access with non-existent key | 401 Unauthorized | | ACCESS-006 | Access without key header | 401 Unauthorized | | ACCESS-007 | Respect API key scopes | Operations allowed per scope | | ACCESS-008 | Track last used timestamp | Timestamp updated | #### 4. API Key Management (API) | Test Case | Description | Expected Result | |-----------|-------------|-----------------| | MGMT-001 | List all API keys | Keys returned without full key | | MGMT-002 | Key prefix in list | Prefix visible, full key hidden | | MGMT-003 | Create key with expiration | Expiration date set | | MGMT-004 | Rotate API key | New key issued, old revoked | #### 5. API Key List View (UI) | Test Case | Description | Expected Result | |-----------|-------------|-----------------| | LIST-001 | Display keys table | All columns visible | | LIST-002 | Empty state | Message shown when no keys | | LIST-003 | Display key prefix | Prefix visible in table | --- ## QA-FILTER-021: Filters Tests **File:** `frontend/e2e/scenarios.spec.ts` ### Test Categories #### 1. Region Filter | Test Case | Description | Expected Result | |-----------|-------------|-----------------| | REGION-001 | Apply us-east-1 filter | Only us-east-1 scenarios shown | | REGION-002 | Apply eu-west-1 filter | Only eu-west-1 scenarios shown | | REGION-003 | No region filter | All scenarios shown | #### 2. Cost Filter | Test Case | Description | Expected Result | |-----------|-------------|-----------------| | COST-001 | Apply min cost filter | Scenarios above min shown | | COST-002 | Apply max cost filter | Scenarios below max shown | | COST-003 | Apply cost range | Scenarios within range shown | #### 3. Status Filter | Test Case | Description | Expected Result | |-----------|-------------|-----------------| | STATUS-001 | Filter by draft status | Only draft scenarios shown | | STATUS-002 | Filter by running status | Only running scenarios shown | #### 4. Combined Filters | Test Case | Description | Expected Result | |-----------|-------------|-----------------| | COMBINE-001 | Combine region + status | Both filters applied | | COMBINE-002 | URL sync with filters | Query params updated | | COMBINE-003 | Parse filters from URL | Filters applied on load | | COMBINE-004 | Multiple regions in URL | All regions filtered | #### 5. Clear Filters | Test Case | Description | Expected Result | |-----------|-------------|-----------------| | CLEAR-001 | Clear all filters | Full list restored | | CLEAR-002 | Clear individual filter | Specific filter removed | | CLEAR-003 | Clear on refresh | Filters reset | #### 6. Search by Name | Test Case | Description | Expected Result | |-----------|-------------|-----------------| | SEARCH-001 | Search by exact name | Matching scenario shown | | SEARCH-002 | Partial name match | Partial matches shown | | SEARCH-003 | Non-matching search | Empty results or message | | SEARCH-004 | Combine search + filters | Both applied | | SEARCH-005 | Clear search | All results shown | #### 7. Date Range Filter | Test Case | Description | Expected Result | |-----------|-------------|-----------------| | DATE-001 | Filter by from date | Scenarios after date shown | | DATE-002 | Filter by date range | Scenarios within range shown | --- ## QA-E2E-022: E2E Regression Tests **File:** `frontend/e2e/regression-v050.spec.ts` ### Test Categories #### 1. Scenario CRUD with Auth | Test Case | Description | Expected Result | |-----------|-------------|-----------------| | CRUD-001 | Display scenarios list | Table with headers visible | | CRUD-002 | Navigate to scenario detail | Detail page loaded | | CRUD-003 | Display scenario metrics | All metrics visible | | CRUD-004 | 404 for non-existent scenario | Error message shown | #### 2. Log Ingestion with Auth | Test Case | Description | Expected Result | |-----------|-------------|-----------------| | INGEST-001 | Start scenario and ingest logs | Logs accepted, metrics updated | | INGEST-002 | Persist metrics after refresh | Metrics remain visible | #### 3. Reports with Auth | Test Case | Description | Expected Result | |-----------|-------------|-----------------| | REPORT-001 | Generate PDF report | Report created successfully | | REPORT-002 | Generate CSV report | Report created successfully | #### 4. Navigation with Auth | Test Case | Description | Expected Result | |-----------|-------------|-----------------| | NAV-001 | Navigate to dashboard | Dashboard loaded | | NAV-002 | Navigate via sidebar | Routes work correctly | | NAV-003 | 404 for invalid routes | Error page shown | | NAV-004 | Maintain auth on navigation | User stays authenticated | #### 5. Comparison with Auth | Test Case | Description | Expected Result | |-----------|-------------|-----------------| | COMPARE-001 | Compare 2 scenarios | Comparison data returned | | COMPARE-002 | Compare 3 scenarios | Comparison data returned | #### 6. API Authentication Errors | Test Case | Description | Expected Result | |-----------|-------------|-----------------| | AUTHERR-001 | Access API without token | 401 returned | | AUTHERR-002 | Access with invalid token | 401 returned | | AUTHERR-003 | Access with malformed header | 401 returned | --- ## Test Execution Plan ### Phase 1: Prerequisites Check - [ ] Backend auth endpoints implemented (BE-AUTH-003) - [ ] Frontend auth pages implemented (FE-AUTH-009, FE-AUTH-010) - [ ] API Keys endpoints implemented (BE-APIKEY-005) - [ ] API Keys UI implemented (FE-APIKEY-011) - [ ] Filters UI implemented (FE-FILTER-012) ### Phase 2: Authentication Tests 1. Execute `auth.spec.ts` tests 2. Verify all registration scenarios 3. Verify all login scenarios 4. Verify protected routes behavior 5. Verify logout flow ### Phase 3: API Keys Tests 1. Execute `apikeys.spec.ts` tests 2. Verify key creation flow 3. Verify key revocation 4. Verify API access with keys 5. Verify key rotation ### Phase 4: Filters Tests 1. Execute `scenarios.spec.ts` tests 2. Verify region filters 3. Verify cost filters 4. Verify status filters 5. Verify combined filters 6. Verify search functionality ### Phase 5: Regression Tests 1. Execute `regression-v050.spec.ts` tests 2. Verify v0.4.0 features with auth 3. Check pass rate on Chromium --- ## Test Environment ### Requirements - **Backend:** Running on http://localhost:8000 - **Frontend:** Running on http://localhost:5173 - **Database:** Migrated with v0.5.0 schema - **Browsers:** Chromium (primary), Firefox, WebKit ### Configuration ```bash # Run specific test suite npx playwright test auth.spec.ts npx playwright test apikeys.spec.ts npx playwright test scenarios.spec.ts npx playwright test regression-v050.spec.ts # Run all v0.5.0 tests npx playwright test auth.spec.ts apikeys.spec.ts scenarios.spec.ts regression-v050.spec.ts # Run with HTML report npx playwright test --reporter=html ``` --- ## Expected Results ### Pass Rate Targets - **Chromium:** >80% - **Firefox:** >70% - **WebKit:** >70% ### Critical Path (Must Pass) 1. User registration 2. User login 3. Protected route access control 4. API key creation 5. API key access authorization 6. Scenario list filtering --- ## Helper Utilities ### auth-helpers.ts Provides authentication utilities: - `registerUser()` - Register via API - `loginUser()` - Login via API - `loginUserViaUI()` - Login via UI - `registerUserViaUI()` - Register via UI - `logoutUser()` - Logout via UI - `createAuthHeader()` - Create Bearer header - `createApiKeyHeader()` - Create API key header - `generateTestEmail()` - Generate test email - `generateTestUser()` - Generate test user data ### test-helpers.ts Updated with auth support: - `createScenarioViaAPI()` - Now accepts accessToken - `deleteScenarioViaAPI()` - Now accepts accessToken - `startScenarioViaAPI()` - Now accepts accessToken - `stopScenarioViaAPI()` - Now accepts accessToken - `sendTestLogs()` - Now accepts accessToken --- ## Known Limitations 1. **API Availability:** Tests will skip if backend endpoints return 404 2. **Timing:** Some tests include wait times for async operations 3. **Cleanup:** Test data cleanup may fail silently 4. **Visual Tests:** Visual regression tests not included in v0.5.0 --- ## Success Criteria - [ ] All P0 tests passing on Chromium - [ ] >80% overall pass rate on Chromium - [ ] No critical authentication vulnerabilities - [ ] API keys work correctly for programmatic access - [ ] Filters update list in real-time - [ ] URL sync works correctly - [ ] v0.4.0 features still functional with auth --- ## Reporting ### Test Results Format ``` Test Suite: QA-AUTH-019 Total Tests: 18 Passed: 16 (89%) Failed: 1 Skipped: 1 Test Suite: QA-APIKEY-020 Total Tests: 20 Passed: 18 (90%) Failed: 1 Skipped: 1 Test Suite: QA-FILTER-021 Total Tests: 24 Passed: 20 (83%) Failed: 2 Skipped: 2 Test Suite: QA-E2E-022 Total Tests: 15 Passed: 13 (87%) Failed: 1 Skipped: 1 Overall Pass Rate: 85% ``` --- ## Appendix: Test Data ### Test Users - Email pattern: `user.{timestamp}@test.mockupaws.com` - Password: `TestPassword123!` - Full Name: `Test User {timestamp}` ### Test Scenarios - Name pattern: `E2E Test {timestamp}` - Regions: us-east-1, eu-west-1, ap-southeast-1, us-west-2, eu-central-1 - Status: draft, running, completed ### Test API Keys - Name pattern: `Test API Key {purpose}` - Scopes: read:scenarios, write:scenarios, read:reports - Format: `mk_` + 32 random characters --- *Document Version: 1.0* *Last Updated: 2026-04-07* *Prepared by: @qa-engineer*