// jest-dom adds custom jest matchers for asserting on DOM nodes. // allows you to do things like: // expect(element).toHaveTextContent(/react/i) // learn more: https://github.com/testing-library/jest-dom import "@testing-library/jest-dom"; if (typeof globalThis.ResizeObserver === "undefined") { class ResizeObserver { observe() {} unobserve() {} disconnect() {} } globalThis.ResizeObserver = ResizeObserver; } const hasStorageShape = (value: unknown): value is Storage => { if (!value || typeof value !== "object") return false; const storage = value as Partial; return ( typeof storage.getItem === "function" && typeof storage.setItem === "function" && typeof storage.removeItem === "function" && typeof storage.clear === "function" && typeof storage.key === "function" ); }; if (!hasStorageShape(globalThis.localStorage)) { const store = new Map(); const storage: Storage = { get length() { return store.size; }, clear() { store.clear(); }, getItem(key: string) { const value = store.get(key); return value ?? null; }, key(index: number) { return Array.from(store.keys())[index] ?? null; }, removeItem(key: string) { store.delete(key); }, setItem(key: string, value: string) { store.set(key, value); }, }; Object.defineProperty(globalThis, "localStorage", { configurable: true, writable: true, value: storage, }); }