Skip to content

Commit c8dde8e

Browse files
committed
Test with React 18
1 parent a09dcb5 commit c8dde8e

6 files changed

+79
-54
lines changed

package.json

+3-3
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@
8080
"@semantic-release/npm": "^7.0.5",
8181
"@storybook/addon-actions": "^6.3.4",
8282
"@storybook/react": "^6.3.4",
83-
"@testing-library/react": "^12.1.2",
83+
"@testing-library/react": "alpha",
8484
"@typescript-eslint/eslint-plugin": "^4.26.1",
8585
"astroturf": "^0.10.4",
8686
"babel-eslint": "^10.1.0",
@@ -99,8 +99,8 @@
9999
"jest": "^25.3.0",
100100
"npm-run-all": "^4.1.5",
101101
"prettier": "^2.3.1",
102-
"react": "^17.0.1",
103-
"react-dom": "^17.0.1",
102+
"react": "beta",
103+
"react-dom": "beta",
104104
"release-script": "^1.0.2",
105105
"rimraf": "^3.0.2",
106106
"rollup": "^2.6.1",

test/CSSTransition-test.js

+30-19
Original file line numberDiff line numberDiff line change
@@ -146,37 +146,48 @@ describe('CSSTransition', () => {
146146
);
147147
});
148148

