Skip to content

Commit 567d20b

Browse files
authoredFeb 8, 2024
feat(vitest): expose jsdom global if jsdom environment is enabled (#5155)
1 parent 219d763 commit 567d20b

File tree

2 files changed

+8
-0
lines changed

2 files changed

+8
-0
lines changed
 

‎docs/config/index.md

+4
Original file line numberDiff line numberDiff line change
@@ -511,6 +511,10 @@ export default <Environment>{
511511

512512
Vitest also exposes `builtinEnvironments` through `vitest/environments` entry, in case you just want to extend it. You can read more about extending environments in [our guide](/guide/environment).
513513

514+
::: tip
515+
Since Vitest 1.3.0 jsdom environment exposes `jsdom` global variable equal to the current [JSDOM](https://github.com/jsdom/jsdom) instance.
516+
:::
517+
514518
### environmentOptions
515519

516520
- **Type:** `Record<'jsdom' | string, unknown>`

‎packages/vitest/src/integrations/env/jsdom.ts

+4
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,7 @@ export default <Environment>({
6767

6868
// TODO: browser doesn't expose Buffer, but a lot of dependencies use it
6969
dom.window.Buffer = Buffer
70+
dom.window.jsdom = dom
7071

7172
// inject web globals if they missing in JSDOM but otherwise available in Nodejs
7273
// https://nodejs.org/dist/latest/docs/api/globals.html
@@ -141,10 +142,13 @@ export default <Environment>({
141142

142143
const clearWindowErrors = catchWindowErrors(global)
143144

145+
global.jsdom = dom
146+
144147
return {
145148
teardown(global) {
146149
clearWindowErrors()
147150
dom.window.close()
151+
delete global.jsdom
148152
keys.forEach(key => delete global[key])
149153
originals.forEach((v, k) => global[k] = v)
150154
},

0 commit comments

Comments
 (0)
Please sign in to comment.