import '@testing-library/jest-dom/vitest' import { beforeEach } from 'vitest' function createStorageMock(): Storage { const store = new Map() return { getItem(key: string) { return store.has(key) ? store.get(key)! : null }, setItem(key: string, value: string) { store.set(String(key), String(value)) }, removeItem(key: string) { store.delete(String(key)) }, clear() { store.clear() }, key(index: number) { return Array.from(store.keys())[index] ?? null }, get length() { return store.size } } } function ensureStorage(name: 'localStorage' | 'sessionStorage'): Storage { const current = window[name] if (current && typeof current.getItem === 'function' && typeof current.setItem === 'function') { return current } const storage = createStorageMock() Object.defineProperty(window, name, { value: storage, configurable: true }) Object.defineProperty(globalThis, name, { value: storage, configurable: true }) return storage } const localStorageMock = ensureStorage('localStorage') const sessionStorageMock = ensureStorage('sessionStorage') beforeEach(() => { localStorageMock.clear() sessionStorageMock.clear() })