Skip to content

Commit 9c5d2dc

Browse files
committed
test: Add basic tests for stream renderers w/ full HTML doc
1 parent 27f340b commit 9c5d2dc

File tree

3 files changed

+73
-4
lines changed

3 files changed

+73
-4
lines changed

package-lock.json

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

test/compat/stream-node.test.js

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,4 +73,41 @@ describe('renderToPipeableStream', () => {
7373
'</div>'
7474
]);
7575
});
76+
77+
it('should render full html documents', async () => {
78+
const { Suspender, suspended } = createSuspender();
79+
80+
const sink = createSink();
81+
const { pipe } = renderToPipeableStream(
82+
<html lang="en">
83+
<head>
84+
<meta charSet="utf-8" />
85+
</head>
86+
<body>
87+
<div>
88+
<Suspense fallback="loading...">
89+
<Suspender />
90+
</Suspense>
91+
</div>
92+
</body>
93+
</html>,
94+
{
95+
onShellReady: () => {
96+
pipe(sink.stream);
97+
}
98+
}
99+
);
100+
suspended.resolve();
101+
102+
const result = await sink.promise;
103+
104+
expect(result).to.deep.equal([
105+
'<html lang="en"><head><meta charset="utf-8"/></head><body><div><!--preact-island:54-->loading...<!--/preact-island:54--></div>',
106+
'<div hidden>',
107+
createInitScript(),
108+
createSubtree('54', '<p>it works</p>'),
109+
'</div>',
110+
'</body></html>'
111+
]);
112+
});
76113
});

test/compat/stream.test.js

Lines changed: 34 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -82,11 +82,43 @@ describe('renderToReadableStream', () => {
8282
const result = await sink.promise;
8383

8484
expect(result).to.deep.equal([
85-
'<div><!--preact-island:54-->loading...<!--/preact-island:54--></div>',
85+
'<div><!--preact-island:63-->loading...<!--/preact-island:63--></div>',
8686
'<div hidden>',
8787
createInitScript(),
88-
createSubtree('54', '<p>it works</p>'),
88+
createSubtree('63', '<p>it works</p>'),
8989
'</div>'
9090
]);
9191
});
92+
93+
it('should render full html documents', async () => {
94+
const { Suspender, suspended } = createSuspender();
95+
96+
const stream = renderToReadableStream(
97+
<html lang="en">
98+
<head>
99+
<meta charSet="utf-8" />
100+
</head>
101+
<body>
102+
<div>
103+
<Suspense fallback="loading...">
104+
<Suspender />
105+
</Suspense>
106+
</div>
107+
</body>
108+
</html>
109+
);
110+
const sink = createSink(stream);
111+
suspended.resolve();
112+
113+
const result = await sink.promise;
114+
115+
expect(result).to.deep.equal([
116+
'<html lang="en"><head><meta charset="utf-8"/></head><body><div><!--preact-island:70-->loading...<!--/preact-island:70--></div>',
117+
'<div hidden>',
118+
createInitScript(),
119+
createSubtree('70', '<p>it works</p>'),
120+
'</div>',
121+
'</body></html>'
122+
]);
123+
});
92124
});

0 commit comments

Comments
 (0)