Repository navigation
Conversation
- antigravity: freeze Date in the full-SSE-lifetime case so the shared 5 ms first-event deadline cannot expire before the first event on a slow runner - session-sidebar: freeze Date across the 250 ms trailing-click window - openpi-web E2E: drain the snapshot route handler before teardown - UI harness: findBy/waitFor give-up budget 1 s -> 5 s (test timeout 15 s); a missing element still fails, no product deadline is involved - background terminals: end the post-exit settle grace when the natural close path settles instead of always sleeping 1 s (also on shutdown) - run the taskkill timeout ladder on node:test's mock clock - drop wall-clock matrix rows that execute an identical path - shard Web E2E across three runners Refs #829
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Second test-value round (methodology: tt-a1i/test-value). Refs #829. Does not touch #832 (setup-config PID reuse); that flake is left to it.
Flaky tests (#829)
antigravity.test.ts"bounds the full SSE lifetime after the first event"timeoutMs: 5, the first-event and full-lifetime deadlines are the same instant. A runner that takes >5 ms between attempt start and the first read hits the first-event error instead of the one under test.Date.nowin this case only. The enqueued first event is then always seen before the deadline, and the idle second read expires via its real timer.session-sidebar.spec.ts:239trailing-click suppression (Windows)await waitFor(pin)alone can take longer, so the click went through.vi.useFakeTimers({ toFake: ["Date"] })for this case. The 250 ms window is product behavior, not something a slow runner should consume.openpi-web.e2e.ts:2510"Response has been disposed"route.fetch()/json()when the context closed.await page.unrouteAll({ behavior: "wait" })at the end, the same pattern this file already uses after cancel/reconcile.provider-models-settings.spec.ts:474,workbar-session-position.spec.ts:577,document-reading-state.spec.ts:234(Windows)findByRole/the 5 s test timeout while an App-level jsdom render was still running. The Windows UI job is about 2.5× slower than Linux (environment 148 s vs 56 s), and on it Testing Library's 1 s default give-up is shorter than one such render.configure({ asyncUtilTimeout: 5_000 })andtestTimeout: 15_000in the UI harness. These are harness give-up limits, not product deadlines: a missing element still fails, just later. No UI spec asserts that something appears within a time bound; product timers are tested with explicit clocks (see the sidebar fix above).session-history.e2e.ts:340setup-config.test.ts:661Faster feedback
SETTLE_GRACE_MS) before checking whether stdio had closed. Session shutdown waited for that sleeper too, even when the terminal had already settled. The grace now racesentry.settled, so a normal exit ends it right away; a descendant that holds the pipes open still gets the full 1 s.manager.test.ts: 40.1 s → 16.1 s. On Windows this file runs in the serial isolated-process job. All 102 background-terminal tests pass.node:testmock timers instead of waiting out the real 0.4 to 2 s production timeouts. Assertions are unchanged.x/3. Required checks are the aggregators (Node 22.19.0,Node 24,Background terminals (Windows)), so branch protection is unaffected.Audit (tests added since #726: 157 files, +38.6k lines)
Most new tests assert observable behavior through public entry points. Mechanical scans found no copied test titles across files, no source-text assertions, and no snapshot freezes. The cost lives in fixed waits and harness budgets, not in redundant cases, so this round deletes only cases with path-level evidence.
tests/web/web-host.test.tsstop with wall shift0 / +120000 / -120000-120000)Date.nowon the stop path), so all three rows ran the same code. Only a backward shift could expose a regression to a wall-clock deadline; forward or zero could only stop sooner. The surviving case still fails when the drain bound is broken (mutation:SERVER_CLOSE_DRAIN_MS = 10_000→ "host stop did not finish").tests/web/session-fork.test.tsmonotonic budgetbackward-wall(elapsed 0)forward-wallandbackward-wall-with-budget-leftalready reject that.backward-wall-with-expired-budgetkeeps the wall-clock regression guard.tests/extensions/background-terminals/manager.test.tstaskkill ladderantigravity.test.ts,session-sidebar.spec.ts,openpi-web.e2e.tscases aboveprovider-settings-page.spec.tsC07-C08 × failed/cancelled/unconfirmedsetupNeedsAttention; removing any one is caught only by its own row.provider-settings-page.spec.tsplanplanning/ready/invalidplanBlockedwould need every value.subagent-inspection.e2e.ts1280 mouse / 390 mouse / 390 touchsidebar-parity.e2e.tssearch palette Escape<dialog>closes needs a real browser; jsdom specs can't show it.sidebar-fork-depth.e2e.ts,sidebar-menu-flow.e2e.tssession-worktree.test.ts20,010-file tree (4.4 s)workflows/sandbox.test.ts6 × non-yielding watchdog (1 s each)openpi-web.e2e.tsmobile focus trap at 320/390 pxTimings
Measured locally on the same box with Node 22.19.0 and the same tree before and after. CI job durations are below.
4418140)bun run test:nodebun run test:ui:2510+ local-font PDF)background-terminals/manager.test.tsalone*
file-formats.e2e.ts:162fails identically on base and branch in this sandbox: the box's CJK font maps 文→⽂ (a Kangxi radical). It passes on CI.CI before (last three green
mainruns): Web E2E shards 295 to 376 s, Windows Node parallel 243 to 386 s, Windows isolated 138 to 177 s, Windows UI 182 to 311 s.CI on this PR: 3 consecutive full runs, all green, including every Windows job (run 38830860130, attempts 1–3).