Skip to content

Commit 149383e

Browse files
authored
fix(pretty-format): Handle empty string children in React same as react-test-renderer (#14470)
1 parent 2cfb274 commit 149383e

File tree

15 files changed

+74
-146
lines changed

15 files changed

+74
-146
lines changed

CHANGELOG.md

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

55
- `[jest-environment-jsdom]` [**BREAKING**] Upgrade JSDOM to v22 ([#13825](https://github.com/jestjs/jest/pull/13825))
66
- `[@jest/test-sequencer, jest-core]` [**BREAKING**] Exposes `globalConfig` & `contexts` to `TestSequencer` ([#14535](https://github.com/jestjs/jest/pull/14535), & [#14543](https://github.com/jestjs/jest/pull/14543))
7+
- `[pretty-format]` [**BREAKING**] Do not render empty string children (`''`) in React plugin ([#14470](https://github.com/facebook/jest/pull/14470))
78

89
### Fixes
910

constraints.pro

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,10 +19,6 @@ gen_enforced_dependency(WorkspaceCwd, DependencyIdent, DependencyRange2, Depende
1919
DependencyType2 \= 'peerDependencies',
2020
% A list of exception to same version rule
2121
\+ member(DependencyIdent, [
22-
% Allow enzyme example workspace use a older version react and react-dom, because enzyme don't support react 17
23-
'react', 'react-dom', '@types/react',
24-
% Only RN should be bumped to react 18
25-
'react-test-renderer',
2622
% @types/node in the root need to stay on ~14.14.45
2723
'@types/node',
2824
% upgrading the entire repository is a breaking change

e2e/babel-plugin-jest-hoist/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
"@babel/preset-env": "^7.0.0",
44
"@babel/preset-flow": "^7.0.0",
55
"@babel/preset-typescript": "^7.0.0",
6-
"react": "17.0.2"
6+
"react": "18.2.0"
77
},
88
"jest": {
99
"automock": true,

e2e/babel-plugin-jest-hoist/yarn.lock

Lines changed: 5 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1573,13 +1573,6 @@ __metadata:
15731573
languageName: node
15741574
linkType: hard
15751575

1576-
"object-assign@npm:^4.1.1":
1577-
version: 4.1.1
1578-
resolution: "object-assign@npm:4.1.1"
1579-
checksum: fcc6e4ea8c7fe48abfbb552578b1c53e0d194086e2e6bbbf59e0a536381a292f39943c6e9628af05b5528aa5e3318bb30d6b2e53cadaf5b8fe9e12c4b69af23f
1580-
languageName: node
1581-
linkType: hard
1582-
15831576
"path-parse@npm:^1.0.7":
15841577
version: 1.0.7
15851578
resolution: "path-parse@npm:1.0.7"
@@ -1594,13 +1587,12 @@ __metadata:
15941587
languageName: node
15951588
linkType: hard
15961589

1597-
"react@npm:17.0.2":
1598-
version: 17.0.2
1599-
resolution: "react@npm:17.0.2"
1590+
"react@npm:18.2.0":
1591+
version: 18.2.0
1592+
resolution: "react@npm:18.2.0"
16001593
dependencies:
16011594
loose-envify: ^1.1.0
1602-
object-assign: ^4.1.1
1603-
checksum: b254cc17ce3011788330f7bbf383ab653c6848902d7936a87b09d835d091e3f295f7e9dd1597c6daac5dc80f90e778c8230218ba8ad599f74adcc11e33b9d61b
1595+
checksum: 88e38092da8839b830cda6feef2e8505dec8ace60579e46aa5490fc3dc9bba0bd50336507dc166f43e3afc1c42939c09fe33b25fae889d6f402721dcd78fca1b
16041596
languageName: node
16051597
linkType: hard
16061598

@@ -1694,7 +1686,7 @@ __metadata:
16941686
"@babel/preset-env": ^7.0.0
16951687
"@babel/preset-flow": ^7.0.0
16961688
"@babel/preset-typescript": ^7.0.0
1697-
react: 17.0.2
1689+
react: 18.2.0
16981690
languageName: unknown
16991691
linkType: soft
17001692

e2e/transform/multiple-transformers/package.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,8 @@
1717
"@babel/core": "^7.0.0",
1818
"@babel/preset-env": "^7.0.0",
1919
"@babel/preset-react": "^7.0.0",
20-
"react": "17.0.2",
21-
"react-dom": "^17.0.1",
22-
"react-test-renderer": "17.0.2"
20+
"react": "18.2.0",
21+
"react-dom": "18.2.0",
22+
"react-test-renderer": "18.2.0"
2323
}
2424
}

e2e/transform/multiple-transformers/yarn.lock

Lines changed: 27 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -1738,34 +1738,26 @@ __metadata:
17381738
languageName: node
17391739
linkType: hard
17401740

1741-
"react-dom@npm:^17.0.1":
1742-
version: 17.0.2
1743-
resolution: "react-dom@npm:17.0.2"
1741+
"react-dom@npm:18.2.0":
1742+
version: 18.2.0
1743+
resolution: "react-dom@npm:18.2.0"
17441744
dependencies:
17451745
loose-envify: ^1.1.0
1746-
object-assign: ^4.1.1
1747-
scheduler: ^0.20.2
1746+
scheduler: ^0.23.0
17481747
peerDependencies:
1749-
react: 17.0.2
1750-
checksum: 1c1eaa3bca7c7228d24b70932e3d7c99e70d1d04e13bb0843bbf321582bc25d7961d6b8a6978a58a598af2af496d1cedcfb1bf65f6b0960a0a8161cb8dab743c
1748+
react: ^18.2.0
1749+
checksum: 7d323310bea3a91be2965f9468d552f201b1c27891e45ddc2d6b8f717680c95a75ae0bc1e3f5cf41472446a2589a75aed4483aee8169287909fcd59ad149e8cc
17511750
languageName: node
17521751
linkType: hard
17531752

1754-
"react-is@npm:^16.12.0 || ^17.0.0 || ^18.0.0":
1753+
"react-is@npm:^16.12.0 || ^17.0.0 || ^18.0.0, react-is@npm:^18.2.0":
17551754
version: 18.2.0
17561755
resolution: "react-is@npm:18.2.0"
17571756
checksum: e72d0ba81b5922759e4aff17e0252bd29988f9642ed817f56b25a3e217e13eea8a7f2322af99a06edb779da12d5d636e9fda473d620df9a3da0df2a74141d53e
17581757
languageName: node
17591758
linkType: hard
17601759

1761-
"react-is@npm:^17.0.2":
1762-
version: 17.0.2
1763-
resolution: "react-is@npm:17.0.2"
1764-
checksum: 9d6d111d8990dc98bc5402c1266a808b0459b5d54830bbea24c12d908b536df7883f268a7868cfaedde3dd9d4e0d574db456f84d2e6df9c4526f99bb4b5344d8
1765-
languageName: node
1766-
linkType: hard
1767-
1768-
"react-shallow-renderer@npm:^16.13.1":
1760+
"react-shallow-renderer@npm:^16.15.0":
17691761
version: 16.15.0
17701762
resolution: "react-shallow-renderer@npm:16.15.0"
17711763
dependencies:
@@ -1777,27 +1769,25 @@ __metadata:
17771769
languageName: node
17781770
linkType: hard
17791771

1780-
"react-test-renderer@npm:17.0.2":
1781-
version: 17.0.2
1782-
resolution: "react-test-renderer@npm:17.0.2"
1772+
"react-test-renderer@npm:18.2.0":
1773+
version: 18.2.0
1774+
resolution: "react-test-renderer@npm:18.2.0"
17831775
dependencies:
1784-
object-assign: ^4.1.1
1785-
react-is: ^17.0.2
1786-
react-shallow-renderer: ^16.13.1
1787-
scheduler: ^0.20.2
1776+
react-is: ^18.2.0
1777+
react-shallow-renderer: ^16.15.0
1778+
scheduler: ^0.23.0
17881779
peerDependencies:
1789-
react: 17.0.2
1790-
checksum: e6b5c6ed2a0bde2c34f1ab9523ff9bc4c141a271daf730d6b852374e83acc0155d58ab71a318251e953ebfa65b8bebb9c5dce3eba1ccfcbef7cc4e1e8261c401
1780+
react: ^18.2.0
1781+
checksum: 6b6980ced93fa2b72662d5e4ab3b4896833586940047ce52ca9aca801e5432adf05fcbe28289b0af3ce6a2a7c590974e25dcc8aa43d0de658bfe8bbcd686f958
17911782
languageName: node
17921783
linkType: hard
17931784

1794-
"react@npm:17.0.2":
1795-
version: 17.0.2
1796-
resolution: "react@npm:17.0.2"
1785+
"react@npm:18.2.0":
1786+
version: 18.2.0
1787+
resolution: "react@npm:18.2.0"
17971788
dependencies:
17981789
loose-envify: ^1.1.0
1799-
object-assign: ^4.1.1
1800-
checksum: b254cc17ce3011788330f7bbf383ab653c6848902d7936a87b09d835d091e3f295f7e9dd1597c6daac5dc80f90e778c8230218ba8ad599f74adcc11e33b9d61b
1790+
checksum: 88e38092da8839b830cda6feef2e8505dec8ace60579e46aa5490fc3dc9bba0bd50336507dc166f43e3afc1c42939c09fe33b25fae889d6f402721dcd78fca1b
18011791
languageName: node
18021792
linkType: hard
18031793

@@ -1891,19 +1881,18 @@ __metadata:
18911881
"@babel/core": ^7.0.0
18921882
"@babel/preset-env": ^7.0.0
18931883
"@babel/preset-react": ^7.0.0
1894-
react: 17.0.2
1895-
react-dom: ^17.0.1
1896-
react-test-renderer: 17.0.2
1884+
react: 18.2.0
1885+
react-dom: 18.2.0
1886+
react-test-renderer: 18.2.0
18971887
languageName: unknown
18981888
linkType: soft
18991889

1900-
"scheduler@npm:^0.20.2":
1901-
version: 0.20.2
1902-
resolution: "scheduler@npm:0.20.2"
1890+
"scheduler@npm:^0.23.0":
1891+
version: 0.23.0
1892+
resolution: "scheduler@npm:0.23.0"
19031893
dependencies:
19041894
loose-envify: ^1.1.0
1905-
object-assign: ^4.1.1
1906-
checksum: c4b35cf967c8f0d3e65753252d0f260271f81a81e427241295c5a7b783abf4ea9e905f22f815ab66676f5313be0a25f47be582254db8f9241b259213e999b8fc
1895+
checksum: d79192eeaa12abef860c195ea45d37cbf2bbf5f66e3c4dcd16f54a7da53b17788a70d109ee3d3dde1a0fd50e6a8fc171f4300356c5aee4fc0171de526bf35f8a
19071896
languageName: node
19081897
linkType: hard
19091898

examples/react-testing-library/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
"name": "example-react-testing-library",
55
"dependencies": {
66
"react": "18.2.0",
7-
"react-dom": "^18.2.0"
7+
"react-dom": "18.2.0"
88
},
99
"devDependencies": {
1010
"@babel/core": "^7.11.6",

examples/react/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
"name": "example-react",
55
"dependencies": {
66
"react": "18.2.0",
7-
"react-dom": "^18.2.0"
7+
"react-dom": "18.2.0"
88
},
99
"devDependencies": {
1010
"@babel/core": "^7.11.6",

examples/snapshot/package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,15 @@
33
"version": "0.0.0",
44
"name": "example-snapshot",
55
"dependencies": {
6-
"react": "17.0.2"
6+
"react": "18.2.0"
77
},
88
"devDependencies": {
99
"@babel/core": "^7.11.6",
1010
"@babel/preset-env": "^7.1.0",
1111
"@babel/preset-react": "^7.12.1",
1212
"babel-jest": "workspace:^",
1313
"jest": "workspace:^",
14-
"react-test-renderer": "17.0.2"
14+
"react-test-renderer": "18.2.0"
1515
},
1616
"scripts": {
1717
"test": "jest"

examples/typescript/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
"name": "example-typescript",
55
"dependencies": {
66
"react": "18.2.0",
7-
"react-dom": "^18.2.0",
7+
"react-dom": "18.2.0",
88
"typescript": "^5.0.4"
99
},
1010
"devDependencies": {

packages/pretty-format/package.json

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -24,14 +24,14 @@
2424
"react-is": "^18.0.0"
2525
},
2626
"devDependencies": {
27-
"@types/react": "^17.0.3",
27+
"@types/react": "^18.2.0",
2828
"@types/react-is": "^18.0.0",
29-
"@types/react-test-renderer": "17.0.2",
29+
"@types/react-test-renderer": "^18.0.1",
3030
"immutable": "^4.0.0",
3131
"jest-util": "workspace:^",
32-
"react": "17.0.2",
33-
"react-dom": "^17.0.1",
34-
"react-test-renderer": "17.0.2"
32+
"react": "18.2.0",
33+
"react-dom": "18.2.0",
34+
"react-test-renderer": "18.2.0"
3535
},
3636
"engines": {
3737
"node": "^16.10.0 || ^18.12.0 || >=20.0.0"

packages/pretty-format/src/__tests__/react.test.tsx

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -48,10 +48,7 @@ test('supports a single element with non-empty string child', () => {
4848
});
4949

5050
test('supports a single element with empty string child', () => {
51-
assertPrintedJSX(
52-
React.createElement('Mouse', null, ''),
53-
'<Mouse>\n \n</Mouse>',
54-
);
51+
assertPrintedJSX(React.createElement('Mouse', null, ''), '<Mouse />');
5552
});
5653

5754
test('supports a single element with non-zero number child', () => {

packages/pretty-format/src/plugins/ReactElement.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ const getChildren = (arg: unknown, children: Array<unknown> = []) => {
2121
for (const item of arg) {
2222
getChildren(item, children);
2323
}
24-
} else if (arg != null && arg !== false) {
24+
} else if (arg != null && arg !== false && arg !== '') {
2525
children.push(arg);
2626
}
2727
return children;

website/package.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -39,8 +39,8 @@
3939
"@docusaurus/remark-plugin-npm2yarn": "3.0.0-beta.0",
4040
"clsx": "^2.0.0",
4141
"docusaurus-remark-plugin-tab-blocks": "^2.0.0-beta",
42-
"react": "^18.2.0",
43-
"react-dom": "^18.2.0",
42+
"react": "18.2.0",
43+
"react-dom": "18.2.0",
4444
"react-github-btn": "^1.3.0",
4545
"react-lite-youtube-embed": "^2.2.2",
4646
"react-markdown": "^8.0.0"
@@ -50,7 +50,7 @@
5050
"@crowdin/cli": "^3.5.2",
5151
"@docusaurus/module-type-aliases": "3.0.0-beta.0",
5252
"@docusaurus/tsconfig": "3.0.0-beta.0",
53-
"@types/react": "^18.2.21",
53+
"@types/react": "^18.2.0",
5454
"graphql": "^16.3.0",
5555
"graphql-request": "^6.0.0",
5656
"js-yaml": "^4.1.0",

0 commit comments

Comments
 (0)