import "@testing-library/jest-dom/vitest"; import { cleanup } from "@testing-library/react"; import { afterEach, vi } from "vitest"; afterEach(() => { cleanup(); }); function localStorageIsUsable(): boolean { try { const probe = "__vitest_ls_probe__"; globalThis.localStorage.setItem(probe, "1"); const ok = globalThis.localStorage.getItem(probe) === "1"; globalThis.localStorage.removeItem(probe); return ok; } catch { return false; } } // Node 25+ / some harnesses lack a stable localStorage — provide an in-memory mock when needed. if (!localStorageIsUsable()) { const store = new Map(); vi.stubGlobal("localStorage", { getItem: (key: string) => store.get(key) ?? null, setItem: (key: string, value: string) => { store.set(key, String(value)); }, removeItem: (key: string) => { store.delete(key); }, clear: () => { store.clear(); }, get length() { return store.size; }, key: (index: number) => [...store.keys()][index] ?? null, }); } Object.defineProperty(window, "matchMedia", { writable: true, value: (query: string) => ({ matches: false, media: query, onchange: null, addListener: () => {}, removeListener: () => {}, addEventListener: () => {}, removeEventListener: () => {}, dispatchEvent: () => false, }), }); class ResizeObserverMock { observe() {} unobserve() {} disconnect() {} } window.ResizeObserver = ResizeObserverMock;