setup.ts 654 B

123456789101112131415
  1. import { afterEach, beforeEach } from 'vitest'
  2. beforeEach(() => {
  3. // Node's native storage globals can shadow jsdom's browser storage.
  4. const browser = (globalThis as typeof globalThis & { jsdom?: { window: Window } }).jsdom?.window
  5. if (!browser) return
  6. for (const key of ['localStorage', 'sessionStorage'] as const)
  7. Object.defineProperty(globalThis, key, { configurable: true, writable: true, value: browser[key] })
  8. })
  9. afterEach(() => {
  10. if (typeof document !== 'undefined') document.body.innerHTML = ''
  11. if (typeof localStorage !== 'undefined') localStorage.clear()
  12. if (typeof sessionStorage !== 'undefined') sessionStorage.clear()
  13. })