Closing the browser started by launchChromium() is slow because Chrome itself takes time to exit. Playwright sends the close command, and Chrome exits about 1.5 s later. Playwright's own headless shell needs about 15 ms. With every test file running in parallel, that 1.5 s became more than Bun's 5 s limit for hooks, so afterAll timed out.
| Browser | Time to close (3 runs, measured alone) |
|---|---|
| Chrome (what launchChromium uses) | 1526 / 1549 / 1543 ms |
| Chrome with --disable-gpu | 1526 / 1488 / 1482 ms |
| Playwright's headless shell | 18 / 13 / 13 ms |
The afterAll hook now has a 30 s limit. The skills keep using real Chrome, because it shows scrollbars the way the machine's browser does.
| Run | chromium.test.ts |
|---|---|
| Alone, 5 times in a row | 5 × pass (2.2–2.5 s) |
Full bun test --parallel, 4 times | pass in all 4 |
One of the 4 full runs had 5 other tests fail: git-heavy tests (worktrees, settings, prototype, voice) that hit their own time limits under load, unrelated to this change. chromium.test.ts was never among them.