Files
Charon/docs/plans/current_spec.md
GitHub Actions 29d2ec9cbf fix(ci): resolve E2E workflow failures and boost test coverage
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
2026-01-26 04:09:57 +00:00

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/seed package @ 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

  1. Tabs.tsx (Quick Win) - 0% branch coverage → 95-100% (+0.15%)
  2. Plugins.tsx (Highest Impact) - 58.18% → 85-90% (+1.2%)
  3. 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)

  1. Phase 1 (30 min): Implement Tabs.tsx tests → 85.21% coverage
  2. Phase 2 (1.5 hrs): Implement Plugins.tsx tests → 86.41% coverage
  3. Phase 3 (1 hr): Implement SecurityHeaders.tsx tests → 86.91% coverage
  4. Validate: Run npm run test:coverage and verify ≥ 85.5%
  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:

  1. Option A (RECOMMENDED): Full fix (5h 35min) → Backend 85.36%, Frontend 86.91%
  2. Option B (Time-Critical): Skip Frontend Phase 3 (4h 35min) → Backend 85.36%, Frontend 86.41%
  3. 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.