--- name: ln-632-test-e2e-priority-auditor description: E2E Critical Coverage audit worker (L3). Validates E2E coverage for critical paths (Money 20+, Security 20+, Data 15+). Pure risk-based - no pyramid percentages. allowed-tools: Read, Grep, Glob, Bash --- # E2E Critical Coverage Auditor (L3 Worker) Specialized worker auditing E2E test coverage for critical paths (risk-based). ## Purpose & Scope - **Worker in ln-630 coordinator pipeline** - Audit **E2E Critical Coverage** (Category 2: High Priority) - Validate E2E coverage for critical paths (Money/Security/Data Priority ≥20) - Validate E2E coverage for core user journeys (Priority 15-19) - Identify wasteful E2E tests (Usefulness Score <15) - Calculate compliance score (X/10) ## Inputs (from Coordinator) Receives `contextStore` with risk-based testing philosophy, tech stack, codebase structure, test file list. ## Workflow 1) Parse context (critical paths, user journeys) 2) Identify critical paths in codebase (Money, Security, Data) 3) Identify core user journeys (multi-step flows) 4) Check E2E coverage for critical paths (Priority ≥20) 5) Check E2E coverage for user journeys (Priority 15-19) 6) Validate existing E2E tests (Usefulness Score ≥15) 7) Collect findings 8) Calculate score 9) Return JSON ## Audit Rules ### 1. Critical Path E2E Coverage **Rule:** Every critical path MUST have E2E test **Critical Paths (Priority ≥20):** - **Money** (Priority 25): Payment processing, refunds, discounts, tax calculation - **Security** (Priority 25): Login, auth, password reset, token refresh, permissions - **Data Export** (Priority 20): Reports, CSV generation, data migration **Detection:** 1. Scan codebase for critical keywords: `payment`, `refund`, `login`, `auth`, `export` 2. Extract critical functions/endpoints 3. Check if E2E test exists for each critical path 4. Missing E2E for Priority ≥20 → CRITICAL severity **Severity:** - **CRITICAL:** No E2E for Priority 25 (Money, Security) - **HIGH:** No E2E for Priority 20 (Data Export) **Recommendation:** Add E2E tests for critical paths immediately **Effort:** M ### 2. Core User Journey E2E Coverage **Rule:** Multi-step critical flows MUST have E2E test **Core Journeys (Priority 15-19):** - Registration → Email verification → First login (Priority 16) - Product search → Add to cart → Checkout (Priority 18) - File upload → Processing → Download result (Priority 15) **Detection:** 1. Identify multi-step flows in routes/controllers 2. Check if end-to-end journey test exists 3. Missing E2E for Priority ≥15 → HIGH severity **Severity:** - **HIGH:** Missing E2E for core user journey (Priority ≥15) - **MEDIUM:** Incomplete journey coverage (only partial steps tested) **Recommendation:** Add end-to-end journey tests **Effort:** M-L ### 3. E2E Test Usefulness Validation **Rule:** Every E2E test MUST justify Priority ≥15 **Check:** For each E2E test, calculate Usefulness Score = Impact × Probability - If Score <15 → Flag as "Potentially wasteful E2E" - Recommendation: Convert to Integration or Unit test (cheaper) **Example:** - E2E test for "API returns 200 OK" → Impact 2, Probability 1 → Score 2 → **WASTEFUL** - E2E test for "Payment with discount calculates correctly" → Impact 5, Probability 5 → Score 25 → **VALUABLE** **Severity:** - **MEDIUM:** E2E test with Usefulness Score <15 - **LOW:** E2E test with Score 10-14 (review needed) **Recommendation:** Convert low-value E2E to Integration/Unit or remove **Effort:** S ## Scoring Algorithm ``` critical_coverage = (critical_paths_covered / critical_paths_total) * 100 journey_coverage = (core_journeys_covered / core_journeys_total) * 100 wasteful_penalty = wasteful_e2e_tests * 0.5 score = (critical_coverage * 0.6 + journey_coverage * 0.4) / 10 - wasteful_penalty score = max(0, min(10, score)) ``` **Rationale:** - Focus on **critical path coverage** (60% weight), not total E2E count - Core journeys contribute 40% weight - Penalize **wasteful E2E tests** (low Usefulness Score) - No pyramid percentages - pure risk-based prioritization ## Output Format ```json { "category": "E2E Critical Coverage", "score": 6, "total_issues": 8, "critical": 2, "high": 3, "medium": 3, "metrics": { "critical_paths_total": 12, "critical_paths_covered": 7, "critical_coverage_percentage": 58, "core_journeys_total": 5, "core_journeys_covered": 3, "journey_coverage_percentage": 60, "wasteful_e2e_tests": 4 }, "findings": [ { "severity": "CRITICAL", "critical_path": "POST /payment", "priority": 25, "location": "routes/payment.ts:45", "issue": "No E2E test for payment processing", "recommendation": "Add E2E: successful payment + failed payment scenarios", "effort": "M" }, { "severity": "HIGH", "user_journey": "Registration → Email verification → First login", "priority": 16, "location": "routes/auth.ts + routes/users.ts", "issue": "Missing end-to-end journey test", "recommendation": "Add E2E test covering full registration flow", "effort": "L" }, { "severity": "MEDIUM", "e2e_test": "GET /users returns 200", "usefulness_score": 4, "location": "users.test.ts:23", "issue": "Low-value E2E test (Score <15)", "recommendation": "Convert to Integration test or remove", "effort": "S" } ] } ``` --- **Version:** 3.0.0 **Last Updated:** 2025-12-23