@@ -15,6 +15,8 @@ let ReactDOMClient;
15
15
let Scheduler ;
16
16
let act ;
17
17
let container ;
18
+ let waitForAll ;
19
+ let assertLog ;
18
20
19
21
describe ( 'ReactSuspenseEffectsSemanticsDOM' , ( ) => {
20
22
beforeEach ( ( ) => {
@@ -26,6 +28,10 @@ describe('ReactSuspenseEffectsSemanticsDOM', () => {
26
28
Scheduler = require ( 'scheduler' ) ;
27
29
act = require ( 'jest-react' ) . act ;
28
30
31
+ const InternalTestUtils = require ( 'internal-test-utils' ) ;
32
+ waitForAll = InternalTestUtils . waitForAll ;
33
+ assertLog = InternalTestUtils . assertLog ;
34
+
29
35
container = document . createElement ( 'div' ) ;
30
36
document . body . appendChild ( container ) ;
31
37
} ) ;
@@ -139,23 +145,23 @@ describe('ReactSuspenseEffectsSemanticsDOM', () => {
139
145
act ( ( ) => {
140
146
root . render ( < Parent swap = { false } /> ) ;
141
147
} ) ;
142
- expect ( Scheduler ) . toHaveYielded ( [ 'Loading...' ] ) ;
148
+ assertLog ( [ 'Loading...' ] ) ;
143
149
144
150
await LazyChildA ;
145
- expect ( Scheduler ) . toFlushAndYield ( [ 'A' , 'Ref mount: A' ] ) ;
151
+ await waitForAll ( [ 'A' , 'Ref mount: A' ] ) ;
146
152
expect ( container . innerHTML ) . toBe ( '<span>A</span>' ) ;
147
153
148
154
// Swap the position of A and B
149
155
ReactDOM . flushSync ( ( ) => {
150
156
root . render ( < Parent swap = { true } /> ) ;
151
157
} ) ;
152
- expect ( Scheduler ) . toHaveYielded ( [ 'Loading...' , 'Ref unmount: A' ] ) ;
158
+ assertLog ( [ 'Loading...' , 'Ref unmount: A' ] ) ;
153
159
expect ( container . innerHTML ) . toBe (
154
160
'<span style="display: none;">A</span>Loading...' ,
155
161
) ;
156
162
157
163
await LazyChildB ;
158
- expect ( Scheduler ) . toFlushAndYield ( [ 'B' , 'Ref mount: B' ] ) ;
164
+ await waitForAll ( [ 'B' , 'Ref mount: B' ] ) ;
159
165
expect ( container . innerHTML ) . toBe ( '<span>B</span>' ) ;
160
166
} ) ;
161
167
@@ -199,21 +205,21 @@ describe('ReactSuspenseEffectsSemanticsDOM', () => {
199
205
act ( ( ) => {
200
206
root . render ( < Parent swap = { false } /> ) ;
201
207
} ) ;
202
- expect ( Scheduler ) . toHaveYielded ( [ 'Loading...' ] ) ;
208
+ assertLog ( [ 'Loading...' ] ) ;
203
209
204
210
await LazyChildA ;
205
- expect ( Scheduler ) . toFlushAndYield ( [ 'A' , 'Did mount: A' ] ) ;
211
+ await waitForAll ( [ 'A' , 'Did mount: A' ] ) ;
206
212
expect ( container . innerHTML ) . toBe ( 'A' ) ;
207
213
208
214
// Swap the position of A and B
209
215
ReactDOM . flushSync ( ( ) => {
210
216
root . render ( < Parent swap = { true } /> ) ;
211
217
} ) ;
212
- expect ( Scheduler ) . toHaveYielded ( [ 'Loading...' , 'Will unmount: A' ] ) ;
218
+ assertLog ( [ 'Loading...' , 'Will unmount: A' ] ) ;
213
219
expect ( container . innerHTML ) . toBe ( 'Loading...' ) ;
214
220
215
221
await LazyChildB ;
216
- expect ( Scheduler ) . toFlushAndYield ( [ 'B' , 'Did mount: B' ] ) ;
222
+ await waitForAll ( [ 'B' , 'Did mount: B' ] ) ;
217
223
expect ( container . innerHTML ) . toBe ( 'B' ) ;
218
224
} ) ;
219
225
@@ -251,24 +257,24 @@ describe('ReactSuspenseEffectsSemanticsDOM', () => {
251
257
act ( ( ) => {
252
258
root . render ( < Parent swap = { false } /> ) ;
253
259
} ) ;
254
- expect ( Scheduler ) . toHaveYielded ( [ 'Loading...' ] ) ;
260
+ assertLog ( [ 'Loading...' ] ) ;
255
261
256
262
await LazyChildA ;
257
- expect ( Scheduler ) . toFlushAndYield ( [ 'A' , 'Did mount: A' ] ) ;
263
+ await waitForAll ( [ 'A' , 'Did mount: A' ] ) ;
258
264
expect ( container . innerHTML ) . toBe ( 'A' ) ;
259
265
260
266
// Swap the position of A and B
261
267
ReactDOM . flushSync ( ( ) => {
262
268
root . render ( < Parent swap = { true } /> ) ;
263
269
} ) ;
264
- expect ( Scheduler ) . toHaveYielded ( [ 'Loading...' , 'Will unmount: A' ] ) ;
270
+ assertLog ( [ 'Loading...' , 'Will unmount: A' ] ) ;
265
271
expect ( container . innerHTML ) . toBe ( 'Loading...' ) ;
266
272
267
273
// Destroy the whole tree, including the hidden A
268
274
ReactDOM . flushSync ( ( ) => {
269
275
root . render ( < h1 > Hello</ h1 > ) ;
270
276
} ) ;
271
- expect ( Scheduler ) . toFlushAndYield ( [ ] ) ;
277
+ await waitForAll ( [ ] ) ;
272
278
expect ( container . innerHTML ) . toBe ( '<h1>Hello</h1>' ) ;
273
279
} ) ;
274
280
@@ -318,17 +324,17 @@ describe('ReactSuspenseEffectsSemanticsDOM', () => {
318
324
act ( ( ) => {
319
325
root . render ( < Parent swap = { false } /> ) ;
320
326
} ) ;
321
- expect ( Scheduler ) . toHaveYielded ( [ 'Loading...' ] ) ;
327
+ assertLog ( [ 'Loading...' ] ) ;
322
328
323
329
await LazyChildA ;
324
- expect ( Scheduler ) . toFlushAndYield ( [ 'A' , 'Ref mount: A' ] ) ;
330
+ await waitForAll ( [ 'A' , 'Ref mount: A' ] ) ;
325
331
expect ( container . innerHTML ) . toBe ( '<span>A</span>' ) ;
326
332
327
333
// Swap the position of A and B
328
334
ReactDOM . flushSync ( ( ) => {
329
335
root . render ( < Parent swap = { true } /> ) ;
330
336
} ) ;
331
- expect ( Scheduler ) . toHaveYielded ( [ 'Loading...' , 'Ref unmount: A' ] ) ;
337
+ assertLog ( [ 'Loading...' , 'Ref unmount: A' ] ) ;
332
338
expect ( container . innerHTML ) . toBe (
333
339
'<span style="display: none;">A</span>Loading...' ,
334
340
) ;
@@ -337,7 +343,7 @@ describe('ReactSuspenseEffectsSemanticsDOM', () => {
337
343
ReactDOM . flushSync ( ( ) => {
338
344
root . render ( < h1 > Hello</ h1 > ) ;
339
345
} ) ;
340
- expect ( Scheduler ) . toFlushAndYield ( [ ] ) ;
346
+ await waitForAll ( [ ] ) ;
341
347
expect ( container . innerHTML ) . toBe ( '<h1>Hello</h1>' ) ;
342
348
} ) ;
343
349
@@ -381,24 +387,24 @@ describe('ReactSuspenseEffectsSemanticsDOM', () => {
381
387
act ( ( ) => {
382
388
root . render ( < Parent swap = { false } /> ) ;
383
389
} ) ;
384
- expect ( Scheduler ) . toHaveYielded ( [ 'Loading...' ] ) ;
390
+ assertLog ( [ 'Loading...' ] ) ;
385
391
386
392
await LazyChildA ;
387
- expect ( Scheduler ) . toFlushAndYield ( [ 'A' , 'Did mount: A' ] ) ;
393
+ await waitForAll ( [ 'A' , 'Did mount: A' ] ) ;
388
394
expect ( container . innerHTML ) . toBe ( 'A' ) ;
389
395
390
396
// Swap the position of A and B
391
397
ReactDOM . flushSync ( ( ) => {
392
398
root . render ( < Parent swap = { true } /> ) ;
393
399
} ) ;
394
- expect ( Scheduler ) . toHaveYielded ( [ 'Loading...' , 'Will unmount: A' ] ) ;
400
+ assertLog ( [ 'Loading...' , 'Will unmount: A' ] ) ;
395
401
expect ( container . innerHTML ) . toBe ( 'Loading...' ) ;
396
402
397
403
// Destroy the whole tree, including the hidden A
398
404
ReactDOM . flushSync ( ( ) => {
399
405
root . render ( < h1 > Hello</ h1 > ) ;
400
406
} ) ;
401
- expect ( Scheduler ) . toFlushAndYield ( [ ] ) ;
407
+ await waitForAll ( [ ] ) ;
402
408
expect ( container . innerHTML ) . toBe ( '<h1>Hello</h1>' ) ;
403
409
} ) ;
404
410
@@ -432,12 +438,12 @@ describe('ReactSuspenseEffectsSemanticsDOM', () => {
432
438
433
439
// Initial render
434
440
ReactDOM . render ( < App showMore = { false } /> , container ) ;
435
- expect ( Scheduler ) . toHaveYielded ( [ 'Child' , 'Mount' ] ) ;
441
+ assertLog ( [ 'Child' , 'Mount' ] ) ;
436
442
437
443
// Update that suspends, causing the existing tree to switches it to
438
444
// a fallback.
439
445
ReactDOM . render ( < App showMore = { true } /> , container ) ;
440
- expect ( Scheduler ) . toHaveYielded ( [
446
+ assertLog ( [
441
447
'Child' ,
442
448
'Loading...' ,
443
449
@@ -448,6 +454,6 @@ describe('ReactSuspenseEffectsSemanticsDOM', () => {
448
454
449
455
// Delete the tree and unmount the effect
450
456
ReactDOM . render ( null , container ) ;
451
- expect ( Scheduler ) . toHaveYielded ( [ 'Unmount' ] ) ;
457
+ assertLog ( [ 'Unmount' ] ) ;
452
458
} ) ;
453
459
} ) ;
0 commit comments