# 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 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:
