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,21 +23,37 @@ test("Middleware Rewrite", async ({ page }) => {
23
23
} ) ;
24
24
25
25
test ( "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
+ } ) ;
33
30
} ) ;
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 ) ;
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
} ) ;
0 commit comments