Skip to content

Commit 73de40d

Browse files
authored
feat: upgrade to jsdom@20 (jestjs#13037)
1 parent 16d7cac commit 73de40d

File tree

11 files changed

+62
-85
lines changed

11 files changed

+62
-85
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
### Features
44

55
- `[jest-config]` [**BREAKING**] Make `snapshotFormat` default to `escapeString: false` and `printBasicPrototype: false` ([#13036](https://github.com/facebook/jest/pull/13036))
6+
- `[jest-environment-jsdom]` [**BREAKING**] Upgrade to `jsdom@20` ([#13037](https://github.com/facebook/jest/pull/13037))
67

78
### Fixes
89

docs/UpgradingToJest29.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,3 +27,7 @@ If you want to keep the old behavior, you can set the `snapshotFormat` property
2727
+ printBasicPrototype: true
2828
+ }
2929
```
30+
31+
## JSDOM upgrade
32+
33+
`jest-environment-jsdom` has upgraded `jsdom` from v19 to v20. Due to issues with `@types/jsdom`, if you extend this environment, you might run into type errors. See https://github.com/DefinitelyTyped/DefinitelyTyped/discussions/60999#discussioncomment-3158685.

packages/expect/tsconfig.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
{
22
"extends": "../../tsconfig.json",
33
"compilerOptions": {
4+
"lib": ["es2020", "dom"],
45
"rootDir": "src",
56
"outDir": "build"
67
},

packages/jest-environment-jsdom/package.json

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,11 +20,10 @@
2020
"@jest/environment": "^28.1.3",
2121
"@jest/fake-timers": "^28.1.3",
2222
"@jest/types": "^28.1.3",
23-
"@types/jsdom": "^16.2.4",
2423
"@types/node": "*",
2524
"jest-mock": "^28.1.3",
2625
"jest-util": "^28.1.3",
27-
"jsdom": "^19.0.0"
26+
"jsdom": "^20.0.0"
2827
},
2928
"devDependencies": {
3029
"@jest/test-utils": "^28.1.3"

packages/jest-environment-jsdom/src/index.ts

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,10 @@
55
* LICENSE file in the root directory of this source tree.
66
*/
77

8+
/// <reference lib="dom" />
9+
810
import type {Context} from 'vm';
11+
// @ts-expect-error: TODO: we're missing v20 types
912
import {JSDOM, ResourceLoader, VirtualConsole} from 'jsdom';
1013
import type {
1114
EnvironmentContext,
@@ -27,7 +30,8 @@ type Win = Window &
2730
};
2831

2932
export default class JSDOMEnvironment implements JestEnvironment<number> {
30-
dom: JSDOM | null;
33+
// TODO: make non-privat when we have `@types/jsdom` again
34+
private dom: JSDOM | null;
3135
fakeTimers: LegacyFakeTimers<number> | null;
3236
fakeTimersModern: ModernFakeTimers | null;
3337
global: Win;
@@ -40,6 +44,7 @@ export default class JSDOMEnvironment implements JestEnvironment<number> {
4044

4145
const virtualConsole = new VirtualConsole();
4246
virtualConsole.sendTo(context.console, {omitJSDOMErrors: true});
47+
// @ts-expect-error: TODO: we're missing v20 types
4348
virtualConsole.on('jsdomError', error => {
4449
context.console.error(error);
4550
});

packages/jest-fake-timers/tsconfig.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
{
22
"extends": "../../tsconfig.json",
33
"compilerOptions": {
4+
"lib": ["es2020", "dom"],
45
"rootDir": "src",
56
"outDir": "build"
67
},

packages/jest-matcher-utils/tsconfig.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
{
22
"extends": "../../tsconfig.json",
33
"compilerOptions": {
4+
"lib": ["es2020", "dom"],
45
"rootDir": "src",
56
"outDir": "build"
67
},

packages/jest-runtime/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
"@jest/test-result": "^28.1.3",
2525
"@jest/transform": "^28.1.3",
2626
"@jest/types": "^28.1.3",
27+
"@types/node": "*",
2728
"chalk": "^4.0.0",
2829
"cjs-module-lexer": "^1.0.0",
2930
"collect-v8-coverage": "^1.0.0",
@@ -43,7 +44,6 @@
4344
"@jest/test-utils": "^28.1.3",
4445
"@types/glob": "^7.1.1",
4546
"@types/graceful-fs": "^4.1.3",
46-
"@types/node": "*",
4747
"jest-environment-node": "^28.1.3"
4848
},
4949
"engines": {

packages/pretty-format/src/__tests__/DOMCollection.test.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -126,7 +126,7 @@ describe('DOMCollection plugin for list items', () => {
126126
});
127127

128128
const expectedHTMLFormControlsCollection = [
129-
'HTMLCollection [',
129+
'HTMLFormControlsCollection [',
130130
' <select>',
131131
' <option',
132132
' value="1"',

packages/pretty-format/tsconfig.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
{
22
"extends": "../../tsconfig.json",
33
"compilerOptions": {
4+
"lib": ["es2020", "dom"],
45
"rootDir": "src",
56
"outDir": "build"
67
},

0 commit comments

Comments
 (0)