import { describe, expect, it, vi } from 'vitest'; import { motionDelay, prefersReducedMotion } from '@/lib/motion'; /** * Доступность: при `prefers-reduced-motion: reduce` анимации мгновенные, * поэтому и задержка удаления узлов из DOM должна быть нулевой. */ describe('prefers-reduced-motion', () => { it('без поддержки matchMedia считает, что анимации разрешены', () => { vi.stubGlobal('matchMedia', undefined); expect(prefersReducedMotion()).toBe(false); expect(motionDelay(140)).toBe(140); }); it('при reduce анимации не ждут', () => { vi.stubGlobal( 'matchMedia', vi.fn(() => ({ matches: true })), ); expect(prefersReducedMotion()).toBe(true); expect(motionDelay(140)).toBe(0); }); it('при обычных настройках возвращает исходную задержку', () => { vi.stubGlobal( 'matchMedia', vi.fn(() => ({ matches: false })), ); expect(prefersReducedMotion()).toBe(false); expect(motionDelay(140)).toBe(140); }); });