Skip to content

Commit 6ddcc50

Browse files
authored
Merge pull request #27 from pinanks/DOT-2310
Add env variable option for load event
2 parents e19a69c + a17953d commit 6ddcc50

File tree

2 files changed

+42
-37
lines changed

2 files changed

+42
-37
lines changed

src/lib/screenshot.ts

Lines changed: 40 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -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

src/tasks/captureScreenshots.ts

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,8 @@ export default (ctx: Context): ListrTask<Context, ListrRendererFactory, ListrRen
1313
let totalScreenshots = await captureScreenshots(ctx, screenshots);
1414
task.title = 'Screenshots captured successfully'
1515
task.output = chalk.gray(`total screenshots: ${totalScreenshots}`)
16-
} catch (error) {
17-
// log.debug(error)
18-
console.error(error);
16+
} catch (error: any) {
17+
task.output = chalk.gray(`${error.message}`);
1918
throw new Error('Capturing screenshots failed');
2019
}
2120
},

0 commit comments

Comments
 (0)