@@ -387,3 +387,37 @@ it('should bypass disk cache when context interception is enabled', async ({ pag
387387 }
388388 }
389389} ) ;
390+
391+ it ( 'request.existingResponse should return null before response is received' , async ( { page, server } ) => {
392+ await page . goto ( server . EMPTY_PAGE ) ;
393+ let serverResponse = null ;
394+ server . setRoute ( '/get' , ( req , res ) => {
395+ serverResponse = res ;
396+ // Don't end the response yet
397+ } ) ;
398+
399+ const [ request ] = await Promise . all ( [
400+ page . waitForEvent ( 'request' ) ,
401+ server . waitForRequest ( '/get' ) ,
402+ page . evaluate ( ( ) => { void fetch ( './get' , { method : 'GET' } ) ; } ) ,
403+ ] ) ;
404+
405+ // Response hasn't been received yet
406+ expect ( request . existingResponse ( ) ) . toBe ( null ) ;
407+
408+ // Now send the response
409+ serverResponse . setHeader ( 'Content-Type' , 'text/plain; charset=utf-8' ) ;
410+ serverResponse . end ( 'done' ) ;
411+ await page . waitForEvent ( 'response' ) ;
412+
413+ // After response is received, existingResponse should return the response
414+ const existingResponse = request . existingResponse ( ) ;
415+ expect ( existingResponse ) . not . toBe ( null ) ;
416+ expect ( existingResponse . status ( ) ) . toBe ( 200 ) ;
417+ } ) ;
418+
419+ it ( 'request.existingResponse should return the response after it is received' , async ( { page, server } ) => {
420+ const response = await page . goto ( server . EMPTY_PAGE ) ;
421+ const request = response . request ( ) ;
422+ expect ( request . existingResponse ( ) ) . toBe ( response ) ;
423+ } ) ;
0 commit comments