From c615ff17bf19bf935a0e69f22adb6ff14bb705bc Mon Sep 17 00:00:00 2001 From: James Date: Sat, 22 Aug 2026 02:16:23 +0100 Subject: [PATCH] test(cloudflare): prove browser reuse of warmed RSC variants --- .../cloudflare-workers/rsc-prewarm.spec.ts | 27 ++++++++++++++++--- 1 file changed, 23 insertions(+), 4 deletions(-) diff --git a/tests/e2e/cloudflare-workers/rsc-prewarm.spec.ts b/tests/e2e/cloudflare-workers/rsc-prewarm.spec.ts index c9a52ccde..ce8eb4f49 100644 --- a/tests/e2e/cloudflare-workers/rsc-prewarm.spec.ts +++ b/tests/e2e/cloudflare-workers/rsc-prewarm.spec.ts @@ -269,6 +269,17 @@ test("deploy-prewarmed full and loading RSC variants are reused by browser navig }); } + await runFresh(async (page) => { + await gotoCurrentBuild(page, "/prewarm/router"); + const shell = await observeRsc(page, () => page.getByTestId("router-prefetch").click()); + expectLoadingShell(shell); + + const full = await observeRsc(page, () => page.getByTestId("router-navigate").click()); + expectFull(full); + await expect(page).toHaveURL(new RegExp(`${TARGET_PATH}$`)); + await expect(page.getByRole("heading", { name: "Prewarm target" })).toBeVisible(); + }); + await runFresh(async (page) => { let targetRscRequests = 0; page.on("request", (request) => { @@ -295,8 +306,16 @@ test("deploy-prewarmed full and loading RSC variants are reused by browser navig await expect(page).toHaveURL(new RegExp(`${TARGET_PATH}$`)); }); - const dynamic = await request.get(`${baseURL}/dynamic?_rsc`, { headers: fullHeaders }); - expect(dynamic.ok()).toBe(true); - expect(dynamic.headers()["cache-control"]).toContain("no-store"); - expect(dynamic.headers()["cf-cache-status"]).toBe("BYPASS"); + await runFresh(async (page) => { + const dynamicResponsePromise = page.waitForResponse((response) => { + const request = response.request(); + return new URL(response.url()).pathname === "/dynamic" && request.headers().rsc === "1"; + }); + await gotoCurrentBuild(page, "/prewarm/dynamic"); + const dynamic = await dynamicResponsePromise; + rejectStaleSeedWorker(dynamic); + expect(dynamic.ok()).toBe(true); + expect(dynamic.headers()["cache-control"]).toContain("no-store"); + expect(dynamic.headers()["cf-cache-status"]).toBe("BYPASS"); + }); });