- Implement DeleteCertificateDialog component to handle certificate deletion confirmation. - Add tests for DeleteCertificateDialog covering various scenarios including rendering, confirmation, and cancellation. - Update translation files for multiple languages to include new strings related to certificate deletion. - Create end-to-end tests for certificate deletion UX, including button visibility, confirmation dialog, and success/failure scenarios.
61 lines
2.7 KiB
YAML
61 lines
2.7 KiB
YAML
# Docker Compose for Local E2E Testing
|
|
#
|
|
# This configuration runs Charon with a fresh, isolated database specifically for
|
|
# Playwright E2E tests during local development. Uses .env file for credentials.
|
|
#
|
|
# Usage:
|
|
# docker compose -f .docker/compose/docker-compose.playwright-local.yml up -d
|
|
#
|
|
# Prerequisites:
|
|
# - Create .env file in project root with CHARON_ENCRYPTION_KEY and CHARON_EMERGENCY_TOKEN
|
|
# - Build image: docker build -t charon:local .
|
|
#
|
|
# The setup API will be available since no users exist in the fresh database.
|
|
# The auth.setup.ts fixture will create a test admin user automatically.
|
|
|
|
services:
|
|
charon-e2e:
|
|
image: charon:local
|
|
container_name: charon-e2e
|
|
restart: "no"
|
|
env_file:
|
|
- ../../.env
|
|
ports:
|
|
- "8080:8080" # Management UI (Charon) - E2E tests verify UI/UX here
|
|
- "127.0.0.1:2019:2019" # Caddy admin API (read-only status; keep loopback only)
|
|
- "[::1]:2019:2019" # Caddy admin API (IPv6 loopback)
|
|
- "2020:2020" # Emergency tier-2 API (all interfaces for E2E tests)
|
|
# Port 80/443: NOT exposed - middleware testing done via integration tests
|
|
environment:
|
|
- CHARON_ENV=e2e # Enable lenient rate limiting (50 attempts/min) for E2E tests
|
|
- CHARON_DEBUG=0
|
|
- TZ=UTC
|
|
# Encryption key and emergency token loaded from env_file (../../.env)
|
|
# DO NOT add them here - env_file takes precedence and explicit entries override with empty values
|
|
# Emergency server (Tier 2 break glass) - separate port bypassing all security
|
|
- CHARON_EMERGENCY_SERVER_ENABLED=true
|
|
- CHARON_EMERGENCY_BIND=0.0.0.0:2020 # Bind to all interfaces in container (avoid Caddy's 2019)
|
|
- CHARON_EMERGENCY_USERNAME=admin
|
|
- CHARON_EMERGENCY_PASSWORD=${CHARON_EMERGENCY_PASSWORD:-changeme}
|
|
- CHARON_HTTP_PORT=8080
|
|
- CHARON_DB_PATH=/app/data/charon.db
|
|
- CHARON_FRONTEND_DIR=/app/frontend/dist
|
|
- CHARON_CADDY_ADMIN_API=http://localhost:2019
|
|
- CHARON_CADDY_CONFIG_DIR=/app/data/caddy
|
|
- CHARON_CADDY_BINARY=caddy
|
|
- CHARON_ACME_STAGING=true
|
|
# FEATURE_CERBERUS_ENABLED deprecated - Cerberus enabled by default
|
|
tmpfs:
|
|
# True tmpfs for E2E test data - fresh on every run, in-memory only
|
|
# mode=1777 allows any user to write (container runs as non-root)
|
|
# 256M gives headroom for the backup service's 100MB disk-space check
|
|
- /app/data:size=256M,mode=1777
|
|
volumes:
|
|
- /var/run/docker.sock:/var/run/docker.sock:ro # For container discovery in tests
|
|
healthcheck:
|
|
test: ["CMD-SHELL", "wget -qO /dev/null http://localhost:8080/api/v1/health || exit 1"]
|
|
interval: 5s
|
|
timeout: 5s
|
|
retries: 10
|
|
start_period: 10s
|