@@ -159,25 +159,52 @@ export default async function processSnapshot(snapshot: Snapshot, ctx: Context):
159159                    const  responseHeaders  =  response . headers ( ) ; 
160160                    ctx . log . debug ( `Response headers for ${ requestUrl }  : ${ JSON . stringify ( responseHeaders ,  null ,  2 ) }  ` ) ; 
161161                } 
162-                 let  data  =  { 
163-                     statusCode : `${ response . status ( ) }  ` , 
164-                     url : requestUrl , 
165-                     resourceType : request . resourceType ( ) , 
166-                 }  
167- 
168-                 if  ( ! discoveryErrors . browsers [ globalBrowser ] ) { 
169-                     discoveryErrors . browsers [ globalBrowser ]  =  { } ;                 } 
170- 
171-                 // Check if the discoveryErrors.browsers[globalBrowser] exists, and if not, initialize it 
172-                 if  ( discoveryErrors . browsers [ globalBrowser ]  &&  ! discoveryErrors . browsers [ globalBrowser ] [ globalViewport ] )  { 
173-                     discoveryErrors . browsers [ globalBrowser ] [ globalViewport ]  =  [ ] ; 
174-                 } 
175162
176-                 // Dynamically push the data into the correct browser and viewport 
177-                 if  ( discoveryErrors . browsers [ globalBrowser ] )  { 
178-                     discoveryErrors . browsers [ globalBrowser ] [ globalViewport ] ?. push ( data ) ; 
163+                 let  responseOfRetry ,  bodyOfRetry 
164+                 ctx . log . debug ( `Resource had a disallowed status ${ requestUrl }   fetching from server again` ) ; 
165+                 responseOfRetry  =  await  page . request . fetch ( request ,  requestOptions ) ; 
166+                 bodyOfRetry  =  await  responseOfRetry . body ( ) ; 
167+ 
168+                 if  ( responseOfRetry  &&  responseOfRetry . status ( )  &&  ALLOWED_STATUSES . includes ( responseOfRetry . status ( ) ) )  { 
169+                     ctx . log . debug ( `Handling request after retry ${ requestUrl }  \n - content-type ${ responseOfRetry . headers ( ) [ 'content-type' ] }  ` ) ; 
170+                     cache [ requestUrl ]  =  { 
171+                         body : bodyOfRetry . toString ( 'base64' ) , 
172+                         type : responseOfRetry . headers ( ) [ 'content-type' ] 
173+                     } 
174+                     route . fulfill ( { 
175+                         status : responseOfRetry . status ( ) , 
176+                         headers : responseOfRetry . headers ( ) , 
177+                         body : bodyOfRetry , 
178+                     } ) ; 
179+                 }  else  { 
180+                     ctx . log . debug ( `Resource had a disallowed status for retry as well  ${ requestUrl }   disallowed status [${ responseOfRetry . status ( ) }  ]` ) ; 
181+                     if  ( responseOfRetry  &&  responseOfRetry . headers ( ) )  { 
182+                         const  responseHeadersRetry  =  responseOfRetry . headers ( ) ; 
183+                         ctx . log . debug ( `Response headers for ${ requestUrl }  : ${ JSON . stringify ( responseHeadersRetry ,  null ,  2 ) }  ` ) ; 
184+                     } 
185+ 
186+                     let  data  =  { 
187+                         statusCode : `${ responseOfRetry . status ( ) }  ` , 
188+                         url : requestUrl , 
189+                         resourceType : request . resourceType ( ) , 
190+                     }  
191+     
192+                     if  ( ! discoveryErrors . browsers [ globalBrowser ] ) { 
193+                         discoveryErrors . browsers [ globalBrowser ]  =  { } ;                 
194+                     } 
195+     
196+                     // Check if the discoveryErrors.browsers[globalBrowser] exists, and if not, initialize it 
197+                     if  ( discoveryErrors . browsers [ globalBrowser ]  &&  ! discoveryErrors . browsers [ globalBrowser ] [ globalViewport ] )  { 
198+                         discoveryErrors . browsers [ globalBrowser ] [ globalViewport ]  =  [ ] ; 
199+                     } 
200+     
201+                     // Dynamically push the data into the correct browser and viewport 
202+                     if  ( discoveryErrors . browsers [ globalBrowser ] )  { 
203+                         discoveryErrors . browsers [ globalBrowser ] [ globalViewport ] ?. push ( data ) ; 
204+                     } 
179205                } 
180206
207+ 
181208            }  else  { 
182209                ctx . log . debug ( `Handling request ${ requestUrl }  \n - content-type ${ response . headers ( ) [ 'content-type' ] }  ` ) ; 
183210
0 commit comments