@@ -15,6 +15,8 @@ let ReactDOMClient;
1515let Scheduler ;
1616let act ;
1717let container ;
18+ let waitForAll ;
19+ let assertLog ;
1820
1921describe ( 'ReactSuspenseEffectsSemanticsDOM' , ( ) => {
2022 beforeEach ( ( ) => {
@@ -26,6 +28,10 @@ describe('ReactSuspenseEffectsSemanticsDOM', () => {
2628 Scheduler = require ( 'scheduler' ) ;
2729 act = require ( 'jest-react' ) . act ;
2830
31+ const InternalTestUtils = require ( 'internal-test-utils' ) ;
32+ waitForAll = InternalTestUtils . waitForAll ;
33+ assertLog = InternalTestUtils . assertLog ;
34+
2935 container = document . createElement ( 'div' ) ;
3036 document . body . appendChild ( container ) ;
3137 } ) ;
@@ -139,23 +145,23 @@ describe('ReactSuspenseEffectsSemanticsDOM', () => {
139145 act ( ( ) => {
140146 root . render ( < Parent swap = { false } /> ) ;
141147 } ) ;
142- expect ( Scheduler ) . toHaveYielded ( [ 'Loading...' ] ) ;
148+ assertLog ( [ 'Loading...' ] ) ;
143149
144150 await LazyChildA ;
145- expect ( Scheduler ) . toFlushAndYield ( [ 'A' , 'Ref mount: A' ] ) ;
151+ await waitForAll ( [ 'A' , 'Ref mount: A' ] ) ;
146152 expect ( container . innerHTML ) . toBe ( '<span>A</span>' ) ;
147153
148154 // Swap the position of A and B
149155 ReactDOM . flushSync ( ( ) => {
150156 root . render ( < Parent swap = { true } /> ) ;
151157 } ) ;
152- expect ( Scheduler ) . toHaveYielded ( [ 'Loading...' , 'Ref unmount: A' ] ) ;
158+ assertLog ( [ 'Loading...' , 'Ref unmount: A' ] ) ;
153159 expect ( container . innerHTML ) . toBe (
154160 '<span style="display: none;">A</span>Loading...' ,
155161 ) ;
156162
157163 await LazyChildB ;
158- expect ( Scheduler ) . toFlushAndYield ( [ 'B' , 'Ref mount: B' ] ) ;
164+ await waitForAll ( [ 'B' , 'Ref mount: B' ] ) ;
159165 expect ( container . innerHTML ) . toBe ( '<span>B</span>' ) ;
160166 } ) ;
161167
@@ -199,21 +205,21 @@ describe('ReactSuspenseEffectsSemanticsDOM', () => {
199205 act ( ( ) => {
200206 root . render ( < Parent swap = { false } /> ) ;
201207 } ) ;
202- expect ( Scheduler ) . toHaveYielded ( [ 'Loading...' ] ) ;
208+ assertLog ( [ 'Loading...' ] ) ;
203209
204210 await LazyChildA ;
205- expect ( Scheduler ) . toFlushAndYield ( [ 'A' , 'Did mount: A' ] ) ;
211+ await waitForAll ( [ 'A' , 'Did mount: A' ] ) ;
206212 expect ( container . innerHTML ) . toBe ( 'A' ) ;
207213
208214 // Swap the position of A and B
209215 ReactDOM . flushSync ( ( ) => {
210216 root . render ( < Parent swap = { true } /> ) ;
211217 } ) ;
212- expect ( Scheduler ) . toHaveYielded ( [ 'Loading...' , 'Will unmount: A' ] ) ;
218+ assertLog ( [ 'Loading...' , 'Will unmount: A' ] ) ;
213219 expect ( container . innerHTML ) . toBe ( 'Loading...' ) ;
214220
215221 await LazyChildB ;
216- expect ( Scheduler ) . toFlushAndYield ( [ 'B' , 'Did mount: B' ] ) ;
222+ await waitForAll ( [ 'B' , 'Did mount: B' ] ) ;
217223 expect ( container . innerHTML ) . toBe ( 'B' ) ;
218224 } ) ;
219225
@@ -251,24 +257,24 @@ describe('ReactSuspenseEffectsSemanticsDOM', () => {
251257 act ( ( ) => {
252258 root . render ( < Parent swap = { false } /> ) ;
253259 } ) ;
254- expect ( Scheduler ) . toHaveYielded ( [ 'Loading...' ] ) ;
260+ assertLog ( [ 'Loading...' ] ) ;
255261
256262 await LazyChildA ;
257- expect ( Scheduler ) . toFlushAndYield ( [ 'A' , 'Did mount: A' ] ) ;
263+ await waitForAll ( [ 'A' , 'Did mount: A' ] ) ;
258264 expect ( container . innerHTML ) . toBe ( 'A' ) ;
259265
260266 // Swap the position of A and B
261267 ReactDOM . flushSync ( ( ) => {
262268 root . render ( < Parent swap = { true } /> ) ;
263269 } ) ;
264- expect ( Scheduler ) . toHaveYielded ( [ 'Loading...' , 'Will unmount: A' ] ) ;
270+ assertLog ( [ 'Loading...' , 'Will unmount: A' ] ) ;
265271 expect ( container . innerHTML ) . toBe ( 'Loading...' ) ;
266272
267273 // Destroy the whole tree, including the hidden A
268274 ReactDOM . flushSync ( ( ) => {
269275 root . render ( < h1 > Hello</ h1 > ) ;
270276 } ) ;
271- expect ( Scheduler ) . toFlushAndYield ( [ ] ) ;
277+ await waitForAll ( [ ] ) ;
272278 expect ( container . innerHTML ) . toBe ( '<h1>Hello</h1>' ) ;
273279 } ) ;
274280
@@ -318,17 +324,17 @@ describe('ReactSuspenseEffectsSemanticsDOM', () => {
318324 act ( ( ) => {
319325 root . render ( < Parent swap = { false } /> ) ;
320326 } ) ;
321- expect ( Scheduler ) . toHaveYielded ( [ 'Loading...' ] ) ;
327+ assertLog ( [ 'Loading...' ] ) ;
322328
323329 await LazyChildA ;
324- expect ( Scheduler ) . toFlushAndYield ( [ 'A' , 'Ref mount: A' ] ) ;
330+ await waitForAll ( [ 'A' , 'Ref mount: A' ] ) ;
325331 expect ( container . innerHTML ) . toBe ( '<span>A</span>' ) ;
326332
327333 // Swap the position of A and B
328334 ReactDOM . flushSync ( ( ) => {
329335 root . render ( < Parent swap = { true } /> ) ;
330336 } ) ;
331- expect ( Scheduler ) . toHaveYielded ( [ 'Loading...' , 'Ref unmount: A' ] ) ;
337+ assertLog ( [ 'Loading...' , 'Ref unmount: A' ] ) ;
332338 expect ( container . innerHTML ) . toBe (
333339 '<span style="display: none;">A</span>Loading...' ,
334340 ) ;
@@ -337,7 +343,7 @@ describe('ReactSuspenseEffectsSemanticsDOM', () => {
337343 ReactDOM . flushSync ( ( ) => {
338344 root . render ( < h1 > Hello</ h1 > ) ;
339345 } ) ;
340- expect ( Scheduler ) . toFlushAndYield ( [ ] ) ;
346+ await waitForAll ( [ ] ) ;
341347 expect ( container . innerHTML ) . toBe ( '<h1>Hello</h1>' ) ;
342348 } ) ;
343349
@@ -381,24 +387,24 @@ describe('ReactSuspenseEffectsSemanticsDOM', () => {
381387 act ( ( ) => {
382388 root . render ( < Parent swap = { false } /> ) ;
383389 } ) ;
384- expect ( Scheduler ) . toHaveYielded ( [ 'Loading...' ] ) ;
390+ assertLog ( [ 'Loading...' ] ) ;
385391
386392 await LazyChildA ;
387- expect ( Scheduler ) . toFlushAndYield ( [ 'A' , 'Did mount: A' ] ) ;
393+ await waitForAll ( [ 'A' , 'Did mount: A' ] ) ;
388394 expect ( container . innerHTML ) . toBe ( 'A' ) ;
389395
390396 // Swap the position of A and B
391397 ReactDOM . flushSync ( ( ) => {
392398 root . render ( < Parent swap = { true } /> ) ;
393399 } ) ;
394- expect ( Scheduler ) . toHaveYielded ( [ 'Loading...' , 'Will unmount: A' ] ) ;
400+ assertLog ( [ 'Loading...' , 'Will unmount: A' ] ) ;
395401 expect ( container . innerHTML ) . toBe ( 'Loading...' ) ;
396402
397403 // Destroy the whole tree, including the hidden A
398404 ReactDOM . flushSync ( ( ) => {
399405 root . render ( < h1 > Hello</ h1 > ) ;
400406 } ) ;
401- expect ( Scheduler ) . toFlushAndYield ( [ ] ) ;
407+ await waitForAll ( [ ] ) ;
402408 expect ( container . innerHTML ) . toBe ( '<h1>Hello</h1>' ) ;
403409 } ) ;
404410
@@ -432,12 +438,12 @@ describe('ReactSuspenseEffectsSemanticsDOM', () => {
432438
433439 // Initial render
434440 ReactDOM . render ( < App showMore = { false } /> , container ) ;
435- expect ( Scheduler ) . toHaveYielded ( [ 'Child' , 'Mount' ] ) ;
441+ assertLog ( [ 'Child' , 'Mount' ] ) ;
436442
437443 // Update that suspends, causing the existing tree to switches it to
438444 // a fallback.
439445 ReactDOM . render ( < App showMore = { true } /> , container ) ;
440- expect ( Scheduler ) . toHaveYielded ( [
446+ assertLog ( [
441447 'Child' ,
442448 'Loading...' ,
443449
@@ -448,6 +454,6 @@ describe('ReactSuspenseEffectsSemanticsDOM', () => {
448454
449455 // Delete the tree and unmount the effect
450456 ReactDOM . render ( null , container ) ;
451- expect ( Scheduler ) . toHaveYielded ( [ 'Unmount' ] ) ;
457+ assertLog ( [ 'Unmount' ] ) ;
452458 } ) ;
453459} ) ;
0 commit comments