pediatric-ai-scribe-v3/docker-compose.e2e.yml

59 lines
2.4 KiB
YAML

# E2E test environment — runs a second instance of the app on port 3553 with
# Turnstile disabled so Playwright can log in without the bot challenge.
# Shares the postgres + pgdata volume with production so seeded e2e test users
# (email pattern *@ped-ai.test) persist across test runs.
#
# Bring up with:
# docker compose -f docker-compose.yml -f docker-compose.e2e.yml up -d pediatric-scribe-e2e
#
# Tear down with:
# docker compose -f docker-compose.yml -f docker-compose.e2e.yml down pediatric-scribe-e2e
services:
pediatric-scribe-e2e:
build:
context: .
args:
GIT_REVISION: ${GIT_REVISION:-unknown}
image: ped-ai-local:latest
ports:
- "127.0.0.1:3553:3000"
env_file:
- .env
environment:
# Disable Turnstile entirely — both server-side verification AND the
# client-side widget. Without clearing the SITE_KEY the frontend tries
# to initialise the Turnstile iframe against the prod domain and
# throws error 110200, which Playwright's pageerror guard correctly
# flags as an uncaught exception.
TURNSTILE_SECRET_KEY: ""
TURNSTILE_SITE_KEY: ""
# Disable SMTP so register auto-verifies the user and returns a session
SMTP_HOST: ""
# Raise the login rate-limit so Playwright multi-worker runs don't
# trip the production 10/15min cap. Only affects this e2e container.
LOGIN_RATE_LIMIT_MAX: "500"
# Also raise the global /api/ limit so multi-spec Playwright runs
# that make hundreds of API calls don't burn through the 200/min cap.
API_RATE_LIMIT_MAX: "5000"
# Allow fetches from the two origins Playwright serves tests from —
# the in-network hostname and the host-port loopback. Without this
# the CORS middleware (scoped to /api) rejects any non-GET request
# because .env's APP_URL points at the production domain.
CORS_ORIGINS: "http://pediatric-ai-scribe-e2e:3000,http://host.docker.internal:3553,http://localhost:3553"
volumes:
- scribe-logs-e2e:/app/data/logs
depends_on:
postgres:
condition: service_healthy
container_name: pediatric-ai-scribe-e2e
restart: unless-stopped
healthcheck:
test: ["CMD", "wget", "--spider", "-q", "http://localhost:3000/api/health"]
interval: 30s
timeout: 10s
retries: 5
start_period: 20s
volumes:
scribe-logs-e2e: