Files
clawmates/frontend/playwright.config.ts
T
Omar SobhandClaude Fable 5 fc173f170d P0 exit: e2e harness, Playwright shell journeys green, deploy skeleton
- teamclaw-server e2e mode (TEAMCLAW_MODE=e2e): idempotent deterministic
  seed through the real registration paths
- Playwright suite (6 journeys) against the real backend + prod Next build:
  login redirect, bad-password error, shell/roster/online-dot, team members,
  seeded credits, sign-out revocation — P0 exit criterion met
- Dockerfiles: musl-static server -> distroless, Next standalone -> distroless
  node (multi-arch via TARGETARCH)
- Air-gapped compose topology with edge/core/sandbox_net/secrets_net
  segmentation (engine-validated in CI), config-file + env-overlay pattern
- CI: compose validation + e2e job with trace upload

Co-Authored-By: Claude Fable 5 <[email protected]>
2026-06-09 22:48:28 -05:00

32 lines
977 B
TypeScript

import { defineConfig, devices } from "@playwright/test";
// E2E journeys run against the REAL Rust backend (deterministic e2e seed)
// and the production Next build — no network interception anywhere.
export default defineConfig({
testDir: "./tests/e2e",
timeout: 30_000,
fullyParallel: false,
retries: process.env.CI ? 1 : 0,
reporter: process.env.CI ? "github" : "list",
use: {
baseURL: "http://127.0.0.1:3100",
trace: "retain-on-failure",
},
projects: [{ name: "chromium", use: { ...devices["Desktop Chrome"] } }],
webServer: [
{
command: "bash ../scripts/e2e-backend.sh",
url: "http://127.0.0.1:8080/healthz",
reuseExistingServer: !process.env.CI,
timeout: 180_000,
},
{
command: "npm run build && npx next start -p 3100",
url: "http://127.0.0.1:3100/login",
reuseExistingServer: !process.env.CI,
timeout: 180_000,
env: { API_ORIGIN: "http://127.0.0.1:8080" },
},
],
});