E2E Workflow Fixes: Add frontend dependency installation step (missing npm ci in frontend/) Remove incorrect working-directory from backend build step Update Node.js version from v18 to v20 (dependency requirements) Backend Coverage: 84.9% → 85.0% (20+ new test functions): Access list service validation and templates Backup service error handling and edge cases Security audit logs and rule sets Auth service edge cases and token validation Certificate service upload and sync error paths Frontend Coverage: 85.06% → 85.66% (27 new tests): Tabs component accessibility and keyboard navigation Plugins page status badges and error handling SecurityHeaders CRUD operations and presets API wrappers for credentials and encryption endpoints E2E Infrastructure: Enhanced global-setup with emergency security module reset Added retry logic and verification for settings propagation Known Issues: 19 E2E tests still failing (ACL blocking security APIs - Issue #16) 7 Plugins modal UI tests failing (non-critical) To be addressed in follow-up PR Fixes #550 E2E workflow failures Related to #16 ACL implementation
6.0 KiB
Current Specification: Coverage Recovery & E2E Fix
Plan Type: Critical Bug Fix + Coverage Improvement Status: 🔴 BLOCKED - Backend Coverage at 84.9% Created: 2026-01-26 (Updated from 2026-01-25) Priority: CRITICAL
Quick Summary for User
What Happened:
- Development branch merge brought in new security features
- Backend coverage dropped from ~85.5% to 84.9% (0.6% loss)
- Primary culprit:
cmd/seedpackage @ 68.2%, services @ 82.4% - E2E tests may have ACL blocking issues (minor)
Fastest Fix (RECOMMENDED):
- Backend: Add 15-18 tests targeting 10 critical service functions → 2 hours → 85.36%
- E2E: Enhance emergency reset token validation → 20 minutes
- Frontend: Already planned (3 hours) → 86.5%
- Total Time: 5h 35min for complete DoD compliance
Alternative (If Time-Critical):
- Skip frontend Phase 3 (SecurityHeaders) → Saves 1 hour
- Final coverage: Backend 85.36%, Frontend 86.41%
- Still meets all DoD requirements
Critical Issues Identified
1. Backend Coverage Drop: 84.9% (Threshold: 85%)
Root Cause: Recent development merge added features without sufficient test coverage Impact: CI will fail on backend coverage check Fix Plan: backend_coverage_fix_plan.md Timeline: 2h 35min (Option A - Surgical Function Coverage)
2. Frontend Coverage
Status: ✅ Plan Ready Current: 85.06% local / 84.99% CI Target: 86.5% (1.5% buffer over 85% threshold) Strategy: 3 phases targeting 3-4 high-impact files Timeline: 2-3 hours implementation
Priority Files
- Tabs.tsx (Quick Win) - 0% branch coverage → 95-100% (+0.15%)
- Plugins.tsx (Highest Impact) - 58.18% → 85-90% (+1.2%)
- SecurityHeaders.tsx (Medium Impact) - 64.61% → 78-82% (+0.5%)
Full Plan Document
Location: frontend_coverage_test_plan.md
The detailed plan includes:
- ✅ Complete coverage analysis with metrics
- ✅ File-by-file breakdown with uncovered code paths
- ✅ Detailed test specifications (34+ test cases)
- ✅ Full code examples and testing patterns
- ✅ Implementation timeline with milestones
- ✅ Risk analysis and mitigation strategies
- ✅ CI validation procedures
3. E2E ACL Blocking (Minor)
Status: ⚠️ Investigation Required Issue: Tests may be intermittently blocked by ACL Fix: Enhanced emergency reset with token validation Timeline: 15-20 minutes
Implementation Order (CRITICAL PATH)
Step 1: Backend Coverage Fix (MUST DO FIRST)
Location: backend_coverage_fix_plan.md Option A (RECOMMENDED): Surgical service function coverage
- Phase 1: Critical functions (45 min) → 85.05%
- Phase 2: Medium impact (45 min) → 85.18%
- Phase 3: Quick wins (30 min) → 85.36% Total: 2h 0min → 85.36% backend coverage
Step 2: E2E ACL Fix (PARALLEL)
- Enhance emergency reset with token support (15 min)
- Verify with manual test (5 min) Total: 20 min
Step 3: Frontend Coverage (AFTER BACKEND FIXED)
- Phase 1 (30 min): Implement Tabs.tsx tests → 85.21% coverage
- Phase 2 (1.5 hrs): Implement Plugins.tsx tests → 86.41% coverage
- Phase 3 (1 hr): Implement SecurityHeaders.tsx tests → 86.91% coverage
- Validate: Run
npm run test:coverageand verify ≥ 85.5% - Push: Commit and verify CI passes
Total Timeline
| Task | Duration | Coverage Impact |
|---|---|---|
| Backend Fix (Option A) | 2h 0min | 84.9% → 85.36% ✅ |
| E2E Fix | 20 min | N/A |
| Frontend Phase 1 | 30 min | 85.06% → 85.21% |
| Frontend Phase 2 | 1.5 hrs | 85.21% → 86.41% |
| Frontend Phase 3 | 1 hr | 86.41% → 86.91% |
| Validation & CI | 15 min | Final checks |
| TOTAL | 5h 35min | Both ≥ 85.5% |
Critical Constraint
BACKEND MUST BE FIXED FIRST - CI will fail if backend coverage < 85%
Do not proceed with frontend work until backend coverage ≥ 85.2%
Success Criteria
- Backend coverage ≥ 85.2% ✅
- Frontend coverage ≥ 85.5% (with 0.5% buffer)
- E2E tests pass without ACL blocking
- All CI checks pass (coverage, linting, security)
- No test regressions
Detailed Plans
Backend Coverage Recovery
Document: backend_coverage_fix_plan.md Contents:
- Root cause analysis (development merge impact)
- 3 fix options (A: Fast, B: Moderate, C: Thorough)
- Detailed implementation steps for Option A
- Service function coverage targets (10 functions)
- Risk assessment and mitigation
Frontend Coverage Improvement
Document: frontend_coverage_test_plan.md Contents:
- Complete coverage analysis with metrics
- File-by-file breakdown with uncovered paths
- 34+ test case specifications
- Implementation timeline with milestones
Plugins Test File Decision
Current: __tests__/Plugins.test.tsx (18 tests, 312 lines) → 56.6% coverage
Skip File: Plugins.test.tsx.skip (34 tests, 710 lines) → Unknown coverage
Recommendation: KEEP CURRENT (Do Not Fix Skip File)
Rationale:
- Skip file is 128% larger (710 vs 312 lines)
- Has 89% more tests (34 vs 18)
- But: Complex mocking issues (1-2 hours to debug)
- Coverage gain likely minimal (5-10% on Plugins.tsx only)
- Current 18 tests already cover critical paths
- Frontend plan achieves 86.5% without Plugins fixes
Alternative: Only pursue if frontend falls short of 85.5% after Phase 2
Status & Next Action
Status: ✅ PLAN COMPLETE - Ready for Implementation
Next Action: Review and choose implementation path:
- Option A (RECOMMENDED): Full fix (5h 35min) → Backend 85.36%, Frontend 86.91%
- Option B (Time-Critical): Skip Frontend Phase 3 (4h 35min) → Backend 85.36%, Frontend 86.41%
- Option C (Minimal): Backend only (2h 20min) → Backend 85.36%, Frontend stays 85.06%
All options meet DoD (≥85% coverage). Option A provides best buffer.