pediatric-ai-scribe-v3/docker-compose.e2e.yml
Daniel 8cfa07dcf5 feat(pe-guide): unified single-play + remove badges; fix(e2e): shared fixture + raised login limit
User-visible changes:
- Removed the REAL / SYNTH badge from each sound card. User feedback:
  "ridiculous". Cards now just show the sound title + description +
  player, no distinction beyond the player type (native <audio controls>
  for recordings, play/stop/progress bar for synth).
- Removed the "real recordings; synth labelled SYNTH" subtitle from
  the sounds library header.
- Single-playback policy across the whole PE Guide: when any sound
  starts (audio or synth), every other playing sound stops. Covers:
  audio → audio (pause the previous), audio → synth, synth → audio,
  synth → synth. Listeners attach on each .pe-audio 'play' event and
  on every synth play-button click.

E2E infrastructure fixes (for the test failures we hit):
- auth-gated-smoke.spec.js now imports test + loginAs from the shared
  fixtures.js so the token cache is unified across every spec. Without
  this, each spec file's module-scoped _tokenCache multiplied logins
  and hit the 10/15min rate limit.
- server.js: /api/auth/login rate limit is now configurable via
  LOGIN_RATE_LIMIT_MAX env var (default 10, prod unchanged).
- docker-compose.e2e.yml: LOGIN_RATE_LIMIT_MAX="500" so Playwright's
  two-project (chromium + mobile-chrome) multi-worker runs can do
  their logins without tripping the cap. Prod container unaffected.
- fixtures.js console.error allowlist expanded to suppress known
  non-bugs: Cross-Origin-Opener-Policy warnings on http:// e2e
  server, transient 401/403/404/503 resource loads, ERR_BLOCKED_BY_CLIENT.
2026-04-22 22:57:11 +02:00

43 lines
1.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: .
image: ped-ai-local:latest
ports:
- "127.0.0.1:3553:3000"
env_file:
- .env
environment:
# Disable Turnstile bot-check so tests can log in without a challenge
TURNSTILE_SECRET_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"
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: