Repository navigation
test: keep timing-sensitive browser cleanup synchronous - #345351
Merged
Dmitriy Vasyura (dmitrivMS) merged 1 commit intoOct 31, 2026
Merged
Conversation
Fix the two CI regressions from #345312 without reverting the suite-store cleanup. Dispose the pet fixture and restore its fake clock before layout observers run, and dispose the intentionally failing list before its queued rerender. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Contributor
There was a problem hiding this comment.
🟢 Approval recommended
There are no active review issues for the synchronous cleanup changes in the two browser tests.
No open issues 🎉
What changed in this PR
Restores synchronous cleanup in two timing-sensitive browser tests to address regressions from #345312, while preserving assertions and suite leak checking. No production code or dependencies change.
Changes:
- Dispose the chat pet widget and restore its fake clock in
finally, before browser callbacks can schedule fake animation frames. - Dispose the intentionally failing list and remove its DOM in
finally, preventing queued frames from rendering the throwing element again.
| File | Description |
|---|---|
src/vs/workbench/contrib/chat/test/browser/widget/chatPetWidget.test.ts |
Runs registered cleanup synchronously and explains the timing requirement. |
src/vs/base/test/browser/ui/list/listView.test.ts |
Moves list disposal and DOM removal into synchronous finally cleanup. |
Review effort: Balanced
Dmitriy Vasyura (dmitrivMS)
marked this pull request as ready for review
October 31, 2026 11:29
Dmitriy Vasyura (dmitrivMS)
enabled auto-merge (squash)
October 31, 2026 11:29
Ladislau Szomoru (lszomoru)
approved these changes
Oct 31, 2026
Dmitriy Vasyura (dmitrivMS)
deleted the
agents/ci-regression-fix-test-cleanup
branch
October 31, 2026 13:24
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.
Fixes the two CI regressions from #345312 described in the investigation, without reverting the rest of the cleanup.
finally, so its widget is disposed and fake clock restored beforeResizeObservercan queue fake animation frames between the test body and teardown. This prevents the shared DOM animation-frame scheduler from becoming stranded.finally, before a queued frame can render the throwing element again during teardown.Validation
Run on Windows with Node 24.22.1. Both reported failures reproduced on the unchanged branch before applying the fix.
Electron regression sequence: before: 2 passing, 2 animation timeouts; after: 4 passing in each of 3 runs.
Chromium regression sequence: before: 2 passing plus an
afterEachfailure,done() called multiple times ... render failed; after: 2 passing, no hook error.Full ListView suite in Chromium: 27 passing in each of 3 runs.
Additional checks:
npm run build-fast -- --client-only- passed (client transpilation).npm run eslint -- src\vs\base\test\browser\ui\list\listView.test.ts src\vs\workbench\contrib\chat\test\browser\widget\chatPetWidget.test.ts- passed.git diff --check- passed.Full CI, standalone TypeScript type checking, the full ChatPetWidget suite, and macOS/Linux runs were not run locally.