You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Every PR's bun (lint + typecheck + test) CI leg now fails on one test, with no change in the repo causing it. The workflow's bun-version: latest floated from bun-v1.3.14 to bun-v1.4.0 between 2026-08-08 and 2026-09-02.
Failing test (deterministic, 2/2 on PR #65, timeout at ~30s):
(fail) a persona whose credentials are wrong fails the run instead of opening it signed out [30004ms] / [30018ms]
^ this test timed out after 30000ms.
On 08-08 the same test passed in 1.96s (run 31238151616). Today it hangs past the 30s test timeout while its happy-path sibling passes — Chrome launches and the fixture serves fine; only the failure-detection path stalls.
Locally on bun 1.3.14 the whole file passes in ~6s.
Mechanism: the persona has no expect, so assertSignedIn (src/services/login.ts) runs adapter.waitFor({ networkIdle: true, timeout: 30000 }). LOGIN_TIMEOUT_MS (30s) exactly equals the e2e's STORY_TIMEOUT_MS (30s), so when the networkIdle wait does not settle under 1.4.0, the wait consumes the entire budget and the test timeout fires first (or simultaneously). Under 1.3.14 the wait settles in ~2s and AuthError lands.
Precedent for this runner's browser-test flake class: 0ed497b skipped the low-level BrowserAdapter suite in CI ("flakes under the runner's parallel 2-vCPU load — its own Bun.serve fixture refuses connections"); main also has a red run (b10171a, 2026-08-08) on the sibling auth e2e.
Fix directions
Pin bun-version in .github/workflows/ci.yml (e.g. 1.3.14) — one line, unblocks every PR immediately; bump deliberately after testing 1.4.0.
Decouple the login budget from the e2e timeout and/or bound the no-expectnetworkIdle wait in assertSignedIn, so a wrong-credentials login fails in seconds instead of riding the test's timeout boundary. (Also worth a look: whether bun 1.4.0 changed Bun.serve keep-alive/flush behavior so networkIdle never settles against the fixture.)
Reproduce
Open any PR (or rerun PR #65's failed job) — the leg fails on this test. Same tree on a bun 1.3.14 machine passes.
Verified against
d8affa0 (green on 1.3.14) and PR #65 @ 9c5a754 (fails only this test on 1.4.0)
What
Every PR's
bun (lint + typecheck + test)CI leg now fails on one test, with no change in the repo causing it. The workflow'sbun-version: latestfloated from bun-v1.3.14 to bun-v1.4.0 between 2026-08-08 and 2026-09-02.Failing test (deterministic, 2/2 on PR #65, timeout at ~30s):
src/services/session-builder.test.ts— the wrong-credentials auth e2e (real Chromium +Bun.servelogin fixture).Evidence
bun-v1.3.14; PR feat(config): dual-read .dz/ui-debugger/ui-debugger-mcp.json before the root file (#64) #65's runs (2026-09-02) resolvedbun-v1.4.0. No commit between them touches CI, deps (bun.lock), or any code on this path.expect, soassertSignedIn(src/services/login.ts) runsadapter.waitFor({ networkIdle: true, timeout: 30000 }).LOGIN_TIMEOUT_MS(30s) exactly equals the e2e'sSTORY_TIMEOUT_MS(30s), so when the networkIdle wait does not settle under 1.4.0, the wait consumes the entire budget and the test timeout fires first (or simultaneously). Under 1.3.14 the wait settles in ~2s andAuthErrorlands.Fix directions
bun-versionin.github/workflows/ci.yml(e.g.1.3.14) — one line, unblocks every PR immediately; bump deliberately after testing 1.4.0.expectnetworkIdlewait inassertSignedIn, so a wrong-credentials login fails in seconds instead of riding the test's timeout boundary. (Also worth a look: whether bun 1.4.0 changedBun.servekeep-alive/flush behavior sonetworkIdlenever settles against the fixture.)Reproduce
Open any PR (or rerun PR #65's failed job) — the leg fails on this test. Same tree on a bun 1.3.14 machine passes.
Verified against
d8affa0 (green on 1.3.14) and PR #65 @ 9c5a754 (fails only this test on 1.4.0)