Skip to content

ci: bun-version 'latest' floated 1.3.14 -> 1.4.0; auth wrong-credentials e2e now times out on every PR #66

Description

@ivndev001

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'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.

src/services/session-builder.test.ts — the wrong-credentials auth e2e (real Chromium + Bun.serve login fixture).

Evidence

  • Version extraction from run logs: main's green run for d8affa0 (2026-08-08) resolved 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) resolved bun-v1.4.0. No commit between them touches CI, deps (bun.lock), or any code on this path.
  • 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

  1. 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.
  2. Decouple the login budget from the e2e timeout and/or bound the no-expect networkIdle 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)

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions