59 lines
2.4 KiB
YAML
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:
|