Files
opencode/packages/app/test-browser/auto-scroll.test.ts
T
2026-08-14 14:37:56 +10:00

44 lines
1.1 KiB
TypeScript

import { expect, test } from "bun:test"
import { createAutoScroll } from "@opencode-ai/ui/hooks"
import { createRoot } from "solid-js"
test("restores bottom anchoring when Suspense reattaches the scroll viewport", async () => {
const main = document.createElement("main")
const surface = document.createElement("div")
const viewport = document.createElement("div")
const content = document.createElement("div")
surface.append(viewport)
viewport.append(content)
main.append(surface)
document.body.append(main)
let scrollTop = 200
Object.defineProperties(viewport, {
clientHeight: { value: 100 },
scrollHeight: { value: 300 },
scrollTop: {
get: () => scrollTop,
set: (value: number) => {
scrollTop = Math.min(value, 200)
},
},
})
const dispose = createRoot((dispose) => {
const scroll = createAutoScroll({ working: () => true })
scroll.scrollRef(viewport)
scroll.contentRef(content)
return dispose
})
surface.remove()
viewport.scrollTop = 0
main.append(surface)
await Promise.resolve()
expect(viewport.scrollTop).toBe(200)
dispose()
main.remove()
})