Files
paseo/packages/app/playwright.config.ts
Mohamed Boudra 4bfb682cd9 Cut Playwright feedback time without losing behavioral coverage (#3852)
* test(app): consolidate Playwright journeys

* test(app): stabilize consolidated Playwright flows

* test(app): make streaming dependencies explicit

* test(app): await profile feature persistence

* test(app): sample only actual workspace tabs
2026-08-25 20:55:05 +02:00

54 lines
1.7 KiB
TypeScript

import { defineConfig, devices } from "@playwright/test";
// E2E_METRO_PORT is set dynamically by global-setup.ts after finding a free port
// This allows multiple test runs in parallel across different worktrees
const baseURL =
process.env.E2E_BASE_URL ?? `http://localhost:${process.env.E2E_METRO_PORT ?? "8081"}`;
const relayDeploymentSpec = "**/relay-deployment-reconnect.real.spec.ts";
function videoMode(): "on" | "on-first-retry" | "retain-on-failure" {
if (process.env.E2E_RECORD_VIDEO === "1") return "on";
if (process.env.CI) return "on-first-retry";
return "retain-on-failure";
}
export default defineConfig({
testDir: "./e2e/browser",
globalSetup: "./e2e/support/global-setup.ts",
timeout: 60_000,
expect: {
timeout: 10_000,
},
// Files run concurrently, while each worker owns its daemon state. Keeping a
// spec on one worker avoids repeating its file-level setup across daemons.
fullyParallel: false,
workers: Number(process.env.E2E_WORKERS ?? (process.env.CI ? "2" : "1")),
retries: process.env.CI ? 1 : 0,
reporter: [["list"]],
use: {
baseURL,
trace: process.env.CI ? "on-first-retry" : "retain-on-failure",
screenshot: "only-on-failure",
video: videoMode(),
},
projects: [
{
name: "browser",
testIgnore: ["**/*.real.spec.ts"],
use: { ...devices["Desktop Chrome"] },
},
{
name: "real-provider",
testMatch: ["**/*.real.spec.ts"],
testIgnore: [relayDeploymentSpec],
use: { ...devices["Desktop Chrome"] },
},
{
name: "relay-deployment",
testMatch: [relayDeploymentSpec],
use: { ...devices["Desktop Chrome"] },
},
],
// Note: Metro is started by global-setup.ts on a dynamic port to allow parallel test runs
});