@@ -14,6 +14,7 @@ let Stream;
1414let  React ; 
1515let  ReactDOMFizzServer ; 
1616let  Suspense ; 
17+ let  act ; 
1718
1819describe ( 'ReactDOMFizzServerNode' ,  ( )  =>  { 
1920  beforeEach ( ( )  =>  { 
@@ -22,6 +23,7 @@ describe('ReactDOMFizzServerNode', () => {
2223    ReactDOMFizzServer  =  require ( 'react-dom/server' ) ; 
2324    Stream  =  require ( 'stream' ) ; 
2425    Suspense  =  React . Suspense ; 
26+     act  =  require ( 'internal-test-utils' ) . act ; 
2527  } ) ; 
2628
2729  function  getTestWritable ( )  { 
@@ -54,54 +56,59 @@ describe('ReactDOMFizzServerNode', () => {
5456    throw  theInfinitePromise ; 
5557  } 
5658
57-   it ( 'should call renderToPipeableStream' ,  ( )  =>  { 
59+   it ( 'should call renderToPipeableStream' ,  async   ( )  =>  { 
5860    const  { writable,  output}  =  getTestWritable ( ) ; 
59-     const  { pipe}  =  ReactDOMFizzServer . renderToPipeableStream ( 
60-       < div > hello world</ div > , 
61-     ) ; 
62-     pipe ( writable ) ; 
63-     jest . runAllTimers ( ) ; 
61+     await  act ( ( )  =>  { 
62+       const  { pipe}  =  ReactDOMFizzServer . renderToPipeableStream ( 
63+         < div > hello world</ div > , 
64+       ) ; 
65+       pipe ( writable ) ; 
66+     } ) ; 
6467    expect ( output . result ) . toMatchInlineSnapshot ( `"<div>hello world</div>"` ) ; 
6568  } ) ; 
6669
67-   it ( 'should emit DOCTYPE at the root of the document' ,  ( )  =>  { 
70+   it ( 'should emit DOCTYPE at the root of the document' ,  async   ( )  =>  { 
6871    const  { writable,  output}  =  getTestWritable ( ) ; 
69-     const  { pipe}  =  ReactDOMFizzServer . renderToPipeableStream ( 
70-       < html > 
71-         < body > hello world</ body > 
72-       </ html > , 
73-     ) ; 
74-     pipe ( writable ) ; 
75-     jest . runAllTimers ( ) ; 
72+     await  act ( ( )  =>  { 
73+       const  { pipe}  =  ReactDOMFizzServer . renderToPipeableStream ( 
74+         < html > 
75+           < body > hello world</ body > 
76+         </ html > , 
77+       ) ; 
78+       pipe ( writable ) ; 
79+     } ) ; 
7680    // with Float, we emit empty heads if they are elided when rendering <html> 
7781    expect ( output . result ) . toMatchInlineSnapshot ( 
7882      `"<!DOCTYPE html><html><head></head><body>hello world</body></html>"` , 
7983    ) ; 
8084  } ) ; 
8185
82-   it ( 'should emit bootstrap script src at the end' ,  ( )  =>  { 
86+   it ( 'should emit bootstrap script src at the end' ,  async   ( )  =>  { 
8387    const  { writable,  output}  =  getTestWritable ( ) ; 
84-     const  { pipe}  =  ReactDOMFizzServer . renderToPipeableStream ( 
85-       < div > hello world</ div > , 
86-       { 
87-         bootstrapScriptContent : 'INIT();' , 
88-         bootstrapScripts : [ 'init.js' ] , 
89-         bootstrapModules : [ 'init.mjs' ] , 
90-       } , 
91-     ) ; 
92-     pipe ( writable ) ; 
93-     jest . runAllTimers ( ) ; 
88+     await  act ( ( )  =>  { 
89+       const  { pipe}  =  ReactDOMFizzServer . renderToPipeableStream ( 
90+         < div > hello world</ div > , 
91+         { 
92+           bootstrapScriptContent : 'INIT();' , 
93+           bootstrapScripts : [ 'init.js' ] , 
94+           bootstrapModules : [ 'init.mjs' ] , 
95+         } , 
96+       ) ; 
97+       pipe ( writable ) ; 
98+     } ) ; 
9499    expect ( output . result ) . toMatchInlineSnapshot ( 
95100      `"<link rel="preload" as="script" fetchPriority="low" href="init.js"/><link rel="modulepreload" fetchPriority="low" href="init.mjs"/><div>hello world</div><script>INIT();</script><script src="init.js" async=""></script><script type="module" src="init.mjs" async=""></script>"` , 
96101    ) ; 
97102  } ) ; 
98103
99-   it ( 'should start writing after pipe' ,  ( )  =>  { 
104+   it ( 'should start writing after pipe' ,  async   ( )  =>  { 
100105    const  { writable,  output}  =  getTestWritable ( ) ; 
101-     const  { pipe}  =  ReactDOMFizzServer . renderToPipeableStream ( 
102-       < div > hello world</ div > , 
103-     ) ; 
104-     jest . runAllTimers ( ) ; 
106+     let  pipe ; 
107+     await  act ( ( )  =>  { 
108+       pipe  =  ReactDOMFizzServer . renderToPipeableStream ( 
109+         < div > hello world</ div > , 
110+       ) . pipe ; 
111+     } ) ; 
105112    // First we write our header. 
106113    output . result  += 
107114      '<!doctype html><html><head><title>test</title><head><body>' ; 
@@ -281,24 +288,26 @@ describe('ReactDOMFizzServerNode', () => {
281288    let  isCompleteCalls  =  0 ; 
282289    const  errors  =  [ ] ; 
283290    const  { writable,  output,  completed}  =  getTestWritable ( ) ; 
284-     const  { pipe,  abort}  =  ReactDOMFizzServer . renderToPipeableStream ( 
285-       < div > 
286-         < Suspense  fallback = { < div > Loading</ div > } > 
287-           < InfiniteSuspend  /> 
288-         </ Suspense > 
289-       </ div > , 
290-       { 
291-         onError ( x )  { 
292-           errors . push ( x . message ) ; 
293-         } , 
294-         onAllReady ( )  { 
295-           isCompleteCalls ++ ; 
291+     let  abort ; 
292+     await  act ( ( )  =>  { 
293+       const  pipeable  =  ReactDOMFizzServer . renderToPipeableStream ( 
294+         < div > 
295+           < Suspense  fallback = { < div > Loading</ div > } > 
296+             < InfiniteSuspend  /> 
297+           </ Suspense > 
298+         </ div > , 
299+         { 
300+           onError ( x )  { 
301+             errors . push ( x . message ) ; 
302+           } , 
303+           onAllReady ( )  { 
304+             isCompleteCalls ++ ; 
305+           } , 
296306        } , 
297-       } , 
298-     ) ; 
299-     pipe ( writable ) ; 
300- 
301-     jest . runAllTimers ( ) ; 
307+       ) ; 
308+       pipeable . pipe ( writable ) ; 
309+       abort  =  pipeable . abort ; 
310+     } ) ; 
302311
303312    expect ( output . result ) . toContain ( 'Loading' ) ; 
304313    expect ( isCompleteCalls ) . toBe ( 0 ) ; 
@@ -360,26 +369,28 @@ describe('ReactDOMFizzServerNode', () => {
360369    let  isCompleteCalls  =  0 ; 
361370    const  errors  =  [ ] ; 
362371    const  { writable,  output,  completed}  =  getTestWritable ( ) ; 
363-     const  { pipe,  abort}  =  ReactDOMFizzServer . renderToPipeableStream ( 
364-       < div > 
365-         < Suspense  fallback = "Loading" > 
366-           < Suspense  fallback = { < InfiniteSuspend  /> } > 
367-             < InfiniteSuspend  /> 
372+     let  abort ; 
373+     await  act ( ( )  =>  { 
374+       const  pipeable  =  ReactDOMFizzServer . renderToPipeableStream ( 
375+         < div > 
376+           < Suspense  fallback = "Loading" > 
377+             < Suspense  fallback = { < InfiniteSuspend  /> } > 
378+               < InfiniteSuspend  /> 
379+             </ Suspense > 
368380          </ Suspense > 
369-         </ Suspense > 
370-       </ div > , 
371-       { 
372-         onError ( x )   { 
373-           errors . push ( x . message ) ; 
374-         } , 
375-         onAllReady ( )   { 
376-           isCompleteCalls ++ ; 
381+         </ div > , 
382+          { 
383+            onError ( x )   { 
384+              errors . push ( x . message ) ; 
385+           } , 
386+            onAllReady ( )   { 
387+              isCompleteCalls ++ ; 
388+           } , 
377389        } , 
378-       } , 
379-     ) ; 
380-     pipe ( writable ) ; 
381- 
382-     jest . runAllTimers ( ) ; 
390+       ) ; 
391+       pipeable . pipe ( writable ) ; 
392+       abort  =  pipeable . abort ; 
393+     } ) ; 
383394
384395    expect ( output . result ) . toContain ( 'Loading' ) ; 
385396    expect ( isCompleteCalls ) . toBe ( 0 ) ; 
@@ -428,15 +439,15 @@ describe('ReactDOMFizzServerNode', () => {
428439
429440    const  client  =  new  DelayClient ( ) ; 
430441    const  { writable,  output,  completed}  =  getTestWritable ( ) ; 
431-     ReactDOMFizzServer . renderToPipeableStream ( 
432-       < DelayContext . Provider   value = { client } > 
433-         < Suspense   fallback = "loading" > 
434-           < Component   / >
435-         </ Suspense > 
436-       </ DelayContext . Provider > , 
437-     ) . pipe ( writable ) ; 
438- 
439-     jest . runAllTimers ( ) ; 
442+     await   act ( ( )   =>   { 
443+       ReactDOMFizzServer . renderToPipeableStream ( 
444+         < DelayContext . Provider   value = { client } > 
445+           < Suspense   fallback = "loading" > 
446+              < Component   / >
447+            </ Suspense > 
448+          </ DelayContext . Provider > , 
449+        ) . pipe ( writable ) ; 
450+     } ) ; 
440451
441452    expect ( output . error ) . toBe ( undefined ) ; 
442453    expect ( output . result ) . toContain ( 'loading' ) ; 
@@ -481,29 +492,28 @@ describe('ReactDOMFizzServerNode', () => {
481492      output : output0 , 
482493      completed : completed0 , 
483494    }  =  getTestWritable ( ) ; 
484-     ReactDOMFizzServer . renderToPipeableStream ( 
485-       < DelayContext . Provider  value = { client0 } > 
486-         < Suspense  fallback = "loading" > 
487-           < Component  /> 
488-         </ Suspense > 
489-       </ DelayContext . Provider > , 
490-     ) . pipe ( writable0 ) ; 
491- 
492495    const  client1  =  new  DelayClient ( ) ; 
493496    const  { 
494497      writable : writable1 , 
495498      output : output1 , 
496499      completed : completed1 , 
497500    }  =  getTestWritable ( ) ; 
498-     ReactDOMFizzServer . renderToPipeableStream ( 
499-       < DelayContext . Provider  value = { client1 } > 
500-         < Suspense  fallback = "loading" > 
501-           < Component  /> 
502-         </ Suspense > 
503-       </ DelayContext . Provider > , 
504-     ) . pipe ( writable1 ) ; 
505- 
506-     jest . runAllTimers ( ) ; 
501+     await  act ( ( )  =>  { 
502+       ReactDOMFizzServer . renderToPipeableStream ( 
503+         < DelayContext . Provider  value = { client0 } > 
504+           < Suspense  fallback = "loading" > 
505+             < Component  /> 
506+           </ Suspense > 
507+         </ DelayContext . Provider > , 
508+       ) . pipe ( writable0 ) ; 
509+       ReactDOMFizzServer . renderToPipeableStream ( 
510+         < DelayContext . Provider  value = { client1 } > 
511+           < Suspense  fallback = "loading" > 
512+             < Component  /> 
513+           </ Suspense > 
514+         </ DelayContext . Provider > , 
515+       ) . pipe ( writable1 ) ; 
516+     } ) ; 
507517
508518    expect ( output0 . error ) . toBe ( undefined ) ; 
509519    expect ( output0 . result ) . toContain ( 'loading' ) ; 
@@ -552,22 +562,22 @@ describe('ReactDOMFizzServerNode', () => {
552562
553563    const  client  =  new  DelayClient ( ) ; 
554564    const  { writable,  output,  completed}  =  getTestWritable ( ) ; 
555-     ReactDOMFizzServer . renderToPipeableStream ( 
556-       < > 
557-         < DelayContext . Provider   value = { client } > 
558-           < Suspense   fallback = "loading" > 
559-             < Component   / >
560-           </ Suspense > 
561-         </ DelayContext . Provider > 
562-         < DelayContext . Provider   value = { client } > 
563-           < Suspense   fallback = "loading" > 
564-             < Component   / >
565-           </ Suspense > 
566-         </ DelayContext . Provider > 
567-       </ > , 
568-     ) . pipe ( writable ) ; 
569- 
570-     jest . runAllTimers ( ) ; 
565+     await   act ( ( )   =>   { 
566+       ReactDOMFizzServer . renderToPipeableStream ( 
567+         < > 
568+           < DelayContext . Provider   value = { client } > 
569+             < Suspense   fallback = "loading" > 
570+                < Component   / >
571+              </ Suspense > 
572+            </ DelayContext . Provider > 
573+           < DelayContext . Provider   value = { client } > 
574+             < Suspense   fallback = "loading" > 
575+                < Component   / >
576+              </ Suspense > 
577+            </ DelayContext . Provider > 
578+          </ > , 
579+        ) . pipe ( writable ) ; 
580+     } ) ; 
571581
572582    expect ( output . error ) . toBe ( undefined ) ; 
573583    expect ( output . result ) . toContain ( 'loading' ) ; 
@@ -630,13 +640,14 @@ describe('ReactDOMFizzServerNode', () => {
630640    expect ( isComplete ) . toBe ( true ) ; 
631641  } ) ; 
632642
633-   it ( 'should encode multibyte characters correctly without nulls (#24985)' ,  ( )  =>  { 
643+   it ( 'should encode multibyte characters correctly without nulls (#24985)' ,  async   ( )  =>  { 
634644    const  { writable,  output}  =  getTestWritable ( ) ; 
635-     const  { pipe}  =  ReactDOMFizzServer . renderToPipeableStream ( 
636-       < div > { Array ( 700 ) . fill ( 'ののの' ) } </ div > , 
637-     ) ; 
638-     pipe ( writable ) ; 
639-     jest . runAllTimers ( ) ; 
645+     await  act ( ( )  =>  { 
646+       const  { pipe}  =  ReactDOMFizzServer . renderToPipeableStream ( 
647+         < div > { Array ( 700 ) . fill ( 'ののの' ) } </ div > , 
648+       ) ; 
649+       pipe ( writable ) ; 
650+     } ) ; 
640651    expect ( output . result . indexOf ( '\u0000' ) ) . toBe ( - 1 ) ; 
641652    expect ( output . result ) . toEqual ( 
642653      '<div>'  +  Array ( 700 ) . fill ( 'ののの' ) . join ( '<!-- -->' )  +  '</div>' , 
0 commit comments