- 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]>
32 lines
977 B
TypeScript
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" },
|
|
},
|
|
],
|
|
});
|