Complete Phase 6 of Playwright E2E testing plan with comprehensive integration tests covering cross-feature workflows and system integration. Integration Tests Added: proxy-acl-integration.spec.ts - ACL with proxy host integration proxy-certificate.spec.ts - SSL certificate lifecycle tests proxy-dns-integration.spec.ts - DNS challenge provider integration security-suite-integration.spec.ts - Cerberus security suite tests backup-restore-e2e.spec.ts - Full backup/restore workflow import-to-production.spec.ts - Caddyfile/CrowdSec import flows multi-feature-workflows.spec.ts - Complex multi-step scenarios Agent Skills Created: docker-rebuild-e2e.SKILL.md - Rebuild E2E Docker environment test-e2e-playwright-debug.SKILL.md - Run/debug Playwright tests Supporting scripts for skill execution Test Infrastructure Improvements: TestDataManager for namespace-based test isolation Fixed route paths: /backups → /tasks/backups Domain uniqueness via UUID namespacing Improved selector reliability with role-based queries Results: 648 tests passing, 98 skipped, 97.5% statement coverage
9.7 KiB
name, version, description, author, license, tags, compatibility, requirements, environment_variables, parameters, outputs, metadata
| name | version | description | author | license | tags | compatibility | requirements | environment_variables | parameters | outputs | metadata | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| test-e2e-playwright | 1.0.0 | Run Playwright E2E tests against the Charon application with browser selection and filtering | Charon Project | MIT |
|
|
|
|
|
|
|
Test E2E Playwright
Overview
Executes Playwright end-to-end tests against the Charon application. This skill supports browser selection, headed mode for debugging, and test filtering by name pattern.
The skill runs non-interactively by default (HTML report does not auto-open), making it suitable for CI/CD pipelines and automated testing scenarios.
Prerequisites
- Node.js 18.0 or higher installed and in PATH
- Playwright browsers installed (
npx playwright install) - Charon application running (default:
http://localhost:8080) - Test files in
tests/directory
Quick Start: Ensure E2E Environment is Ready
Before running tests, ensure the Docker E2E environment is running:
# Start/rebuild E2E Docker container (recommended before testing)
.github/skills/scripts/skill-runner.sh docker-rebuild-e2e
# Or for a complete clean rebuild:
.github/skills/scripts/skill-runner.sh docker-rebuild-e2e --clean --no-cache
Usage
Basic Usage
Run E2E tests with default settings (Chromium, headless):
.github/skills/scripts/skill-runner.sh test-e2e-playwright
Browser Selection
Run tests in a specific browser:
# Chromium (default)
.github/skills/scripts/skill-runner.sh test-e2e-playwright --project=chromium
# Firefox
.github/skills/scripts/skill-runner.sh test-e2e-playwright --project=firefox
# WebKit (Safari)
.github/skills/scripts/skill-runner.sh test-e2e-playwright --project=webkit
# All browsers
.github/skills/scripts/skill-runner.sh test-e2e-playwright --project=all
Headed Mode (Debugging)
Run tests with a visible browser window:
.github/skills/scripts/skill-runner.sh test-e2e-playwright --headed
Filter Tests
Run only tests matching a pattern:
# Run tests with "login" in the title
.github/skills/scripts/skill-runner.sh test-e2e-playwright --grep="login"
# Run tests with "DNS" in the title
.github/skills/scripts/skill-runner.sh test-e2e-playwright --grep="DNS"
Combined Options
.github/skills/scripts/skill-runner.sh test-e2e-playwright --project=firefox --headed --grep="dashboard"
CI/CD Integration
For use in GitHub Actions or other CI/CD pipelines:
- name: Run E2E Tests
run: .github/skills/scripts/skill-runner.sh test-e2e-playwright
env:
PLAYWRIGHT_BASE_URL: http://localhost:8080
CI: true
Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| project | string | No | chromium | Browser project: chromium, firefox, webkit, all |
| headed | boolean | No | false | Run with visible browser window |
| grep | string | No | "" | Filter tests by title pattern (regex) |
Environment Variables
| Variable | Required | Default | Description |
|---|---|---|---|
| PLAYWRIGHT_BASE_URL | No | http://localhost:8080 | Application URL to test against |
| PLAYWRIGHT_HTML_OPEN | No | never | HTML report auto-open behavior |
| CI | No | "" | Set to "true" for CI environment behavior |
Outputs
Success Exit Code
- 0: All tests passed
Error Exit Codes
- 1: One or more tests failed
- Non-zero: Configuration or execution error
Output Directories
- playwright-report/: HTML report with test results and traces
- test-results/: Test artifacts, screenshots, and trace files
Viewing the Report
After test execution, view the HTML report using VS Code Simple Browser:
Method 1: Start Report Server
npx playwright show-report --port 9323
Then open in VS Code Simple Browser: http://127.0.0.1:9323
Method 2: VS Code Task
Use the VS Code task "Test: E2E Playwright - View Report" to start the report server as a background task, then open http://127.0.0.1:9323 in Simple Browser.
Method 3: Direct File Access
Open playwright-report/index.html directly in a browser.
Examples
Example 1: Quick Smoke Test
.github/skills/scripts/skill-runner.sh test-e2e-playwright --grep="smoke"
Example 2: Debug Failing Test
.github/skills/scripts/skill-runner.sh test-e2e-playwright --headed --grep="failing-test-name"
Example 3: Cross-Browser Validation
.github/skills/scripts/skill-runner.sh test-e2e-playwright --project=all
Test Structure
Tests are located in the tests/ directory and follow Playwright conventions:
tests/
├── auth.setup.ts # Authentication setup (runs first)
├── dashboard.spec.ts # Dashboard tests
├── dns-records.spec.ts # DNS management tests
├── login.spec.ts # Login flow tests
└── ...
Error Handling
Common Errors
Error: Target page, context or browser has been closed
Solution: Ensure the application is running at the configured base URL. Rebuild if needed:
.github/skills/scripts/skill-runner.sh docker-rebuild-e2e
Error: page.goto: net::ERR_CONNECTION_REFUSED
Solution: Start the Charon application before running tests:
.github/skills/scripts/skill-runner.sh docker-rebuild-e2e
Error: browserType.launch: Executable doesn't exist
Solution: Run npx playwright install to install browser binaries
Error: Timeout waiting for selector
Solution: The application may be slow or in an unexpected state. Try:
# Rebuild with clean state
.github/skills/scripts/skill-runner.sh docker-rebuild-e2e --clean
# Or debug the test to see what's happening
.github/skills/scripts/skill-runner.sh test-e2e-playwright-debug --grep="failing test"
Error: Authentication state is stale
Solution: Remove stored auth and let setup recreate it:
rm -rf playwright/.auth/user.json
.github/skills/scripts/skill-runner.sh test-e2e-playwright
Troubleshooting Workflow
When E2E tests fail, follow this workflow:
-
Check container health:
docker ps --filter "name=charon-playwright" docker logs charon-playwright --tail 50 -
Verify the application is accessible:
curl -sf http://localhost:8080/api/v1/health -
Rebuild with clean state if needed:
.github/skills/scripts/skill-runner.sh docker-rebuild-e2e --clean -
Debug specific failing test:
.github/skills/scripts/skill-runner.sh test-e2e-playwright-debug --grep="test name" -
View the HTML report for details:
npx playwright show-report --port 9323
Key File Locations
| Path | Purpose |
|---|---|
tests/ |
All E2E test files |
tests/auth.setup.ts |
Authentication setup fixture |
playwright.config.js |
Playwright configuration |
playwright/.auth/user.json |
Stored authentication state |
playwright-report/ |
HTML test reports |
test-results/ |
Test artifacts and traces |
.docker/compose/docker-compose.playwright.yml |
E2E Docker compose config |
Dockerfile |
Application Docker image |
Related Skills
- docker-rebuild-e2e - Rebuild Docker image and restart E2E container
- test-e2e-playwright-debug - Debug E2E tests in headed mode
- test-e2e-playwright-coverage - Run E2E tests with coverage
- test-frontend-unit - Frontend unit tests with Vitest
- docker-start-dev - Start development environment
- integration-test-all - Run all integration tests
Notes
- Authentication: Tests use stored auth state from
playwright/.auth/user.json - Parallelization: Tests run in parallel locally, sequential in CI
- Retries: CI automatically retries failed tests twice
- Traces: Traces are collected on first retry for debugging
- Report: HTML report is generated at
playwright-report/index.html
Last Updated: 2026-01-15
Maintained by: Charon Project Team
Source: tests/ directory