@@ -59,11 +59,33 @@ describe('ReactDOMFizzServer', () => {
59
59
// @gate experimental
60
60
it ( 'should call pipeToNodeWritable' , ( ) => {
61
61
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 ( ) ;
63
67
jest . runAllTimers ( ) ;
64
68
expect ( output . result ) . toBe ( '<div>hello world</div>' ) ;
65
69
} ) ;
66
70
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
+
67
89
// @gate experimental
68
90
it ( 'should error the stream when an error is thrown at the root' , async ( ) => {
69
91
const { writable, output, completed} = getTestWritable ( ) ;
@@ -74,6 +96,8 @@ describe('ReactDOMFizzServer', () => {
74
96
writable ,
75
97
) ;
76
98
99
+ // The stream is errored even if we haven't started writing.
100
+
77
101
await completed ;
78
102
79
103
expect ( output . error ) . toBe ( theError ) ;
@@ -83,14 +107,15 @@ describe('ReactDOMFizzServer', () => {
83
107
// @gate experimental
84
108
it ( 'should error the stream when an error is thrown inside a fallback' , async ( ) => {
85
109
const { writable, output, completed} = getTestWritable ( ) ;
86
- ReactDOMFizzServer . pipeToNodeWritable (
110
+ const { startWriting } = ReactDOMFizzServer . pipeToNodeWritable (
87
111
< div >
88
112
< Suspense fallback = { < Throw /> } >
89
113
< InfiniteSuspend />
90
114
</ Suspense >
91
115
</ div > ,
92
116
writable ,
93
117
) ;
118
+ startWriting ( ) ;
94
119
95
120
await completed ;
96
121
@@ -101,14 +126,15 @@ describe('ReactDOMFizzServer', () => {
101
126
// @gate experimental
102
127
it ( 'should not error the stream when an error is thrown inside suspense boundary' , async ( ) => {
103
128
const { writable, output, completed} = getTestWritable ( ) ;
104
- ReactDOMFizzServer . pipeToNodeWritable (
129
+ const { startWriting } = ReactDOMFizzServer . pipeToNodeWritable (
105
130
< div >
106
131
< Suspense fallback = { < div > Loading</ div > } >
107
132
< Throw />
108
133
</ Suspense >
109
134
</ div > ,
110
135
writable ,
111
136
) ;
137
+ startWriting ( ) ;
112
138
113
139
await completed ;
114
140
@@ -128,12 +154,13 @@ describe('ReactDOMFizzServer', () => {
128
154
function Content ( ) {
129
155
return 'Hi' ;
130
156
}
131
- ReactDOMFizzServer . pipeToNodeWritable (
157
+ const { startWriting } = ReactDOMFizzServer . pipeToNodeWritable (
132
158
< Suspense fallback = { < Fallback /> } >
133
159
< Content />
134
160
</ Suspense > ,
135
161
writable ,
136
162
) ;
163
+ startWriting ( ) ;
137
164
138
165
await completed ;
139
166
@@ -145,14 +172,15 @@ describe('ReactDOMFizzServer', () => {
145
172
// @gate experimental
146
173
it ( 'should be able to complete by aborting even if the promise never resolves' , async ( ) => {
147
174
const { writable, output, completed} = getTestWritable ( ) ;
148
- const { abort} = ReactDOMFizzServer . pipeToNodeWritable (
175
+ const { startWriting , abort} = ReactDOMFizzServer . pipeToNodeWritable (
149
176
< div >
150
177
< Suspense fallback = { < div > Loading</ div > } >
151
178
< InfiniteSuspend />
152
179
</ Suspense >
153
180
</ div > ,
154
181
writable ,
155
182
) ;
183
+ startWriting ( ) ;
156
184
157
185
jest . runAllTimers ( ) ;
158
186
0 commit comments