import "@testing-library/jest-dom"; import { vi } from "vitest"; Object.defineProperty(window, "matchMedia", { writable: true, value: vi.fn().mockImplementation((query) => ({ matches: false, media: query, onchange: null, addListener: vi.fn(), removeListener: vi.fn(), addEventListener: vi.fn(), removeEventListener: vi.fn(), dispatchEvent: vi.fn(), })), }); class ResizeObserverMock { observe = vi.fn(); unobserve = vi.fn(); disconnect = vi.fn(); } vi.stubGlobal("ResizeObserver", ResizeObserverMock); class IntersectionObserverMock { root = null; rootMargin = ""; thresholds = []; observe = vi.fn(); unobserve = vi.fn(); disconnect = vi.fn(); takeRecords = vi.fn().mockReturnValue([]); } vi.stubGlobal("IntersectionObserver", IntersectionObserverMock); class StorageMock implements Storage { private store = new Map(); get length(): number { return this.store.size; } clear(): void { this.store.clear(); } getItem(key: string): string | null { return this.store.has(key) ? (this.store.get(key) as string) : null; } setItem(key: string, value: string): void { this.store.set(String(key), String(value)); } removeItem(key: string): void { this.store.delete(key); } key(index: number): string | null { return Array.from(this.store.keys())[index] ?? null; } } vi.stubGlobal("localStorage", new StorageMock()); vi.stubGlobal("sessionStorage", new StorageMock()); Object.defineProperty(document, "fonts", { writable: true, value: { addEventListener: vi.fn(), removeEventListener: vi.fn(), }, });