Files
llama.cpp/tools/ui/tests/client/picker-list-scroll.svelte.test.ts
T
2026-08-10 08:38:37 +02:00

33 lines
1.1 KiB
TypeScript

// Regression test: opening a chat-form picker must not scroll the
// conversation to the top. Root cause: the list's scroll effect fired
// scrollIntoView on the initial mount, before the popover was positioned,
// so the browser scrolled every scrollable ancestor to reveal the row.
import PickerListScrollHarness from './components/PickerListScrollHarness.svelte';
import { tick } from 'svelte';
import { describe, expect, it } from 'vitest';
import { render } from 'vitest-browser-svelte';
describe('ChatFormPickerList mount scroll', () => {
it('does not scroll documentElement when the picker mounts', async () => {
const screen = render(PickerListScrollHarness);
await tick();
document.documentElement.scrollTop = document.documentElement.scrollHeight;
await tick();
const before = document.documentElement.scrollTop;
expect(before).toBeGreaterThan(0);
screen.component.openPicker();
await tick();
await new Promise((r) => setTimeout(r, 100));
await tick();
const after = document.documentElement.scrollTop;
expect(after).toBe(before);
});
});