test(stammbaum): cover animateView rAF tween + server 401/500 paths (#692)

Add a deterministic stubbed-rAF test for animateView's animated path (was only
covering the reduced-motion branch) and assert the server load redirects on 401
and throws on a network 500 (QA review).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Marcel
2026-05-29 19:04:22 +02:00
parent 0306023610
commit 20db3d0d8f
2 changed files with 46 additions and 0 deletions

View File

@@ -15,3 +15,28 @@ describe('animateView (reduced motion)', () => {
cancel();
});
});
describe('animateView (animated path)', () => {
const from = { x: 0, y: 0, z: 1 };
const to = { x: 100, y: 0, z: 2 };
it('tweens across frames and lands exactly on the target', () => {
const frames: { x: number }[] = [];
const callbacks: FrameRequestCallback[] = [];
vi.stubGlobal('performance', { now: () => 0 });
vi.stubGlobal('requestAnimationFrame', (cb: FrameRequestCallback) => callbacks.push(cb));
vi.stubGlobal('cancelAnimationFrame', () => {});
animateView(from, to, (v) => frames.push(v), { durationMs: 100 });
callbacks[0](50); // t = 0.5 → an interpolated frame
callbacks[callbacks.length - 1](100); // t = 1 → exact target
expect(frames.length).toBeGreaterThanOrEqual(2);
expect(frames[0].x).toBeGreaterThan(0);
expect(frames[0].x).toBeLessThan(100);
expect(frames.at(-1)).toEqual(to);
vi.unstubAllGlobals();
});
});