# ── superset-tools E2E test stack ─────────────────────────────────
# Isolated Docker Compose stack for Playwright E2E tests.
# Usage:
#   docker compose -f docker-compose.e2e.yml up -d
#   cd frontend && npm run test:e2e
#
# Environment variables (from .env.current or shell):
#   BACKEND_HOST_PORT, POSTGRES_HOST_PORT, etc.

services:
  db:
    image: postgres:16-alpine
    restart: unless-stopped
    environment:
      POSTGRES_DB: ss_tools
      POSTGRES_USER: postgres
      POSTGRES_PASSWORD: postgres
    ports:
      - "${POSTGRES_HOST_PORT:-5435}:5432"
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U postgres -d ss_tools"]
      interval: 5s
      timeout: 3s
      retries: 10

  backend:
    build:
      context: .
      dockerfile: docker/backend.Dockerfile
    restart: unless-stopped
    env_file:
      - ./backend/.env
    depends_on:
      db:
        condition: service_healthy
    environment:
      POSTGRES_URL: postgresql+psycopg2://postgres:postgres@db:5432/ss_tools
      DATABASE_URL: postgresql+psycopg2://postgres:postgres@db:5432/ss_tools
      TASKS_DATABASE_URL: postgresql+psycopg2://postgres:postgres@db:5432/ss_tools
      AUTH_DATABASE_URL: postgresql+psycopg2://postgres:postgres@db:5432/ss_tools
      BACKEND_PORT: 8000
      INITIAL_ADMIN_CREATE: "true"
      INITIAL_ADMIN_USERNAME: admin
      INITIAL_ADMIN_PASSWORD: admin123
      FEATURES__DATASET_REVIEW: "true"
      FEATURES__HEALTH_MONITOR: "true"
    ports:
      - "${BACKEND_HOST_PORT:-8103}:8000"
    volumes:
      - e2e_storage:/app/storage

  # Playwright runner (CI mode)
  e2e-runner:
    image: mcr.microsoft.com/playwright:v1.52.0-noble
    working_dir: /workspace/frontend
    depends_on:
      backend:
        condition: service_started
    environment:
      BACKEND_URL: http://backend:8000
      FRONTEND_URL: http://frontend:80
      E2E_USERNAME: admin
      E2E_PASSWORD: admin123
      GITEA_URL: https://git.bebesh.ru
      GITEA_TOKEN: ${GITEA_TOKEN:-}
      CI: "true"
    volumes:
      - .:/workspace
      - /tmp/playwright-report:/workspace/frontend/playwright-report
    command: >
      sh -c "
        npm ci --legacy-peer-deps &&
        npx playwright install chromium &&
        npx playwright test
      "

volumes:
  e2e_storage:
