@@ -37,14 +37,40 @@ it('should work for subframe navigation request', async ({page, server}) => {
3737
3838it ( 'should work for fetch requests' , async ( { page, server} ) => {
3939 await page . goto ( server . EMPTY_PAGE ) ;
40- let requests = [ ] ;
40+ const requests = [ ] ;
4141 page . on ( 'request' , request => requests . push ( request ) ) ;
4242 await page . evaluate ( ( ) => fetch ( '/digits/1.png' ) ) ;
43- requests = requests . filter ( request => ! request . url ( ) . includes ( 'favicon' ) ) ;
4443 expect ( requests . length ) . toBe ( 1 ) ;
4544 expect ( requests [ 0 ] . frame ( ) ) . toBe ( page . mainFrame ( ) ) ;
4645} ) ;
4746
47+ it ( 'should work for a redirect' , async ( { page, server} ) => {
48+ server . setRedirect ( '/foo.html' , '/empty.html' ) ;
49+ const requests = [ ] ;
50+ page . on ( 'request' , request => requests . push ( request ) ) ;
51+ await page . goto ( server . PREFIX + '/foo.html' ) ;
52+
53+ expect ( requests . length ) . toBe ( 2 ) ;
54+ expect ( requests [ 0 ] . url ( ) ) . toBe ( server . PREFIX + '/foo.html' ) ;
55+ expect ( requests [ 1 ] . url ( ) ) . toBe ( server . PREFIX + '/empty.html' ) ;
56+ } ) ;
57+
58+ // https://github.com/microsoft/playwright/issues/3993
59+ it ( 'should not work for a redirect and interception' , async ( { page, server} ) => {
60+ server . setRedirect ( '/foo.html' , '/empty.html' ) ;
61+ const requests = [ ] ;
62+ await page . route ( '**' , route => {
63+ requests . push ( route . request ( ) ) ;
64+ route . continue ( ) ;
65+ } ) ;
66+ await page . goto ( server . PREFIX + '/foo.html' ) ;
67+
68+ expect ( page . url ( ) ) . toBe ( server . PREFIX + '/empty.html' ) ;
69+
70+ expect ( requests . length ) . toBe ( 1 ) ;
71+ expect ( requests [ 0 ] . url ( ) ) . toBe ( server . PREFIX + '/foo.html' ) ;
72+ } ) ;
73+
4874it ( 'should return headers' , async ( { page, server, isChromium, isFirefox, isWebKit} ) => {
4975 const response = await page . goto ( server . EMPTY_PAGE ) ;
5076 if ( isChromium )
0 commit comments