import { defineConfig, devices } from "@playwright/test"; // E2E suite spins up an *isolated* `vite dev` per run (see global-setup.ts + // harness.ts). The user's own dev server stays untouched — we get a fresh // tempdir for D1 state, a free port, and a clean teardown after the suite. // // Borrowed pattern: anvil's tests/integration/queue-runner/harness.ts. // // Set TESSERA_E2E_PRESERVE=1 to keep the tempdir + logs after a failure. export default defineConfig({ testDir: "./specs", fullyParallel: false, workers: 1, retries: 0, timeout: 120_000, globalTimeout: 600_000, reporter: process.env.CI ? "list" : [["list"], ["html", { open: "never" }]], globalSetup: "./global-setup.ts", use: { // baseURL is populated by global-setup.ts after the ephemeral dev // server is ready. Falling back to a fixed default would let specs run // against the user's own dev server by accident. baseURL: process.env.TESSERA_E2E_BASE_URL, trace: "on-first-retry", screenshot: "only-on-failure", }, projects: [{ name: "chromium", use: { ...devices["Desktop Chrome"] } }], });