From d928967f4d3b3ec6b64b216581bf2ccbc7e04e96 Mon Sep 17 00:00:00 2001 From: LukeParkerDev <10430890+Hona@users.noreply.github.com> Date: Sun, 14 Jun 2026 21:12:14 +0200 Subject: [PATCH] test(app): cover Solid virtualizer cache updates --- packages/app/package.json | 3 ++- .../app/test-browser/solid-virtual.test.ts | 27 +++++++++++++++++++ 2 files changed, 29 insertions(+), 1 deletion(-) create mode 100644 packages/app/test-browser/solid-virtual.test.ts diff --git a/packages/app/package.json b/packages/app/package.json index e5438261b64..2387474e386 100644 --- a/packages/app/package.json +++ b/packages/app/package.json @@ -17,8 +17,9 @@ "dev": "vite", "build": "vite build", "serve": "vite preview", - "test": "bun run test:unit", + "test": "bun run test:unit && bun run test:virtualizer", "test:unit": "bun test --only-failures --preload ./happydom.ts ./src", + "test:virtualizer": "bun test --conditions=browser --preload ./happydom.ts ./test-browser/solid-virtual.test.ts", "test:unit:watch": "bun test --watch --preload ./happydom.ts ./src", "test:e2e": "playwright test", "test:e2e:local": "playwright test", diff --git a/packages/app/test-browser/solid-virtual.test.ts b/packages/app/test-browser/solid-virtual.test.ts new file mode 100644 index 00000000000..01e2e6f7495 --- /dev/null +++ b/packages/app/test-browser/solid-virtual.test.ts @@ -0,0 +1,27 @@ +import { expect, test } from "bun:test" +import { createVirtualizer } from "@tanstack/solid-virtual" +import { createRoot, createSignal } from "solid-js" + +test("reactive count updates preserve measured row sizes", () => { + createRoot((dispose) => { + const [count, setCount] = createSignal(2) + const virtualizer = createVirtualizer({ + get count() { + return count() + }, + getScrollElement: () => null, + estimateSize: () => 60, + initialRect: { width: 800, height: 600 }, + }) + + expect(virtualizer.getTotalSize()).toBe(120) + virtualizer.resizeItem(0, 100) + expect(virtualizer.getTotalSize()).toBe(160) + + setCount(3) + + expect(virtualizer.itemSizeCache.get(0)).toBe(100) + expect(virtualizer.getTotalSize()).toBe(220) + dispose() + }) +})