Skip to content

Commit 0dd6108

Browse files
committed
Add test for large prerendered data
1 parent 1e9b7c3 commit 0dd6108

File tree

1 file changed

+57
-0
lines changed

1 file changed

+57
-0
lines changed

integration/vite-prerender-test.ts

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -414,6 +414,63 @@ test.describe("Prerendering", () => {
414414
expect(await app.getHtml()).toContain("<span>NOT-PRERENDERED-false</span>");
415415
});
416416

417+
test("Does not encounter header limits on large prerendered data", async ({
418+
page,
419+
}) => {
420+
fixture = await createFixture({
421+
// Even thogh we are prerendering, we want a running server so we can
422+
// hit the pre-rendered HTML file and a non-prerendered route
423+
prerender: false,
424+
files: {
425+
...files,
426+
"vite.config.ts": js`
427+
import { defineConfig } from "vite";
428+
import { reactRouter } from "@react-router/dev/vite";
429+
430+
export default defineConfig({
431+
build: { manifest: true },
432+
plugins: [
433+
reactRouter({
434+
prerender: ["/", "/about"],
435+
})
436+
],
437+
});
438+
`,
439+
"app/routes/about.tsx": js`
440+
import { useLoaderData } from 'react-router';
441+
export function loader({ request }) {
442+
return {
443+
prerendered: request.headers.has('X-React-Router-Prerender') ? 'yes' : 'no',
444+
// 24999 characters
445+
data: new Array(5000).fill('test').join('-'),
446+
};
447+
}
448+
449+
export default function Comp() {
450+
let data = useLoaderData();
451+
return (
452+
<>
453+
<h1 data-title>Large loader</h1>
454+
<p data-prerendered>{data.prerendered}</p>
455+
<p data-length>{data.data.length}</p>
456+
</>
457+
);
458+
}
459+
`,
460+
},
461+
});
462+
appFixture = await createAppFixture(fixture);
463+
464+
let app = new PlaywrightFixture(appFixture, page);
465+
await app.goto("/about");
466+
await page.waitForSelector("[data-mounted]");
467+
expect(await app.getHtml("[data-title]")).toContain("Large loader");
468+
expect(await app.getHtml("[data-prerendered]")).toContain("yes");
469+
expect(await app.getHtml("[data-length]")).toBe(
470+
'<p data-length="true">24999</p>'
471+
);
472+
});
473+
417474
test("Renders down to the proper HydrateFallback", async ({ page }) => {
418475
fixture = await createFixture({
419476
prerender: true,

0 commit comments

Comments
 (0)