From 1fcc88574711434e41122c46327e87a1b9e11cae Mon Sep 17 00:00:00 2001 From: Ahmed Yasin Koculu Date: Sun, 22 Feb 2026 12:29:18 +0100 Subject: [PATCH] faster minidom, drop polyfills. --- tests/minidom/registerDomGlobals.ts | 24 +++-------------------- tests/setup.ts | 30 ++++++++++++++++++++++++++++- 2 files changed, 32 insertions(+), 22 deletions(-) diff --git a/tests/minidom/registerDomGlobals.ts b/tests/minidom/registerDomGlobals.ts index 0c88487..b8a28df 100644 --- a/tests/minidom/registerDomGlobals.ts +++ b/tests/minidom/registerDomGlobals.ts @@ -52,22 +52,14 @@ export function registerDomGlobals( assignGlobal(globals, 'Node', win.Node) assignGlobal(globals, 'Element', win.Element) assignGlobal(globals, 'HTMLElement', win.HTMLElement) - assignGlobal( - globals, - 'HTMLSlotElement', - (document as Document).createElement('slot').constructor, - ) + assignGlobal(globals, 'HTMLSlotElement', win.HTMLSlotElement) assignGlobal(globals, 'DocumentFragment', win.DocumentFragment) assignGlobal(globals, 'CustomEvent', win.CustomEvent) assignGlobal(globals, 'Event', win.Event) assignGlobal(globals, 'MouseEvent', win.MouseEvent) - assignGlobal(globals, 'Comment', createCommentConstructor(document)) + assignGlobal(globals, 'Comment', win.Comment) assignGlobal(globals, 'Text', win.Text) - assignGlobal( - globals, - 'HTMLTemplateElement', - (document as Document).createElement('template').constructor, - ) + assignGlobal(globals, 'HTMLTemplateElement', win.HTMLTemplateElement) const windowCss = win.CSS as { escape?: unknown } | undefined assignGlobal( @@ -107,13 +99,3 @@ export function ensureDomGlobals(): () => void { const { document, window } = parseHtml('') return registerDomGlobals(window, document) } - -function createCommentConstructor(document: unknown): typeof Comment { - const doc = document as Document - const prototype = Object.getPrototypeOf(doc.createComment('')) - const CommentShim = function Comment(this: Comment, data?: string) { - return doc.createComment(data ?? '') - } as unknown as typeof Comment - CommentShim.prototype = prototype - return CommentShim -} diff --git a/tests/setup.ts b/tests/setup.ts index 734e5d2..63c061f 100644 --- a/tests/setup.ts +++ b/tests/setup.ts @@ -1,3 +1,31 @@ +import { afterAll, afterEach, beforeEach } from 'vitest' + import { ensureDomGlobals } from './minidom/registerDomGlobals' -ensureDomGlobals() +const restoreDomGlobals = ensureDomGlobals() + +function resetDomState() { + const doc = globalThis.document as + | (Document & { head?: ParentNode | null; body?: ParentNode | null }) + | undefined + doc?.head?.replaceChildren() + doc?.body?.replaceChildren() + if ('localStorage' in globalThis) { + ;(globalThis.localStorage as Storage).clear() + } + if ('sessionStorage' in globalThis) { + ;(globalThis.sessionStorage as Storage).clear() + } +} + +beforeEach(() => { + resetDomState() +}) + +afterEach(() => { + resetDomState() +}) + +afterAll(() => { + restoreDomGlobals() +})