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