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
{{ message }}
Repository navigation
webview coverage leg can exit 1 with every test passing (vitest worker teardown race with a pending user console log) #2352
Observed twice in CI and three times locally. In both CI cases the suite passed in full and the leg still exited 1.
PR feat(experiments): make chat-diff the default approval path (L2, #1375) #1384, job/check-run 128576671104 (163,700 B of log): 188 test files and 2,498 tests all passed with zero FAIL lines, exit 1 on EnvironmentTeardownError: [vitest-worker]: Closing rpc while onUserConsoleLog was pending inside @roo-code/vscode-webview:test:coverage. The Windows leg then went cancelled by fail-fast with the annotation The strategy configuration was canceled because "unit-test.ubuntu-latest_ubuntu-late" failed. The leg was green on the previous head of the same branch, and the PR changes webview-ui only.
The pending console output in the #1384 log is four Uncaught [Error: ...] blocks from webview-ui/src/__tests__/ErrorBoundary*.spec - pre-existing on main, not code either PR touched. The sequence looks like: a test logs through the worker RPC late, teardown closes the RPC while that flush is still pending, vitest reports an unhandled rejection, and the process exits non-zero with a green suite.
Why this needs a decision rather than a re-run: a required context that can go red with a green suite makes the merge gate depend on a race, and re-triggering only re-rolls the dice. Locally it is not deterministic (1 run in 3), so the fair bar for reproducing it is that the suite passed. Visible options: make the ErrorBoundary specs assert or swallow their expected errors so nothing reaches the worker RPC after teardown, or drain pending user-console logs before the coverage project closes the RPC. Nothing has been changed for this; filing so the re-run requests have a permanent reference.
Activity