149-
it('should lose the "*-appear-done" class after leaving and entering again', (done) => {
149+
it('should lose the "*-appear-done" class after leaving and entering again', async () => {
150150
const nodeRef = React.createRef();
151+
let handleEntered;
152+
let onEntered = new Promise((resolve) => {
153+
handleEntered = resolve;
154+
});
155+
let handleExited;
156+
const onExited = new Promise((resolve) => {
157+
handleExited = resolve;
158+
});
151159
const { setProps } = render(
152160
<CSSTransition
153161
timeout={10}
154162
nodeRef={nodeRef}
155163
classNames="appear-test"
156164
in={true}
157165
appear={true}
158-
onEntered={() => {
159-
setProps({
160-
in: false,
161-
onEntered: () => {},
162-
onExited: () => {
163-
expect(nodeRef.current.className).toBe('appear-test-exit-done');
164-
setProps({
165-
in: true,
166-
onEntered: () => {
167-
expect(nodeRef.current.className).toBe(
168-
'appear-test-enter-done'
169-
);
170-
done();
171-
},
172-
});
173-
},
174-
});
175-
}}
166+
onEntered={handleEntered}
176167
>
177168
<div ref={nodeRef} />
178169
</CSSTransition>
179170
);
171+
172+
await onEntered;
173+
setProps({
174+
in: false,
175+
onEntered: () => {},
176+
onExited: handleExited,
177+
});
178+
179+
await onExited;
180+
expect(nodeRef.current.className).toBe('appear-test-exit-done');
181+
onEntered = new Promise((resolve) => {
182+
handleEntered = resolve;
183+
});
184+
setProps({
185+
in: true,
186+
onEntered: handleEntered,
187+
});
188+
189+
await onEntered;
190+
expect(nodeRef.current.className).toBe('appear-test-enter-done');
180191
});
181192

182193
it('should not add undefined when appearDone is not defined', (done) => {

test/SwitchTransition-test.js

+6
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,9 @@ describe('SwitchTransition', () => {
106106
act(() => {
107107
jest.runAllTimers();
108108
});
109+
act(() => {
110+
jest.runAllTimers();
111+
});
109112
expect(log).toEqual([
110113
'exit',
111114
'exiting',
@@ -137,6 +140,9 @@ describe('SwitchTransition', () => {
137140
act(() => {
138141
jest.runAllTimers();
139142
});
143+
act(() => {
144+
jest.runAllTimers();
145+
});
140146
expect(log).toEqual([
141147
'enter',
142148
'entering',

test/Transition-test.js

+19-11
Original file line numberDiff line numberDiff line change
@@ -449,25 +449,33 @@ describe('Transition', () => {
449449
setProps({ in: true });
450450
});
451451

452-
it('should stay mounted after exiting', (done) => {
452+
it('should stay mounted after exiting', async () => {
453+
let handleEntered;
454+
const onEntered = new Promise((resolve) => {
455+
handleEntered = resolve;
456+
});
457+
let handleExited;
458+
const onExited = new Promise((resolve) => {
459+
handleExited = resolve;
460+
});
453461
const { container, setProps } = render(
454462
<MountTransition
455463
in={false}
456-
onEntered={() => {
457-
expect(container.textContent).toEqual(`status: ${ENTERED}`);
458-
459-
setProps({ in: false });
460-
}}
461-
onExited={() => {
462-
expect(container.textContent).toEqual(`status: ${EXITED}`);
463-
464-
done();
465-
}}
464+
onEntered={handleEntered}
465+
onExited={handleExited}
466466
/>
467467
);
468468

469469
expect(container.textContent).toEqual('');
470470
setProps({ in: true });
471+
472+
await onEntered;
473+
expect(container.textContent).toEqual(`status: ${ENTERED}`);
474+
475+
setProps({ in: false });
476+
477+
await onExited;
478+
expect(container.textContent).toEqual(`status: ${EXITED}`);
471479
});
472480
});
473481

test/TransitionGroup-test.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -92,14 +92,14 @@ describe('TransitionGroup', () => {
9292
act(() => {
9393
jest.runAllTimers();
9494
});
95-
expect(log).toEqual(['appear', 'appearing', 'appeared']);
95+
expect(log).toEqual(['appear', 'appear', 'appearing', 'appeared']);
9696

9797
log = [];
9898
renderStrict(<Parent count={2} />, container);
9999
act(() => {
100100
jest.runAllTimers();
101101
});
102-
expect(log).toEqual(['enter', 'entering', 'entered']);
102+
expect(log).toEqual(['enter', 'enter', 'entering', 'entered']);
103103

104104
log = [];
105105
renderStrict(<Parent count={1} />, container);

yarn.lock

+19-19
Original file line numberDiff line numberDiff line change
@@ -3503,7 +3503,7 @@
35033503
resolve-from "^5.0.0"
35043504
store2 "^2.12.0"
35053505

3506-
"@testing-library/dom@^8.0.0":
3506+
"@testing-library/dom@^8.5.0":
35073507
version "8.11.1"
35083508
resolved "https://registry.yarnpkg.com/@testing-library/dom/-/dom-8.11.1.tgz#03fa2684aa09ade589b460db46b4c7be9fc69753"
35093509
integrity sha512-3KQDyx9r0RKYailW2MiYrSSKEfH0GTkI51UGEvJenvcoDoeRYs0PZpi2SXqtnMClQvCqdtTTpOfFETDTVADpAg==
@@ -3517,13 +3517,13 @@
35173517
lz-string "^1.4.4"
35183518
pretty-format "^27.0.2"
35193519

3520-
"@testing-library/react@^12.1.2":
3521-
version "12.1.2"
3522-
resolved "https://registry.yarnpkg.com/@testing-library/react/-/react-12.1.2.tgz#f1bc9a45943461fa2a598bb4597df1ae044cfc76"
3523-
integrity sha512-ihQiEOklNyHIpo2Y8FREkyD1QAea054U0MVbwH1m8N9TxeFz+KoJ9LkqoKqJlzx2JDm56DVwaJ1r36JYxZM05g==
3520+
"@testing-library/react@alpha":
3521+
version "13.0.0-alpha.4"
3522+
resolved "https://registry.yarnpkg.com/@testing-library/react/-/react-13.0.0-alpha.4.tgz#00cf104f3a9b90d07691497abc50ade74e534d98"
3523+
integrity sha512-SY+sz4juZDcMlAaEI8kYpdi4qv+fGjvqLHETVAcL13Q+N9PFtsdmNJnVu3Ez4V1dJuR59y4vZlSJa/U69YyYBg==
35243524
dependencies:
35253525
"@babel/runtime" "^7.12.5"
3526-
"@testing-library/dom" "^8.0.0"
3526+
"@testing-library/dom" "^8.5.0"
35273527

35283528
"@tootallnate/once@1":
35293529
version "1.0.0"
@@ -14398,14 +14398,14 @@ react-docgen@^5.0.0:
1439814398
node-dir "^0.1.10"
1439914399
strip-indent "^3.0.0"
1440014400

14401-
react-dom@^17.0.1:
14402-
version "17.0.1"
14403-
resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-17.0.1.tgz#1de2560474ec9f0e334285662ede52dbc5426fc6"
14404-
integrity sha512-6eV150oJZ9U2t9svnsspTMrWNyHc6chX0KzDeAOXftRa8bNeOKTTfCJ7KorIwenkHd2xqVTBTCZd79yk/lx/Ug==
14401+
react-dom@beta:
14402+
version "18.0.0-beta-149b420f6-20211119"
14403+
resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-18.0.0-beta-149b420f6-20211119.tgz#dcf05faf52c6206db642dd50ae13a6647ee39fac"
14404+
integrity sha512-r8olPiJVDGRLHjF+LMzLBPUWSbG6OXuNInaC/kcJkDwBW8rX2gkOypGvylP5i3VqtpiPX6CHyD599aypa3wpPA==
1440514405
dependencies:
1440614406
loose-envify "^1.1.0"
1440714407
object-assign "^4.1.1"
14408-
scheduler "^0.20.1"
14408+
scheduler "0.21.0-beta-149b420f6-20211119"
1440914409

1441014410
react-draggable@^4.4.3:
1441114411
version "4.4.3"
@@ -14522,10 +14522,10 @@ react-textarea-autosize@^8.3.0:
1452214522
use-composed-ref "^1.0.0"
1452314523
use-latest "^1.0.0"
1452414524

14525-
react@^17.0.1:
14526-
version "17.0.1"
14527-
resolved "https://registry.yarnpkg.com/react/-/react-17.0.1.tgz#6e0600416bd57574e3f86d92edba3d9008726127"
14528-
integrity sha512-lG9c9UuMHdcAexXtigOZLX8exLWkW0Ku29qPRU8uhF2R9BN96dLCt0psvzPLlHc5OWkgymP3qwTRgbnw5BKx3w==
14525+
react@beta:
14526+
version "18.0.0-beta-149b420f6-20211119"
14527+
resolved "https://registry.yarnpkg.com/react/-/react-18.0.0-beta-149b420f6-20211119.tgz#4acc03dddb74a93aec83a8d6aadeb6b503061f4b"
14528+
integrity sha512-cxLRM4Yqhe5fYAeYyMEGphtDnSJmKrvrsQyXskcVViGN/EmONHbFfwt1lRUCiZyXX44+/NOgIJ1OjGX2rHmpdQ==
1452914529
dependencies:
1453014530
loose-envify "^1.1.0"
1453114531
object-assign "^4.1.1"
@@ -15301,10 +15301,10 @@ saxes@^3.1.9:
1530115301
dependencies:
1530215302
xmlchars "^2.1.1"
1530315303

15304-
scheduler@^0.20.1:
15305-
version "0.20.1"
15306-
resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.20.1.tgz#da0b907e24026b01181ecbc75efdc7f27b5a000c"
15307-
integrity sha512-LKTe+2xNJBNxu/QhHvDR14wUXHRQbVY5ZOYpOGWRzhydZUqrLb2JBvLPY7cAqFmqrWuDED0Mjk7013SZiOz6Bw==
15304+
scheduler@0.21.0-beta-149b420f6-20211119:
15305+
version "0.21.0-beta-149b420f6-20211119"
15306+
resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.21.0-beta-149b420f6-20211119.tgz#066b24dc2df762a6197c725930dcc7013de40ad2"
15307+
integrity sha512-IShAO9AhLkyiHY5wujThaUypxGHJj8IBdTTlerl040NzV/edrGeFTeTEpn4EjEhQzV0hVW9Oo58Fps3p5wtnww==
1530815308
dependencies:
1530915309
loose-envify "^1.1.0"
1531015310
object-assign "^4.1.1"

0 commit comments

Comments
 (0)