# Docker Compose stack for e2e smoke testing with aimock. # Mirrors the user experience: Vite frontend + BFF + langgraph dev agent + aimock as LLM. # Usage: docker compose -f docker-compose.test.yml up -d services: aimock: image: ghcr.io/copilotkit/aimock:latest volumes: - ./fixtures:/fixtures:ro command: ["--fixtures", "/fixtures", "--host", "0.0.0.0", "--validate-on-load"] agent: build: context: ./apps/agent dockerfile: ../../docker/Dockerfile.agent environment: - OPENAI_API_KEY=test-key-for-aimock - OPENAI_BASE_URL=http://aimock:4010/v1 depends_on: aimock: condition: service_started healthcheck: test: [ "CMD", "python", "-c", "import urllib.request; urllib.request.urlopen('http://localhost:8123/ok')", ] interval: 5s timeout: 5s retries: 30 start_period: 30s bff: build: context: . dockerfile: docker/Dockerfile.bff environment: - LANGGRAPH_DEPLOYMENT_URL=http://agent:8123 depends_on: agent: condition: service_healthy healthcheck: test: [ "CMD", "node", "-e", "const net = require('net'); const socket = net.connect(4000, '127.0.0.1', () => { socket.end(); process.exit(0); }); socket.on('error', () => process.exit(1)); socket.setTimeout(2000, () => { socket.destroy(); process.exit(1); });", ] interval: 5s timeout: 10s retries: 30 start_period: 20s app: build: context: . dockerfile: docker/Dockerfile.app environment: - COPILOTKIT_RUNTIME_URL=http://bff:4000/api/copilotkit depends_on: bff: condition: service_healthy healthcheck: test: [ "CMD", "node", "-e", "const http = require('http'); const req = http.get('http://localhost:3000/', (res) => { process.exit(res.statusCode === 200 ? 0 : 1); }); req.on('error', () => process.exit(1)); req.setTimeout(2000, () => { req.destroy(); process.exit(1); });", ] interval: 5s timeout: 10s retries: 30 start_period: 60s tests: image: mcr.microsoft.com/playwright:v1.52.0-noble working_dir: /tests volumes: - ../../../showcase/tests:/tests - test-results:/tests/test-results environment: - STARTER=${STARTER:-langgraph-python} - STARTER_URL=http://app:3000 depends_on: app: condition: service_healthy command: [ "bash", "-c", "cd /tests && npm install --no-audit --no-fund 2>/dev/null && npx playwright install chromium && npx playwright test starter-smoke --reporter=list", ] volumes: test-results: