diff --git a/packages/vitest/src/integrations/env/utils.ts b/packages/vitest/src/integrations/env/utils.ts index 1b1a08de1a2a..230f1f2bbd55 100644 --- a/packages/vitest/src/integrations/env/utils.ts +++ b/packages/vitest/src/integrations/env/utils.ts @@ -72,6 +72,15 @@ export function populateGlobal(global: any, win: any, options: PopulateOptions = if (global.global) global.global = global + // rewrite defaultView to reference the same global context + if (global.document && global.document.defaultView) { + Object.defineProperty(global.document, 'defaultView', { + get: () => global, + enumerable: true, + configurable: true, + }) + } + skipKeys.forEach(k => keys.add(k)) return { diff --git a/test/core/test/dom.test.ts b/test/core/test/dom.test.ts index 261cf1d5cf92..27fcd7b977fa 100644 --- a/test/core/test/dom.test.ts +++ b/test/core/test/dom.test.ts @@ -130,10 +130,15 @@ it('can call global functions without window works as expected', async () => { }) it('globals are the same', () => { + expect(window).toBe(globalThis) + expect(window).toBe(global) expect(window.globalThis).toBe(globalThis) expect(window.Blob).toBe(globalThis.Blob) expect(window.globalThis.Blob).toBe(globalThis.Blob) expect(Blob).toBe(globalThis.Blob) + expect(document.defaultView).toBe(window) + const el = document.createElement('div') + expect(el.ownerDocument.defaultView).toBe(globalThis) }) it('can extend global class', () => { diff --git a/test/core/test/happy-dom.test.ts b/test/core/test/happy-dom.test.ts index 5dbb079a6fda..516ea02ebdd5 100644 --- a/test/core/test/happy-dom.test.ts +++ b/test/core/test/happy-dom.test.ts @@ -102,8 +102,14 @@ it('can call global functions without window works as expected', async () => { }) it('globals are the same', () => { + expect(window).toBe(globalThis) + expect(window).toBe(global) expect(window.globalThis).toBe(globalThis) expect(window.Blob).toBe(globalThis.Blob) expect(window.globalThis.Blob).toBe(globalThis.Blob) expect(Blob).toBe(globalThis.Blob) + expect(document.defaultView).toBe(window) + expect(document.defaultView).toBe(globalThis) + const el = document.createElement('div') + expect(el.ownerDocument.defaultView).toBe(globalThis) })