@@ -106,44 +106,45 @@ function _validateInteger(value) {
106106 }
107107 }
108108
109- puppeteer
110- . launch ( {
111- devtools : false ,
112- args : [ "--no-sandbox" , "--disable-setuid-sandbox" , "--single-process" ] ,
113- ignoreHTTPSErrors : true ,
114- } )
115- . then ( async function ( browser ) {
116- const MAX_WAITING_TIME_ACCESS_URL = 5000 ;
117-
118- const page = await browser . newPage ( ) ;
119- await page . setViewport ( viewportOptions ) ;
120- await page . goto ( options . url , { waitUntil : "networkidle2" } ) ;
121-
122- if ( new URL ( options . url ) . pathname . startsWith ( "/go/" ) ) {
123- console . log ( "Waiting for response" ) ;
124- let responseEventOccurred = false ;
125- const responseHandler = ( _event ) => ( responseEventOccurred = true ) ;
126-
127- const responseWatcher = new Promise ( function ( resolve , _reject ) {
128- setTimeout ( ( ) => {
129- if ( ! responseEventOccurred ) {
130- resolve ( ) ;
131- } else {
132- setTimeout ( ( ) => resolve ( ) , MAX_WAITING_TIME_ACCESS_URL ) ;
133- }
134- } , 500 ) ;
135- } ) ;
136-
137- page . on ( "response" , responseHandler ) ;
138-
139- await Promise . race ( [ responseWatcher , page . waitForNavigation ( ) ] ) ;
140- }
141-
142- await page . focus ( "body" ) ;
143- await page . screenshot ( screenshotOptions ) ;
144-
145- await page . close ( ) ;
146- await browser . close ( ) ;
147- process . stdout . write ( screenshotOptions . path ) ;
148- } ) ;
109+ const browser = await puppeteer . launch ( {
110+ devtools : false ,
111+ args : [ "--no-sandbox" , "--disable-setuid-sandbox" , "--single-process" ] ,
112+ ignoreHTTPSErrors : true ,
113+ } ) ;
114+
115+ try {
116+ const page = await browser . newPage ( ) ;
117+ await page . setViewport ( viewportOptions ) ;
118+ await page . goto ( options . url , { waitUntil : "networkidle2" } ) ;
119+
120+ if ( new URL ( options . url ) . pathname . startsWith ( "/go/" ) ) {
121+ console . log ( "Waiting for response" ) ;
122+ let responseEventOccurred = false ;
123+ const responseHandler = ( _event ) => ( responseEventOccurred = true ) ;
124+
125+ const responseWatcher = new Promise ( function ( resolve , _reject ) {
126+ setTimeout ( ( ) => {
127+ if ( ! responseEventOccurred ) {
128+ resolve ( ) ;
129+ } else {
130+ setTimeout ( ( ) => resolve ( ) , 5000 ) ;
131+ }
132+ } , 500 ) ;
133+ } ) ;
134+
135+ page . on ( "response" , responseHandler ) ;
136+
137+ await Promise . race ( [ responseWatcher , page . waitForNavigation ( ) ] ) ;
138+ }
139+
140+ await page . focus ( "body" ) ;
141+ await page . screenshot ( screenshotOptions ) ;
142+ process . stdout . write ( screenshotOptions . path ) ;
143+
144+ await page . close ( ) ;
145+ } catch ( e ) {
146+ console . error ( e ) ;
147+ } finally {
148+ await browser . close ( ) ;
149+ }
149150} ) ( ) ;
0 commit comments