@@ -154,25 +154,55 @@ export default async function processSnapshot(snapshot: Snapshot, ctx: Context):
154154 ctx . log . debug ( `Handling request ${ requestUrl } \n - skipping disallowed resource type [${ request . resourceType ( ) } ]` ) ;
155155 } else if ( ! ALLOWED_STATUSES . includes ( response . status ( ) ) ) {
156156 ctx . log . debug ( `${ globalViewport } Handling request ${ requestUrl } \n - skipping disallowed status [${ response . status ( ) } ]` ) ;
157- let data = {
158- statusCode : `${ response . status ( ) } ` ,
159- url : requestUrl ,
160- resourceType : request . resourceType ( ) ,
161- }
162-
163- if ( ! discoveryErrors . browsers [ globalBrowser ] ) {
164- discoveryErrors . browsers [ globalBrowser ] = { } ; }
165-
166- // Check if the discoveryErrors.browsers[globalBrowser] exists, and if not, initialize it
167- if ( discoveryErrors . browsers [ globalBrowser ] && ! discoveryErrors . browsers [ globalBrowser ] [ globalViewport ] ) {
168- discoveryErrors . browsers [ globalBrowser ] [ globalViewport ] = [ ] ;
169- }
170157
171- // Dynamically push the data into the correct browser and viewport
172- if ( discoveryErrors . browsers [ globalBrowser ] ) {
173- discoveryErrors . browsers [ globalBrowser ] [ globalViewport ] ?. push ( data ) ;
158+ if ( response && response . headers ( ) ) {
159+ const responseHeaders = response . headers ( ) ;
160+ ctx . log . debug ( `Response headers for ${ requestUrl } : ${ JSON . stringify ( responseHeaders , null , 2 ) } ` ) ;
174161 }
175162
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 retry ${ 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+ }
205+ }
176206 } else {
177207 ctx . log . debug ( `Handling request ${ requestUrl } \n - content-type ${ response . headers ( ) [ 'content-type' ] } ` ) ;
178208
0 commit comments