Files
Reactive-Resume/playwright.config.ts
T
Amruth Pillai 685fcab605 fix(e2e): launch server directly so Playwright can stop it
pnpm 12.6 moves script children into their own process group. Playwright
stops its webServer with a process-group kill, so the server spawned via
`pnpm start` survived teardown and every E2E job hung until the 30 minute
timeout after all tests had passed.
2026-09-28 08:41:29 +02:00

47 lines
1.2 KiB
TypeScript

import { defineConfig, devices } from "@playwright/test";
const port = Number.parseInt(process.env.PORT ?? "3000", 10);
const baseURL = process.env.APP_URL ?? `http://localhost:${port}`;
const isCI = process.env.CI === "true" || process.env.CI === "1";
export default defineConfig({
testDir: "./tests/e2e/specs",
fullyParallel: true,
forbidOnly: isCI,
retries: 0,
workers: isCI ? 1 : undefined,
timeout: 30_000,
expect: {
timeout: 10_000,
},
reporter: isCI
? [["list"], ["github"], ["junit", { outputFile: "test-results/e2e-junit.xml" }]]
: [["list"], ["html", { open: "never" }]],
use: {
baseURL,
trace: "retain-on-failure",
screenshot: "only-on-failure",
video: "retain-on-failure",
},
projects: [
{
name: "chromium",
use: { ...devices["Desktop Chrome"] },
},
],
webServer: {
// Run node directly: pnpm >=12.6 moves script children into their own process group,
// so Playwright's group kill misses the server and the job hangs after the tests finish.
command: "node apps/server/dist/index.mjs",
url: `${baseURL}/api/health`,
reuseExistingServer: !isCI,
timeout: 120_000,
env: {
...process.env,
APP_URL: baseURL,
NODE_ENV: "production",
PORT: String(port),
},
},
});