Skip to content

Commit 68672f6

Browse files
committed
ci(ecosystem): pin Node 24.15.0 for Playwright-using projects
`npx playwright install chromium` wedges after the chromium zip download reaches 100% when run under Node 24.16.0+ with Playwright < 1.60.0 (microsoft/playwright#40724, fixed in 1.60.0 via #40747). The hang is silent and unrecoverable — the runner only knows about it via the 10-min job timeout. We've been losing every nightly E2E run on the same 4 projects (vibe-dashboard, vitepress, tanstack-start-helloworld, vitest-playwright-repro) because vp env happens to pick 24.16.0 for them. Pin those projects to the last known-good Node minor via .node-version written before `vp install`. This is a workaround; remove it once each project ships a Playwright >= 1.60 bump.
1 parent 7462562 commit 68672f6

1 file changed

Lines changed: 14 additions & 0 deletions

File tree

ecosystem-ci/patch-project.ts

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,20 @@ const cwd = directory ? join(repoRoot, directory) : repoRoot;
2424
// run vp migrate
2525
const cli = process.env.VP_CLI_BIN ?? 'vp';
2626

27+
// Playwright < 1.60.0 wedges `npx playwright install chromium` after the
28+
// download bar reaches 100% when run under Node 24.16.0+ (microsoft/playwright#40724,
29+
// fixed in 1.60.0 via microsoft/playwright#40747). Pin these projects to the last
30+
// known-good Node minor until they ship a Playwright >= 1.60 bump.
31+
const playwrightHangProjects = new Set([
32+
'vibe-dashboard',
33+
'vitepress',
34+
'tanstack-start-helloworld',
35+
'vitest-playwright-repro',
36+
]);
37+
if (playwrightHangProjects.has(project)) {
38+
await writeFile(join(repoRoot, '.node-version'), '24.15.0\n', 'utf-8');
39+
}
40+
2741
if (project === 'rollipop') {
2842
const oxfmtrc = await readFile(join(repoRoot, '.oxfmtrc.json'), 'utf-8');
2943
await writeFile(

0 commit comments

Comments
 (0)