tests/support/control-hook-dom.ts
Rama main · réplica de lectura del repositorio original.
import { JSDOM } from "jsdom";
export function installControlHookDom() {
const dom = new JSDOM("<!doctype html><html><body></body></html>", {
url: "http://localhost",
});
const descriptors = Object.getOwnPropertyDescriptors(globalThis);
const values = {
window: dom.window,
document: dom.window.document,
navigator: dom.window.navigator,
IS_REACT_ACT_ENVIRONMENT: true,
};
for (const [key, value] of Object.entries(values))
Object.defineProperty(globalThis, key, {
configurable: true,
writable: true,
value,
});
return () => {
dom.window.close();
for (const key of Object.keys(values)) {
if (descriptors[key])
Object.defineProperty(globalThis, key, descriptors[key]);
else Reflect.deleteProperty(globalThis, key);
}
};
}