Radix UI and @floating-ui call requestAnimationFrame for layout/positioning on every render — Popovers, DropdownMenus, Checkboxes, etc. In jsdom those callbacks are deferred outside the current act() boundary, leaving pending state updates that keep the act() settlement loop running until Vitest's 5000ms hard timeout kills the test. Under load (full suite) there is no slack to absorb the deferral. Overriding requestAnimationFrame/cancelAnimationFrame with synchronous no-ops in the global test setup ensures every Radix UI callback completes inside the current act() cycle. This fixes the whole class of Radix-UI-induced flaky timeouts without touching individual test files. https://claude.ai/code/session_012ACmUs2vAwEF9jZu7Guos2 |
||
|---|---|---|
| .. | ||
| fixtures | ||
| setup.ts | ||