// Setup happy-dom + wrapper render pour les tests de composants Preact import { Window } from "happy-dom"; let _window: Window | null = null; /** * Initialise un environnement DOM virtuel via happy-dom. * À appeler avant de rendre des composants Preact dans les tests. */ export function setupDOM(): void { _window = new Window({ url: "http://localhost" }); // Expose les globals DOM nécessaires à Preact const globals = _window as unknown as Record; const target = globalThis as unknown as Record; for ( const key of [ "document", "navigator", "location", "HTMLElement", "HTMLInputElement", "HTMLTextAreaElement", "HTMLSelectElement", "Event", "CustomEvent", "KeyboardEvent", "MouseEvent", "InputEvent", "MutationObserver", "requestAnimationFrame", "cancelAnimationFrame", ] ) { target[key] = globals[key]; } target["window"] = _window; } /** * Nettoie l'environnement DOM. * À appeler dans un afterEach ou à la fin d'un test. */ export function cleanupDOM(): void { if (_window) { const doc = _window.document; doc.body.innerHTML = ""; doc.head.innerHTML = ""; _window.close(); _window = null; } }