diff --git a/packages/vitest/src/integrations/env/jsdom.ts b/packages/vitest/src/integrations/env/jsdom.ts index e9a68ffd0937..ef6ed33d6428 100644 --- a/packages/vitest/src/integrations/env/jsdom.ts +++ b/packages/vitest/src/integrations/env/jsdom.ts @@ -249,6 +249,10 @@ function createCompatRequest(utils: CompatUtils) { super(...args) } } + + static [Symbol.hasInstance](instance: unknown): boolean { + return instance instanceof NodeRequest_ + } } } @@ -261,6 +265,10 @@ function createJSDOMCompatURL(utils: CompatUtils): typeof URL { } return NodeURL.createObjectURL(blob) } + + static [Symbol.hasInstance](instance: unknown): boolean { + return instance instanceof NodeURL + } } as typeof URL } diff --git a/test/core/test/environments/jsdom.spec.ts b/test/core/test/environments/jsdom.spec.ts index 158aac3c1eab..b4327bc775c5 100644 --- a/test/core/test/environments/jsdom.spec.ts +++ b/test/core/test/environments/jsdom.spec.ts @@ -38,6 +38,9 @@ test('Fetch API accepts other APIs', async () => { const searchParams = new URLSearchParams() searchParams.set('key', 'value') expect.soft(() => new Request('http://localhost', { method: 'POST', body: searchParams })).not.toThrowError() + + const clone = request.clone() + expect.soft(clone).toBeInstanceOf(Request) }) test('fetch api doesnt override the init object', () => {