From 26a975f461bdd27965b81e4ebce76cbaa50908e9 Mon Sep 17 00:00:00 2001 From: rcourtman Date: Wed, 8 Jul 2026 09:15:38 +0100 Subject: [PATCH] Keep red e2e shards inside the CI budget Proving run 28925348032 showed a shard can still hit the 45-minute job timeout while the suite carries many real failures: shard 4 held the visual crawl (5.3 minutes per attempt, currently failing) plus dozens of 14-second failing attempts, and with two retries the failure storm outran the budget even under the 20-failure cap. Retry once instead of twice on CI, and run the visual crawl only on the desktop project. The mobile emulation projects keep their dedicated mobile specs; a per-project 5-minute crawl was the single most expensive line in the suite. --- tests/integration/playwright.config.ts | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/tests/integration/playwright.config.ts b/tests/integration/playwright.config.ts index 328ca9383..e05903c3e 100644 --- a/tests/integration/playwright.config.ts +++ b/tests/integration/playwright.config.ts @@ -14,8 +14,10 @@ export default defineConfig({ /* Fail the build on CI if you accidentally left test.only in the source code */ forbidOnly: !!process.env.CI, - /* Retry on CI only */ - retries: process.env.CI ? 2 : 0, + /* Retry once on CI to absorb flake; a second retry only multiplies the + cost of real failures (each settings-shell failure costs ~14s/attempt, + a failing visual crawl over 5 minutes). */ + retries: process.env.CI ? 1 : 0, /* On CI, a broken test environment fails most of the suite; abort early so the run produces a red completed verdict with a report instead of @@ -81,15 +83,17 @@ export default defineConfig({ ...devices['Pixel 5'], }, // Journey tests skip on mobile projects (all use test.skip for mobile-*), - // so exclude them to avoid unnecessary browser launches. - testIgnore: ['**/journeys/**'], + // so exclude them to avoid unnecessary browser launches. The visual + // crawl takes 5+ minutes per project; one desktop pass is the budgeted + // coverage, and dedicated mobile specs cover mobile layout. + testIgnore: ['**/journeys/**', '**/99-visual-crawl.spec.ts'], }, { name: 'mobile-safari', use: { ...devices['iPhone 12'], }, - testIgnore: ['**/journeys/**'], + testIgnore: ['**/journeys/**', '**/99-visual-crawl.spec.ts'], }, // Uncomment to test on Firefox and WebKit