@@ -21,48 +21,54 @@ export async function captureScreenshots(ctx: Context, screenshots: WebStaticCon
2121 let browserName = ctx . config . browsers [ i ] ?. toLowerCase ( ) ;
2222 let browser : Browser ;
2323 let launchOptions : Record < string , any > = { headless : true } ;
24+ let pageOptions = { waitUntil : process . env . SMARTUI_PAGE_WAIT_UNTIL_EVENT || 'load' }
2425
25- switch ( browserName ) {
26- case BROWSER_CHROME :
27- browser = await chromium . launch ( launchOptions )
28- break ;
29- case BROWSER_SAFARI :
30- browser = await webkit . launch ( launchOptions )
31- break ;
32- case BROWSER_FIREFOX :
33- browser = await firefox . launch ( launchOptions )
34- break ;
35- case BROWSER_EDGE :
36- launchOptions . channel = EDGE_CHANNEL
37- browser = await chromium . launch ( launchOptions )
38- break ;
39- }
40- const context = await browser . newContext ( ) ;
26+ try {
27+ switch ( browserName ) {
28+ case BROWSER_CHROME :
29+ browser = await chromium . launch ( launchOptions )
30+ break ;
31+ case BROWSER_SAFARI :
32+ browser = await webkit . launch ( launchOptions )
33+ break ;
34+ case BROWSER_FIREFOX :
35+ browser = await firefox . launch ( launchOptions )
36+ break ;
37+ case BROWSER_EDGE :
38+ launchOptions . channel = EDGE_CHANNEL
39+ browser = await chromium . launch ( launchOptions )
40+ break ;
41+ }
42+ const context = await browser . newContext ( ) ;
4143
42- for ( let j = 0 ; j < totalScreenshots ; j ++ ) {
43- let screenshot = screenshots [ j ]
44- let screenshotId = screenshot . name . toLowerCase ( ) . replace ( / \s / g, '-' ) ;
44+ for ( let j = 0 ; j < totalScreenshots ; j ++ ) {
45+ let screenshot = screenshots [ j ]
46+ let screenshotId = screenshot . name . toLowerCase ( ) . replace ( / \s / g, '-' ) ;
4547
46- const page = await context . newPage ( ) ;
47- await page . goto ( screenshot . url ) ;
48- await page . waitForTimeout ( screenshot . waitForTimeout || 0 )
48+ const page = await context . newPage ( ) ;
49+ await page . goto ( screenshot . url , pageOptions ) ;
50+ await page . waitForTimeout ( screenshot . waitForTimeout || 0 )
4951
50- for ( let k = 0 ; k < totalViewports ; k ++ ) {
51- let { width, height } = ctx . config . viewports [ k ] ;
52- let ssName = `${ browserName } -${ width } x${ height } -${ screenshotId } .png`
53- let ssPath = `screenshots/${ screenshotId } /${ ssName } .png`
54- await page . setViewportSize ( { width, height} )
55- await page . screenshot ( { path : ssPath , fullPage : true } ) ;
52+ for ( let k = 0 ; k < totalViewports ; k ++ ) {
53+ let { width, height } = ctx . config . viewports [ k ] ;
54+ let ssName = `${ browserName } -${ width } x${ height } -${ screenshotId } .png`
55+ let ssPath = `screenshots/${ screenshotId } /${ ssName } .png`
56+ await page . setViewportSize ( { width, height} )
57+ await page . screenshot ( { path : ssPath , fullPage : true } ) ;
5658
57- let completed = ( i == ( totalBrowsers - 1 ) && j == ( totalScreenshots - 1 ) && k == ( totalViewports - 1 ) ) ? true : false ;
58- browserName = browserName === BROWSER_SAFARI ? PW_WEBKIT : browserName ;
59- ctx . client . uploadScreenshot ( ctx . build , ssPath , screenshot . name , browserName , `${ width } x${ height } ` , completed ) ;
59+ let completed = ( i == ( totalBrowsers - 1 ) && j == ( totalScreenshots - 1 ) && k == ( totalViewports - 1 ) ) ? true : false ;
60+ browserName = browserName === BROWSER_SAFARI ? PW_WEBKIT : browserName ;
61+ ctx . client . uploadScreenshot ( ctx . build , ssPath , screenshot . name , browserName , `${ width } x${ height } ` , completed ) ;
62+ }
63+
64+ await page . close ( ) ;
6065 }
6166
62- await page . close ( ) ;
67+ await browser . close ( ) ;
68+ } catch ( error ) {
69+ if ( browser ) await browser . close ( ) ;
70+ throw error ;
6371 }
64-
65- await browser . close ( ) ;
6672 }
6773
6874 return totalBrowsers * totalViewports * totalScreenshots
0 commit comments