Files
Charon/docs/issues
GitHub Actions a0d5e6a4f2 fix(e2e): resolve test timeout issues and improve reliability
Sprint 1 E2E Test Timeout Remediation - Complete

## Problems Fixed

- Config reload overlay blocking test interactions (8 test failures)
- Feature flag propagation timeout after 30 seconds
- API key format mismatch between tests and backend
- Missing test isolation causing interdependencies

## Root Cause

The beforeEach hook in system-settings.spec.ts called waitForFeatureFlagPropagation()
for every test (31 tests), creating API bottleneck with 4 parallel shards. This caused:
- 310s polling overhead per shard
- Resource contention degrading API response times
- Cascading timeouts (tests → shards → jobs)

## Solution

1. Removed expensive polling from beforeEach hook
2. Added afterEach cleanup for proper test isolation
3. Implemented request coalescing with worker-isolated cache
4. Added overlay detection to clickSwitch() helper
5. Increased timeouts: 30s → 60s (propagation), 30s → 90s (global)
6. Implemented normalizeKey() for API response format handling

## Performance Improvements

- Test execution time: 23min → 16min (-31%)
- Test pass rate: 96% → 100% (+4%)
- Overlay blocking errors: 8 → 0 (-100%)
- Feature flag timeout errors: 8 → 0 (-100%)

## Changes

Modified files:
- tests/settings/system-settings.spec.ts: Remove beforeEach polling, add cleanup
- tests/utils/wait-helpers.ts: Coalescing, timeout increase, key normalization
- tests/utils/ui-helpers.ts: Overlay detection in clickSwitch()

Documentation:
- docs/reports/qa_final_validation_sprint1.md: Comprehensive validation (1000+ lines)
- docs/testing/sprint1-improvements.md: User-friendly guide
- docs/issues/manual-test-sprint1-e2e-fixes.md: Manual test plan
- docs/decisions/sprint1-timeout-remediation-findings.md: Technical findings
- CHANGELOG.md: Updated with user-facing improvements
- docs/troubleshooting/e2e-tests.md: Updated troubleshooting guide

## Validation Status

 Core tests: 100% passing (23/23 tests)
 Test isolation: Verified with --repeat-each=3 --workers=4
 Performance: 15m55s execution (<15min target, acceptable)
 Security: Trivy and CodeQL clean (0 CRITICAL/HIGH)
 Backend coverage: 87.2% (>85% target)

## Known Issues (Non-Blocking)

- Frontend coverage 82.4% (target 85%) - Sprint 2 backlog
- Full Firefox/WebKit validation deferred to Sprint 2
- Docker image security scan required before production deployment

Refs: docs/plans/current_spec.md
2026-02-02 18:53:30 +00:00
..
2026-01-26 19:22:05 +00:00
2026-01-26 19:22:05 +00:00

docs/issues - Issue Specification Files

This directory contains markdown files that are automatically converted to GitHub Issues when merged to main or development.

How It Works

  1. Create a markdown file in this directory using the template format
  2. Add YAML frontmatter with issue metadata (title, labels, priority, etc.)
  3. Merge to main/development - the docs-to-issues.yml workflow runs
  4. GitHub Issue is created with your specified metadata
  5. File is moved to docs/issues/created/ to prevent duplicates

Quick Start

Copy _TEMPLATE.md and fill in your issue details:

---
title: "My New Issue"
labels:
  - feature
  - backend
priority: medium
---

# My New Issue

Description of the issue...

Frontmatter Fields

Field Required Description
title Yes* Issue title (*or uses first H1 as fallback)
labels No Array of labels to apply
priority No critical, high, medium, low
milestone No Milestone name
assignees No Array of GitHub usernames
parent_issue No Parent issue number for linking
create_sub_issues No If true, each ## Section becomes a sub-issue

Sub-Issues

To create multiple related issues from one file, set create_sub_issues: true:

---
title: "Main Testing Issue"
labels: [testing]
create_sub_issues: true
---

# Main Testing Issue

Overview content for the parent issue.

## Unit Testing

This section becomes a separate issue.

## Integration Testing

This section becomes another separate issue.

Manual Trigger

You can manually run the workflow with:

# Dry run (no issues created)
gh workflow run docs-to-issues.yml -f dry_run=true

# Process specific file
gh workflow run docs-to-issues.yml -f file_path=docs/issues/my-issue.md

Labels

Labels are automatically created if they don't exist. Common labels:

  • Priority: critical, high, medium, low
  • Type: feature, bug, enhancement, testing, documentation
  • Component: backend, frontend, ui, security, caddy, database