1- import { expect , test } from "@playwright/test" ;
1+ import { expect , test , Response as PwResponse } from "@playwright/test" ;
22import { validateMd5 } from "../../utils" ;
33
44/*
@@ -23,21 +23,37 @@ test("Middleware Rewrite", async ({ page }) => {
2323} ) ;
2424
2525test ( "Middleware Rewrite External Image" , async ( { page } ) => {
26- 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 ) ;
26+ let responsePromise = new Promise < PwResponse > ( ( resolve ) => {
27+ page . on ( "response" , async ( resp ) => {
28+ resolve ( resp ) ;
29+ } ) ;
3330 } ) ;
31+
32+ await page . goto ( "/rewrite-external" ) ;
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 ) ;
3441} ) ;
3542
3643test ( "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+
3755 await page . goto ( "/rewrite-status-code" ) ;
3856 const el = page . getByText ( "Rewritten Destination" , { exact : true } ) ;
3957 await expect ( el ) . toBeVisible ( ) ;
40- page . on ( "response" , async ( response ) => {
41- expect ( response . status ( ) ) . toBe ( 403 ) ;
42- } ) ;
58+ expect ( statusPromise ) . resolves . toEqual ( 403 ) ;
4359} ) ;
0 commit comments