101
) {
102
// For plain server markup result we have comments between.
103
// If we're able to hydrate, they remain.
104
- expect(e.childNodes.length).toBe(5);
104
+ expect(e.childNodes.length).toBe(render === streamRender ? 6 : 5);
105
expectTextNode(e.childNodes[0], ' ');
106
expectTextNode(e.childNodes[2], ' ');
107
expectTextNode(e.childNodes[4], ' ');
119
Text<span>More Text</span>
120
</div>,
121
);
122
- expect(e.childNodes.length).toBe(2);
123
- const spanNode = e.childNodes[1];
122
+ expect(e.childNodes.length).toBe(render === streamRender ? 3 : 2);
123
+ const spanNode = e.childNodes[render === streamRender ? 2 : 1];
124
expectTextNode(e.childNodes[0], 'Text');
125
expect(spanNode.tagName).toBe('SPAN');
126
expect(spanNode.childNodes.length).toBe(1);
147
itRenders('a custom element with text', async render => {
148
const e = await render(<custom-element>Text</custom-element>);
149
expect(e.tagName).toBe('CUSTOM-ELEMENT');
150
- expect(e.childNodes.length).toBe(1);
150
+ expect(e.childNodes.length).toBe(render === streamRender ? 2 : 1);
151
expectNode(e.firstChild, TEXT_NODE_TYPE, 'Text');
152
});
153
154
itRenders('a leading blank child with a text sibling', async render => {
155
const e = await render(<div>{''}foo</div>);
156
- expect(e.childNodes.length).toBe(1);
156
+ expect(e.childNodes.length).toBe(render === streamRender ? 2 : 1);
157
expectTextNode(e.childNodes[0], 'foo');
158
});
159
160
itRenders('a trailing blank child with a text sibling', async render => {
161
const e = await render(<div>foo{''}</div>);
162
- expect(e.childNodes.length).toBe(1);
162
+ expect(e.childNodes.length).toBe(render === streamRender ? 2 : 1);
163
expectTextNode(e.childNodes[0], 'foo');
164
});
165
176
render === streamRender
177
) {
178
// In the server render output there's a comment between them.
179
- expect(e.childNodes.length).toBe(3);
179
+ expect(e.childNodes.length).toBe(render === streamRender ? 4 : 3);
180
expectTextNode(e.childNodes[0], 'foo');
181
expectTextNode(e.childNodes[2], 'bar');
182
} else {
203
render === streamRender
204
) {
205
// In the server render output there's a comment between them.
206
- expect(e.childNodes.length).toBe(5);
206
+ expect(e.childNodes.length).toBe(render === streamRender ? 6 : 5);
207
expectTextNode(e.childNodes[0], 'a');
208
expectTextNode(e.childNodes[2], 'b');
209
expectTextNode(e.childNodes[4], 'c');
240
e
241
</div>,
242
);
243
- if (
244
- render === serverRender ||
245
- render === clientRenderOnServerString ||
246
- render === streamRender
247
- ) {
243
+ if (render === serverRender || render === clientRenderOnServerString) {
244
// In the server render output there's comments between text nodes.
245
expect(e.childNodes.length).toBe(5);
246
expectTextNode(e.childNodes[0], 'a');
249
expectTextNode(e.childNodes[3].childNodes[0], 'c');
250
expectTextNode(e.childNodes[3].childNodes[2], 'd');
251
expectTextNode(e.childNodes[4], 'e');
252
+ } else if (render === streamRender) {
253
+ // In the server render output there's comments after each text node.
254
+ expect(e.childNodes.length).toBe(7);
255
+ expectTextNode(e.childNodes[0], 'a');
256
+ expectTextNode(e.childNodes[2], 'b');
257
+ expect(e.childNodes[4].childNodes.length).toBe(4);
258
+ expectTextNode(e.childNodes[4].childNodes[0], 'c');
259
+ expectTextNode(e.childNodes[4].childNodes[2], 'd');
260
+ expectTextNode(e.childNodes[5], 'e');
261
} else {
262
expect(e.childNodes.length).toBe(4);
263
expectTextNode(e.childNodes[0], 'a');
296
render === streamRender
297
) {
298
// In the server markup there's a comment between.
294
- expect(e.childNodes.length).toBe(3);
299
+ expect(e.childNodes.length).toBe(render === streamRender ? 4 : 3);
300
expectTextNode(e.childNodes[0], 'foo');
301
expectTextNode(e.childNodes[2], '40');
302
} else {
335
336
itRenders('null children as blank', async render => {
337
const e = await render(<div>{null}foo</div>);
333
- expect(e.childNodes.length).toBe(1);
338
+ expect(e.childNodes.length).toBe(render === streamRender ? 2 : 1);
339
expectTextNode(e.childNodes[0], 'foo');
340
});
341
342
itRenders('false children as blank', async render => {
343
const e = await render(<div>{false}foo</div>);
339
- expect(e.childNodes.length).toBe(1);
344
+ expect(e.childNodes.length).toBe(render === streamRender ? 2 : 1);
345
expectTextNode(e.childNodes[0], 'foo');
346
});
347
353
{false}
354
</div>,
355
);
351
- expect(e.childNodes.length).toBe(1);
356
+ expect(e.childNodes.length).toBe(render === streamRender ? 2 : 1);
357
expectTextNode(e.childNodes[0], 'foo');
358
});
359
740
</div>,
741
);
742
expect(e.id).toBe('parent');
738
- expect(e.childNodes.length).toBe(3);
743
+ expect(e.childNodes.length).toBe(render === streamRender ? 4 : 3);
744
const child1 = e.childNodes[0];
745
const textNode = e.childNodes[1];
741
- const child2 = e.childNodes[2];
746
+ const child2 = e.childNodes[render === streamRender ? 3 : 2];
747
expect(child1.id).toBe('child1');
748
expect(child1.childNodes.length).toBe(0);
749
expectTextNode(textNode, ' ');
757
async render => {
758
// prettier-ignore
759
const e = await render(<div id="parent"> <div id="child" /> </div>); // eslint-disable-line no-multi-spaces
755
- expect(e.childNodes.length).toBe(3);
760
+ expect(e.childNodes.length).toBe(render === streamRender ? 5 : 3);
761
const textNode1 = e.childNodes[0];
757
- const child = e.childNodes[1];
758
- const textNode2 = e.childNodes[2];
762
+ const child = e.childNodes[render === streamRender ? 2 : 1];
763
+ const textNode2 = e.childNodes[render === streamRender ? 3 : 2];
764
expect(e.id).toBe('parent');
765
expectTextNode(textNode1, ' ');
766
expect(child.id).toBe('child');
783
) {
784
// For plain server markup result we have comments between.
785
// If we're able to hydrate, they remain.
781
- expect(parent.childNodes.length).toBe(5);
786
+ expect(parent.childNodes.length).toBe(
787
+ render === streamRender ? 6 : 5,
788
+ );
789
expectTextNode(parent.childNodes[0], 'a');
790
expectTextNode(parent.childNodes[2], 'b');
791
expectTextNode(parent.childNodes[4], 'c');
817
render === clientRenderOnServerString ||
818
render === streamRender
819
) {
813
- expect(e.childNodes.length).toBe(3);
820
+ expect(e.childNodes.length).toBe(render === streamRender ? 4 : 3);
821
expectTextNode(e.childNodes[0], '<span>Text1"</span>');
822
expectTextNode(e.childNodes[2], '<span>Text2"</span>');
823
} else {
868
);
869
if (render === serverRender || render === streamRender) {
870
// We have three nodes because there is a comment between them.
864
- expect(e.childNodes.length).toBe(3);
871
+ expect(e.childNodes.length).toBe(render === streamRender ? 4 : 3);
872
// Everything becomes LF when parsed from server HTML.
873
// Null character is ignored.
874
expectNode(e.childNodes[0], TEXT_NODE_TYPE, 'foo\nbar');