Files
ss-tools/docker-compose.e2e.yml
busya a32ca0631b feat(037): capture, verification lifecycle, inheritance + close 036 stabilization
- Authoritative candidate capture with server-issued artifacts and raw-byte
  immutability hashing (source_response_hash server-owned)
- Closed-period lifecycle: request-hash bound approvals, persisted closure
  immutability violations, byte-for-byte catalog stability on reclosure
- Verification runs: persisted VerificationRun model + FK migration,
  publish gate (block_publish), scheduled observability runs (02:00 UTC)
- FR-013 baseline inheritance: prior_release_id migration, plan_inheritance/
  execute_inheritance classification and re-extraction, API endpoints
- Visual executor bound to release-deployment environment; caller mismatch
  rejected; visual SSIM/reconciliation modules
- Query execution decomposed: envelope/model/executor split, no direct SQL
- AgentRun approvals extracted to submodule; evidence adapter; _utils
- Dashboard testing service decomposed into 30+ modules (all <400 LOC)
- Five Feature-037 agent tools with permission guards (tools_037.py)
- API readiness endpoint; Alembic env/migrations; test fixture repos
- Specs 036/037 contracts, openapi.yaml, schema.json, tasks/traceability
  updated; semantic index rebuilt with 0 parse warnings
- Fix ADR-0003 parser ambiguity: remove [DEF🆔ADR] prose example
- Add axiom-mcp-agent-feedback.md: agent findings for MCP rework plan
- Tests: 298 service + 1464 API + 45 agent passing; ruff clean
2026-07-31 11:28:50 +03:00

105 lines
3.1 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
env_file:
- ./backend/.env
depends_on:
db:
condition: service_healthy
environment:
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
AUTH_SECRET_KEY: ${AUTH_SECRET_KEY:?Set AUTH_SECRET_KEY in .env.e2e}
SERVICE_JWT: ${SERVICE_JWT:-e2e-service-secret}
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
# Playwright runner (CI mode)
e2e-runner:
image: mcr.microsoft.com/playwright:v1.52.0-noble
working_dir: /workspace/frontend
depends_on:
backend:
condition: service_healthy
frontend:
condition: service_healthy
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: