this repo has no description
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

fix(e2e): Ensure the response event listener is registered before navigation (#873)

authored by

Magnus and committed by
GitHub
3edc0505 07487a4d

+53 -12
+9
examples/e2e/app-pages-router/app/ssg/page.tsx
··· 1 + export const dynamic = "force-static"; 2 + 3 + export default function Page() { 4 + return ( 5 + <div> 6 + <strong>This is a static page</strong> 7 + </div> 8 + ); 9 + }
+11
examples/e2e/app-pages-router/e2e/headers.test.ts
··· 1 + import { expect, test } from "@playwright/test"; 2 + 3 + test("does not set x-opennext-requestid header on cache interceptor response", async ({ page }) => { 4 + const result = await page.goto("/ssg"); 5 + expect(result).toBeDefined(); 6 + expect(result?.status()).toBe(200); 7 + const headers = result?.headers(); 8 + 9 + // This header should not be defined even when its a cached response from the cache interception in the external middleware 10 + expect(headers?.["x-opennext-requestid"]).toBeUndefined(); 11 + });
+27 -11
examples/e2e/app-router/e2e/middleware.rewrite.test.ts
··· 1 - import { expect, test } from "@playwright/test"; 1 + import { expect, test, Response as PwResponse } from "@playwright/test"; 2 2 import { validateMd5 } from "../../utils"; 3 3 4 4 /* ··· 23 23 }); 24 24 25 25 test("Middleware Rewrite External Image", async ({ page }) => { 26 + let responsePromise = new Promise<PwResponse>((resolve) => { 27 + page.on("response", async (resp) => { 28 + resolve(resp); 29 + }); 30 + }); 31 + 26 32 await page.goto("/rewrite-external"); 27 - page.on("response", async (response) => { 28 - expect(response.status()).toBe(200); 29 - expect(response.headers()["content-type"]).toBe("image/png"); 30 - expect(response.headers()["cache-control"]).toBe("max-age=600"); 31 - const bodyBuffer = await response.body(); 32 - expect(validateMd5(bodyBuffer, OPENNEXT_PNG_MD5)).toBe(true); 33 - }); 33 + 34 + const response = await responsePromise; 35 + 36 + expect(response.status()).toBe(200); 37 + expect(response.headers()["content-type"]).toBe("image/png"); 38 + expect(response.headers()["cache-control"]).toBe("max-age=600"); 39 + const bodyBuffer = await response.body(); 40 + expect(validateMd5(bodyBuffer, OPENNEXT_PNG_MD5)).toBe(true); 34 41 }); 35 42 36 43 test("Middleware Rewrite Status Code", async ({ page }) => { 44 + // Need to set up the event before navigating to the page to avoid missing it 45 + // We need to check the URL here also cause there will be multiple responses (i.e the fonts, css, js, etc) 46 + const statusPromise = new Promise<number>((resolve) => { 47 + page.on("response", async (response) => { 48 + // `response.url()` will be the full URL including the host, so we need to check the pathname 49 + if (new URL(response.url()).pathname === "/rewrite-status-code") { 50 + resolve(response.status()); 51 + } 52 + }); 53 + }); 54 + 37 55 await page.goto("/rewrite-status-code"); 38 56 const el = page.getByText("Rewritten Destination", { exact: true }); 39 57 await expect(el).toBeVisible(); 40 - page.on("response", async (response) => { 41 - expect(response.status()).toBe(403); 42 - }); 58 + expect(statusPromise).resolves.toEqual(403); 43 59 });
+2
examples/e2e/pages-router/e2e/header.test.ts
··· 9 9 // Both these headers should be present cause poweredByHeader is true in pagesRouter 10 10 expect(headers?.["x-powered-by"]).toBe("Next.js"); 11 11 expect(headers?.["x-opennext"]).toBe("1"); 12 + // This header should be defined cause we have set the `OPEN_NEXT_REQUEST_ID_HEADER` env variable in wrangler.jsonc 13 + expect(headers?.["x-opennext-requestid"]).not.toBeUndefined(); 12 14 });
+4 -1
examples/e2e/pages-router/wrangler.jsonc
··· 19 19 "binding": "WORKER_SELF_REFERENCE", 20 20 "service": "pages-router" 21 21 } 22 - ] 22 + ], 23 + "vars": { 24 + "OPEN_NEXT_REQUEST_ID_HEADER": "true" 25 + } 23 26 }