From e4a2ab8f7208620c597b05672ce7cdbb69e6f98b Mon Sep 17 00:00:00 2001 From: Theo Browne Date: Fri, 23 Oct 2026 00:08:37 -0700 Subject: [PATCH] test(client-runtime): restore render scheduler tests deleted in the test snap --- .../src/device/renderScheduler.test.ts | 27 +++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 packages/client-runtime/src/device/renderScheduler.test.ts diff --git a/packages/client-runtime/src/device/renderScheduler.test.ts b/packages/client-runtime/src/device/renderScheduler.test.ts new file mode 100644 index 000000000000..9a3e98db7e42 --- /dev/null +++ b/packages/client-runtime/src/device/renderScheduler.test.ts @@ -0,0 +1,27 @@ +import { expect, it, vi } from "vite-plus/test"; +import { createRenderScheduler } from "./renderScheduler.ts"; + +it("coalesces frame and pointer invalidations, then stops scheduling when idle or disposed", () => { + const callbacks: FrameRequestCallback[] = []; + const request = vi.fn((callback: FrameRequestCallback) => { + callbacks.push(callback); + return callbacks.length; + }); + const cancel = vi.fn(); + const render = vi.fn(); + const scheduler = createRenderScheduler(render, request, cancel); + scheduler.invalidate(); + scheduler.invalidate(); + expect(request).toHaveBeenCalledTimes(1); + callbacks[0]?.(0); + expect(render).toHaveBeenCalledTimes(1); + expect(request).toHaveBeenCalledTimes(1); + scheduler.invalidate(); + scheduler.dispose(); + scheduler.dispose(); + scheduler.invalidate(); + callbacks[1]?.(0); + expect(cancel).toHaveBeenCalledExactlyOnceWith(2); + expect(render).toHaveBeenCalledTimes(1); + expect(request).toHaveBeenCalledTimes(2); +});