import '@testing-library/jest-dom/vitest'; import { cleanup } from '@testing-library/react'; import { afterEach, beforeEach, vi } from 'vitest'; /** * jsdom implementiert `matchMedia` nicht. Der Stub liefert standardmäßig * „trifft nicht zu“ für alle Media Queries – Tests, die ein bestimmtes * Systemverhalten prüfen wollen, überschreiben ihn gezielt. */ function matchMediaStubEinrichten(): void { vi.stubGlobal( 'matchMedia', vi.fn((query: string): MediaQueryList => { const liste: MediaQueryList = { matches: false, media: query, onchange: null, addEventListener: vi.fn(), removeEventListener: vi.fn(), addListener: vi.fn(), removeListener: vi.fn(), dispatchEvent: vi.fn(() => false), }; return liste; }), ); } /** * Die Setup-Datei gilt für ALLE Testdateien – auch für solche mit * `@vitest-environment node` (z. B. tests/sicherheit.test.ts). Ohne DOM * werden die Aufräumschritte deshalb übersprungen. */ const mitDom = typeof window !== 'undefined'; beforeEach(() => { if (!mitDom) { return; } matchMediaStubEinrichten(); window.localStorage.clear(); document.documentElement.removeAttribute('data-thema'); }); afterEach(() => { if (mitDom) { cleanup(); } });