Discover dashboard filters, datasets and metrics from a parsed reference URL; capture and review baseline candidates with source provenance. Improve scenario DAG and run result views, add isolated browser coverage, and align contracts and ADRs.
149 lines
4.5 KiB
YAML
149 lines
4.5 KiB
YAML
# ── 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
|
|
args:
|
|
INSTALL_PLAYWRIGHT_BROWSERS: "0"
|
|
restart: unless-stopped
|
|
depends_on:
|
|
db:
|
|
condition: service_healthy
|
|
environment:
|
|
DATABASE_URL: postgresql+psycopg2://postgres:postgres@db:5432/ss_tools
|
|
DB_SCHEMA: ${DB_SCHEMA:-public}
|
|
RESET_DATABASE_SCHEMA: ${RESET_DATABASE_SCHEMA:-false}
|
|
BACKEND_PORT: 8000
|
|
AUTH_SECRET_KEY: ${AUTH_SECRET_KEY:?Set AUTH_SECRET_KEY in .env.e2e}
|
|
ENCRYPTION_KEY: ${ENCRYPTION_KEY:?Set ENCRYPTION_KEY in .env.e2e}
|
|
SERVICE_JWT: ${SERVICE_JWT:?Set SERVICE_JWT in .env.e2e}
|
|
STORAGE_ROOT_PATH: /app/storage
|
|
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"
|
|
healthcheck:
|
|
test: ["CMD-SHELL", "python -c \"import urllib.request; r = urllib.request.urlopen('http://127.0.0.1:8000/api/ready', timeout=5); exit(0 if r.status == 200 else 1)\""]
|
|
interval: 5s
|
|
timeout: 5s
|
|
retries: 20
|
|
volumes:
|
|
- e2e_storage:/app/storage
|
|
|
|
frontend:
|
|
build:
|
|
context: .
|
|
dockerfile: docker/frontend.Dockerfile
|
|
restart: unless-stopped
|
|
depends_on:
|
|
backend:
|
|
condition: service_healthy
|
|
ports:
|
|
- "${FRONTEND_HOST_PORT:-8102}:80"
|
|
healthcheck:
|
|
test: ["CMD-SHELL", "wget -q --spider http://127.0.0.1:80/ || exit 1"]
|
|
interval: 5s
|
|
timeout: 3s
|
|
retries: 20
|
|
|
|
# One-shot fixture for the 047 disposition browser flow; backend has completed migrations.
|
|
e2e-seed:
|
|
build:
|
|
context: .
|
|
dockerfile: docker/backend.Dockerfile
|
|
args:
|
|
INSTALL_PLAYWRIGHT_BROWSERS: "0"
|
|
entrypoint: ["python", "-m", "src.scripts.seed_scenario_disposition_e2e"]
|
|
working_dir: /app/backend
|
|
depends_on:
|
|
backend:
|
|
condition: service_healthy
|
|
environment:
|
|
DATABASE_URL: postgresql+psycopg2://postgres:postgres@db:5432/ss_tools
|
|
DB_SCHEMA: ${DB_SCHEMA:-public}
|
|
STORAGE_ROOT_PATH: /app/storage
|
|
volumes:
|
|
- e2e_storage:/app/storage
|
|
|
|
# Dashboard 10 reference capture uses an explicitly synthetic release in the isolated E2E DB.
|
|
e2e-reference-seed:
|
|
build:
|
|
context: .
|
|
dockerfile: docker/backend.Dockerfile
|
|
args:
|
|
INSTALL_PLAYWRIGHT_BROWSERS: "0"
|
|
entrypoint: ["python", "-m", "src.scripts.seed_reference_url_e2e"]
|
|
working_dir: /app/backend
|
|
depends_on:
|
|
backend:
|
|
condition: service_healthy
|
|
environment:
|
|
DATABASE_URL: postgresql+psycopg2://postgres:postgres@db:5432/ss_tools
|
|
DB_SCHEMA: ${DB_SCHEMA:-public}
|
|
STORAGE_ROOT_PATH: /app/storage
|
|
BASELINE_REFERENCE_E2E: "1"
|
|
volumes:
|
|
- e2e_storage:/app/storage
|
|
|
|
# Playwright runner (CI mode)
|
|
e2e-runner:
|
|
image: mcr.microsoft.com/playwright:v1.60.0-noble
|
|
working_dir: /workspace/frontend
|
|
depends_on:
|
|
backend:
|
|
condition: service_healthy
|
|
frontend:
|
|
condition: service_healthy
|
|
e2e-seed:
|
|
condition: service_completed_successfully
|
|
e2e-reference-seed:
|
|
condition: service_completed_successfully
|
|
environment:
|
|
BACKEND_URL: http://backend:8000
|
|
FRONTEND_URL: http://frontend:80
|
|
E2E_USERNAME: admin
|
|
E2E_PASSWORD: admin123
|
|
SS_DEV_PASSWORD: ${SS_DEV_PASSWORD:-}
|
|
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:
|