···11+export const dynamic = "force-static";
22+33+export default function Page() {
44+ return (
55+ <div>
66+ <strong>This is a static page</strong>
77+ </div>
88+ );
99+}
+11
examples/e2e/app-pages-router/e2e/headers.test.ts
···11+import { expect, test } from "@playwright/test";
22+33+test("does not set x-opennext-requestid header on cache interceptor response", async ({ page }) => {
44+ const result = await page.goto("/ssg");
55+ expect(result).toBeDefined();
66+ expect(result?.status()).toBe(200);
77+ const headers = result?.headers();
88+99+ // This header should not be defined even when its a cached response from the cache interception in the external middleware
1010+ expect(headers?.["x-opennext-requestid"]).toBeUndefined();
1111+});
···11-import { expect, test } from "@playwright/test";
11+import { expect, test, Response as PwResponse } from "@playwright/test";
22import { validateMd5 } from "../../utils";
3344/*
···2323});
24242525test("Middleware Rewrite External Image", async ({ page }) => {
2626+ let responsePromise = new Promise<PwResponse>((resolve) => {
2727+ page.on("response", async (resp) => {
2828+ resolve(resp);
2929+ });
3030+ });
3131+2632 await page.goto("/rewrite-external");
2727- page.on("response", async (response) => {
2828- expect(response.status()).toBe(200);
2929- expect(response.headers()["content-type"]).toBe("image/png");
3030- expect(response.headers()["cache-control"]).toBe("max-age=600");
3131- const bodyBuffer = await response.body();
3232- expect(validateMd5(bodyBuffer, OPENNEXT_PNG_MD5)).toBe(true);
3333- });
3333+3434+ const response = await responsePromise;
3535+3636+ expect(response.status()).toBe(200);
3737+ expect(response.headers()["content-type"]).toBe("image/png");
3838+ expect(response.headers()["cache-control"]).toBe("max-age=600");
3939+ const bodyBuffer = await response.body();
4040+ expect(validateMd5(bodyBuffer, OPENNEXT_PNG_MD5)).toBe(true);
3441});
35423643test("Middleware Rewrite Status Code", async ({ page }) => {
4444+ // Need to set up the event before navigating to the page to avoid missing it
4545+ // We need to check the URL here also cause there will be multiple responses (i.e the fonts, css, js, etc)
4646+ const statusPromise = new Promise<number>((resolve) => {
4747+ page.on("response", async (response) => {
4848+ // `response.url()` will be the full URL including the host, so we need to check the pathname
4949+ if (new URL(response.url()).pathname === "/rewrite-status-code") {
5050+ resolve(response.status());
5151+ }
5252+ });
5353+ });
5454+3755 await page.goto("/rewrite-status-code");
3856 const el = page.getByText("Rewritten Destination", { exact: true });
3957 await expect(el).toBeVisible();
4040- page.on("response", async (response) => {
4141- expect(response.status()).toBe(403);
4242- });
5858+ expect(statusPromise).resolves.toEqual(403);
4359});
+2
examples/e2e/pages-router/e2e/header.test.ts
···99 // Both these headers should be present cause poweredByHeader is true in pagesRouter
1010 expect(headers?.["x-powered-by"]).toBe("Next.js");
1111 expect(headers?.["x-opennext"]).toBe("1");
1212+ // This header should be defined cause we have set the `OPEN_NEXT_REQUEST_ID_HEADER` env variable in wrangler.jsonc
1313+ expect(headers?.["x-opennext-requestid"]).not.toBeUndefined();
1214});