Files
OmniRoute/playwright.config.ts
Diego Rodrigues de Sa e Souza a471d70c3c fix(ci): give the heavy E2E shard headroom + stream live progress (#3392)
The 35m bump still wasn't enough — shard 5/6 (responsive viewport matrix +
studio/smoke, ~24 serial tests after a ~5m build) was still cancelled at 35m,
and the `github` Playwright reporter buffers output so the cancelled log showed
no per-test results (couldn't tell which test was slow).

- e2e timeout-minutes 35 -> 50 (the shard observably needs >35m; other shards
  finish in ~7m so they're unaffected).
- Playwright CI reporter github -> line so per-test progress + timing stream
  live to the job log, making any genuinely slow/hung test diagnosable.
2026-06-07 15:59:28 -03:00

63 lines
2.4 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import { defineConfig, devices } from "@playwright/test";
const dashboardPort = process.env.DASHBOARD_PORT || process.env.PORT || "20128";
const dashboardBaseUrl = `http://localhost:${dashboardPort}`;
const webServerReadyUrl = `${dashboardBaseUrl}/api/monitoring/health`;
const playwrightServerMode = process.env.OMNIROUTE_PLAYWRIGHT_SERVER_MODE || "start";
const playwrightWebServerTimeout = Number.parseInt(
process.env.OMNIROUTE_PLAYWRIGHT_WEB_SERVER_TIMEOUT || "900000",
10
);
export default defineConfig({
testDir: "./tests/e2e",
testMatch: ["**/*.spec.ts"],
// Temporarily exclude E2E tests broken by the Nav Restructure refactor
// (settings page → redirect to settings/general, logs page split into
// subpages, protocol tabs moved out of /endpoint). Track restoration as
// a follow-up once the new nav structure stabilises.
testIgnore: [
"**/analytics-tabs.spec.ts",
"**/memory-settings.spec.ts",
"**/protocol-visibility.spec.ts",
"**/resilience-plan-alignment.spec.ts",
"**/settings-toggles.spec.ts",
"**/skills-marketplace.spec.ts",
],
fullyParallel: false,
// Per-test cap. 600s was high enough that one hung test (× retries) could
// exhaust the e2e job's wall-clock budget, so the GitHub job hit its
// timeout-minutes and was CANCELLED mid-run instead of the test failing fast.
// 180s is generous for a UI flow yet bounds a hang to a clear per-test failure.
timeout: 180_000,
forbidOnly: !!process.env.CI,
retries: process.env.CI ? 2 : 0,
workers: 1,
// `line` (not `github`) in CI so per-test progress + timing stream live to the
// job log. The `github` reporter buffers all output until the run ends, so when
// a slow shard was cancelled at its timeout the log showed only "Running N
// tests" then silence — impossible to tell which test was slow/hung.
reporter: process.env.CI ? "line" : "html",
expect: {
timeout: process.env.CI ? 30_000 : 10_000,
},
use: {
baseURL: dashboardBaseUrl,
navigationTimeout: 300_000,
trace: "on-first-retry",
screenshot: "only-on-failure",
},
projects: [
{
name: "chromium",
use: { ...devices["Desktop Chrome"] },
},
],
webServer: {
command: `${JSON.stringify(process.execPath)} scripts/dev/run-next-playwright.mjs ${playwrightServerMode}`,
url: webServerReadyUrl,
reuseExistingServer: !process.env.CI,
timeout: Number.isFinite(playwrightWebServerTimeout) ? playwrightWebServerTimeout : 900_000,
},
});