Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 9 additions & 0 deletions .github/workflows/hub-client-e2e.yml
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,10 @@ on:
description: 'Also run smoke-all E2E tests (slow, ~80 extra tests, opt-in only)'
type: boolean
default: false
smoke-all-workers:
description: 'Playwright worker count for smoke-all (override; nightly default is 3)'
type: string
default: '3'
schedule:
- cron: '0 7 * * *' # 2am EST / 3am EDT, runs on main
push:
Expand Down Expand Up @@ -171,6 +175,11 @@ jobs:
# changes to the WASM pipeline or theme resolution.
- name: Run smoke-all E2E tests (nightly + opt-in)
if: inputs.run-smoke-all == true || github.event_name == 'schedule'
env:
# Worker count override. Scheduled nightlies leave inputs unset, so
# this is empty → the config uses its default (3). A workflow_dispatch
# can raise it (e.g. 4) to re-stress the samod-0.12 sync fix.
SMOKE_ALL_WORKERS: ${{ inputs.smoke-all-workers }}
run: |
cd hub-client
npx playwright test --config playwright.smoke-all.config.ts
Expand Down
20 changes: 15 additions & 5 deletions hub-client/playwright.smoke-all.config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -27,9 +27,19 @@ export default defineConfig({
// match so only the smoke-all spec runs under this config.
testIgnore: undefined,
testMatch: '**/smoke-all.spec.ts',
// Run smoke-all serially. The base config uses 2 workers on CI, but the
// WASM render pipeline stalls under contention on a 2-core runner, which is
// the dominant source of the 75s-timeout flakiness in this suite. A single
// worker trades wall-clock for stability — acceptable for a nightly run.
workers: 1,
// Parallel workers for smoke-all. This suite historically ran at `workers: 1`
// because the 75s-timeout flakiness was blamed on the WASM render pipeline
// stalling under CPU contention. That diagnosis was wrong: the public-repo
// `ubuntu-latest` runner has 4 vCPUs (not 2), and the real cause was
// server-side sync contention, fixed by the samod-0.12 hub upgrade (PR #355,
// 2026-07-03). Since that landed the nightly has been clean, and dispatch
// stress runs confirmed 78/78 with zero flaky at both 3 and 4 workers
// (~3.4m vs the serial ~4.8m). We restore parallelism at 3, which reserves
// one core for the co-resident hub + vite-preview + node processes.
//
// `SMOKE_ALL_WORKERS` overrides the count for a workflow_dispatch run (e.g.
// to re-stress at 4 if flakiness ever returns).
workers: process.env.SMOKE_ALL_WORKERS
? parseInt(process.env.SMOKE_ALL_WORKERS, 10)
: 3,
});
Loading