Files
2026-07-13 12:58:18 +08:00

63 lines
2.1 KiB
YAML

# Docker Compose stack for e2e smoke testing with aimock.
# Mastra runs in-process with Next.js — only needs aimock + app (no agent service).
# 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"]
app:
build:
context: .
dockerfile: docker/Dockerfile.app
environment:
- OPENAI_API_KEY=test-key-for-aimock
- OPENAI_BASE_URL=http://aimock:4010/v1
depends_on:
aimock:
condition: service_started
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:
# The image tag (playwright:v1.52.0-noble) pins both the browser binaries
# and the system libs bundled in the image. It MUST stay aligned with the
# @playwright/test version declared in showcase/tests/package.json — if
# the client drifts to a newer version whose required system libs are
# missing from this image, `npx playwright install chromium` will fetch
# the matching browser binary but cannot install system libs. Bump both
# together, or re-add `--with-deps` for that run.
image: mcr.microsoft.com/playwright:v1.52.0-noble
working_dir: /tests
volumes:
- ../../../showcase/tests:/tests
- test-results:/tests/test-results
environment:
- STARTER=${STARTER:-mastra}
- 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: