Skip to content

Commit 25345d5

Browse files
chore(hub-e2e): restore parallel smoke-all workers (3)
The smoke-all suite ran serially (workers: 1) on the theory that the 75s-timeout flakiness came from the WASM render pipeline stalling under CPU contention on a '2-core' runner. That diagnosis was wrong on both counts: the public-repo ubuntu-latest runner has 4 vCPUs, and the real cause was server-side sync contention — fixed by the samod-0.12 hub upgrade (PR #355) on 2026-07-03. Since #355 the nightly has been clean at workers: 1 for several consecutive nights. Dispatch stress runs on this branch then confirmed 78/78 with zero flaky at both 3 and 4 workers (~3.4m, vs the serial ~4.8m), proving the fix holds under concurrent load: - run 28840734138 — 4 workers, nproc=4, 78 passed, 0 flaky (3.4m) - run 28871855320 — 3 workers, nproc=4, 78 passed, 0 flaky (3.4m) Restore parallelism at 3 (reserves one core for the co-resident hub + vite-preview + node). SMOKE_ALL_WORKERS + the smoke-all-workers dispatch input remain as a knob to re-stress at 4 if flakiness ever returns.
1 parent d6ff31f commit 25345d5

2 files changed

Lines changed: 24 additions & 5 deletions

File tree

.github/workflows/hub-client-e2e.yml

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,10 @@ on:
2626
description: 'Also run smoke-all E2E tests (slow, ~80 extra tests, opt-in only)'
2727
type: boolean
2828
default: false
29+
smoke-all-workers:
30+
description: 'Playwright worker count for smoke-all (override; nightly default is 3)'
31+
type: string
32+
default: '3'
2933
schedule:
3034
- cron: '0 7 * * *' # 2am EST / 3am EDT, runs on main
3135
push:
@@ -171,6 +175,11 @@ jobs:
171175
# changes to the WASM pipeline or theme resolution.
172176
- name: Run smoke-all E2E tests (nightly + opt-in)
173177
if: inputs.run-smoke-all == true || github.event_name == 'schedule'
178+
env:
179+
# Worker count override. Scheduled nightlies leave inputs unset, so
180+
# this is empty → the config uses its default (3). A workflow_dispatch
181+
# can raise it (e.g. 4) to re-stress the samod-0.12 sync fix.
182+
SMOKE_ALL_WORKERS: ${{ inputs.smoke-all-workers }}
174183
run: |
175184
cd hub-client
176185
npx playwright test --config playwright.smoke-all.config.ts

hub-client/playwright.smoke-all.config.ts

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -27,9 +27,19 @@ export default defineConfig({
2727
// match so only the smoke-all spec runs under this config.
2828
testIgnore: undefined,
2929
testMatch: '**/smoke-all.spec.ts',
30-
// Run smoke-all serially. The base config uses 2 workers on CI, but the
31-
// WASM render pipeline stalls under contention on a 2-core runner, which is
32-
// the dominant source of the 75s-timeout flakiness in this suite. A single
33-
// worker trades wall-clock for stability — acceptable for a nightly run.
34-
workers: 1,
30+
// Parallel workers for smoke-all. This suite historically ran at `workers: 1`
31+
// because the 75s-timeout flakiness was blamed on the WASM render pipeline
32+
// stalling under CPU contention. That diagnosis was wrong: the public-repo
33+
// `ubuntu-latest` runner has 4 vCPUs (not 2), and the real cause was
34+
// server-side sync contention, fixed by the samod-0.12 hub upgrade (PR #355,
35+
// 2026-07-03). Since that landed the nightly has been clean, and dispatch
36+
// stress runs confirmed 78/78 with zero flaky at both 3 and 4 workers
37+
// (~3.4m vs the serial ~4.8m). We restore parallelism at 3, which reserves
38+
// one core for the co-resident hub + vite-preview + node processes.
39+
//
40+
// `SMOKE_ALL_WORKERS` overrides the count for a workflow_dispatch run (e.g.
41+
// to re-stress at 4 if flakiness ever returns).
42+
workers: process.env.SMOKE_ALL_WORKERS
43+
? parseInt(process.env.SMOKE_ALL_WORKERS, 10)
44+
: 3,
3545
});

0 commit comments

Comments
 (0)