Files
hyperframes/packages/studio/src/components/editor/holdEaseSeek.test.ts
T

38 lines
1.2 KiB
TypeScript

// Real gsap, not a parseEase stub: this pins the seek behaviour of the `hold`
// ease against the engine that actually runs it, and gsap is a studio
// dependency. core's own customEase.test.ts covers the resolver in isolation.
import { installStudioCustomEase } from "@hyperframes/core/runtime/custom-ease";
import { gsap } from "gsap";
import { describe, expect, it } from "vitest";
describe("Studio hold ease", () => {
it("holds the start value under seek until the destination time", () => {
const runtimeGsap = { parseEase: gsap.parseEase.bind(gsap) };
expect(installStudioCustomEase(runtimeGsap)).toBe(true);
const hold = runtimeGsap.parseEase("hold");
expect(hold).toBeTypeOf("function");
if (typeof hold !== "function") return;
const target = { value: 0 };
const timeline = gsap.timeline({ paused: true }).to(
target,
{
value: 100,
duration: 2,
ease: hold,
},
0,
);
timeline.seek(0.5);
expect(target.value).toBe(0);
timeline.seek(1);
expect(target.value).toBe(0);
timeline.seek(1.99);
expect(target.value).toBe(0);
timeline.seek(2);
expect(target.value).toBe(100);
timeline.kill();
});
});