opencode/packages/app/test-browser/motion-spring.test.ts

20 lines
703 B
TypeScript

import { expect, test } from "bun:test"
import { useSpring } from "@opencode-ai/ui/motion-spring"
import { createRoot, createSignal } from "solid-js"
test("snaps spring progress when the session changes", async () => {
const state = createRoot((dispose) => {
const [target, setTarget] = createSignal(0)
const [session, setSession] = createSignal("session-a")
const progress = useSpring(target, { visualDuration: 0.3, bounce: 0 }, session)
return { dispose, progress, setTarget, setSession }
})
await new Promise<void>(queueMicrotask)
state.setTarget(1)
expect(state.progress()).toBe(0)
state.setSession("session-b")
expect(state.progress()).toBe(1)
state.dispose()
})