@@ -59,11 +59,33 @@ describe('ReactDOMFizzServer', () => {
5959 // @gate experimental
6060 it ( 'should call pipeToNodeWritable' , ( ) => {
6161 const { writable, output} = getTestWritable ( ) ;
62- ReactDOMFizzServer . pipeToNodeWritable ( < div > hello world</ div > , writable ) ;
62+ const { startWriting} = ReactDOMFizzServer . pipeToNodeWritable (
63+ < div > hello world</ div > ,
64+ writable ,
65+ ) ;
66+ startWriting ( ) ;
6367 jest . runAllTimers ( ) ;
6468 expect ( output . result ) . toBe ( '<div>hello world</div>' ) ;
6569 } ) ;
6670
71+ // @gate experimental
72+ it ( 'should start writing after startWriting' , ( ) => {
73+ const { writable, output} = getTestWritable ( ) ;
74+ const { startWriting} = ReactDOMFizzServer . pipeToNodeWritable (
75+ < div > hello world</ div > ,
76+ writable ,
77+ ) ;
78+ jest . runAllTimers ( ) ;
79+ // First we write our header.
80+ output . result +=
81+ '<!doctype html><html><head><title>test</title><head><body>' ;
82+ // Then React starts writing.
83+ startWriting ( ) ;
84+ expect ( output . result ) . toBe (
85+ '<!doctype html><html><head><title>test</title><head><body><div>hello world</div>' ,
86+ ) ;
87+ } ) ;
88+
6789 // @gate experimental
6890 it ( 'should error the stream when an error is thrown at the root' , async ( ) => {
6991 const { writable, output, completed} = getTestWritable ( ) ;
@@ -74,6 +96,8 @@ describe('ReactDOMFizzServer', () => {
7496 writable ,
7597 ) ;
7698
99+ // The stream is errored even if we haven't started writing.
100+
77101 await completed ;
78102
79103 expect ( output . error ) . toBe ( theError ) ;
@@ -83,14 +107,15 @@ describe('ReactDOMFizzServer', () => {
83107 // @gate experimental
84108 it ( 'should error the stream when an error is thrown inside a fallback' , async ( ) => {
85109 const { writable, output, completed} = getTestWritable ( ) ;
86- ReactDOMFizzServer . pipeToNodeWritable (
110+ const { startWriting } = ReactDOMFizzServer . pipeToNodeWritable (
87111 < div >
88112 < Suspense fallback = { < Throw /> } >
89113 < InfiniteSuspend />
90114 </ Suspense >
91115 </ div > ,
92116 writable ,
93117 ) ;
118+ startWriting ( ) ;
94119
95120 await completed ;
96121
@@ -101,14 +126,15 @@ describe('ReactDOMFizzServer', () => {
101126 // @gate experimental
102127 it ( 'should not error the stream when an error is thrown inside suspense boundary' , async ( ) => {
103128 const { writable, output, completed} = getTestWritable ( ) ;
104- ReactDOMFizzServer . pipeToNodeWritable (
129+ const { startWriting } = ReactDOMFizzServer . pipeToNodeWritable (
105130 < div >
106131 < Suspense fallback = { < div > Loading</ div > } >
107132 < Throw />
108133 </ Suspense >
109134 </ div > ,
110135 writable ,
111136 ) ;
137+ startWriting ( ) ;
112138
113139 await completed ;
114140
@@ -128,12 +154,13 @@ describe('ReactDOMFizzServer', () => {
128154 function Content ( ) {
129155 return 'Hi' ;
130156 }
131- ReactDOMFizzServer . pipeToNodeWritable (
157+ const { startWriting } = ReactDOMFizzServer . pipeToNodeWritable (
132158 < Suspense fallback = { < Fallback /> } >
133159 < Content />
134160 </ Suspense > ,
135161 writable ,
136162 ) ;
163+ startWriting ( ) ;
137164
138165 await completed ;
139166
@@ -145,14 +172,15 @@ describe('ReactDOMFizzServer', () => {
145172 // @gate experimental
146173 it ( 'should be able to complete by aborting even if the promise never resolves' , async ( ) => {
147174 const { writable, output, completed} = getTestWritable ( ) ;
148- const { abort} = ReactDOMFizzServer . pipeToNodeWritable (
175+ const { startWriting , abort} = ReactDOMFizzServer . pipeToNodeWritable (
149176 < div >
150177 < Suspense fallback = { < div > Loading</ div > } >
151178 < InfiniteSuspend />
152179 </ Suspense >
153180 </ div > ,
154181 writable ,
155182 ) ;
183+ startWriting ( ) ;
156184
157185 jest . runAllTimers ( ) ;
158186
0 commit comments