Skip to content

Commit 57f4dc5

Browse files
committed
Fixes
* Fix typo for cssSelector in snapshot options * Throw error if element not found for given selector
1 parent 2dbdd55 commit 57f4dc5

File tree

2 files changed

+10
-5
lines changed

2 files changed

+10
-5
lines changed

src/lib/processSnapshot.ts

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,6 @@ export default async (snapshot: Snapshot, ctx: Context): Promise<ProcessedSnapsh
1212

1313
if ((options.ignoreDOM && Object.keys(options.ignoreDOM).length !== 0) || (options.selectDOM && Object.keys(options.selectDOM).length !== 0)) {
1414
if (!ctx.browser) ctx.browser = await chromium.launch({ headless: true });
15-
const page = await ctx.browser.newPage();
16-
await page.setContent(snapshot.dom.html);
1715

1816
let ignoreOrSelectDOM: string;
1917
let ignoreOrSelectBoxes: string;
@@ -39,21 +37,27 @@ export default async (snapshot: Snapshot, ctx: Context): Promise<ProcessedSnapsh
3937
case 'xpath':
4038
selectors.push(...value.map(e => 'xpath=' + e));
4139
break;
42-
case 'cssSelectors':
40+
case 'cssSelector':
4341
selectors.push(...value);
4442
break;
4543
}
4644
}
4745

4846
for (const vp of ctx.webConfig.viewports) {
49-
await page.setViewportSize({ width: vp.width, height: vp.height || MIN_VIEWPORT_HEIGHT});
47+
const page = await ctx.browser.newPage({ viewport: { width: vp.width, height: vp.height || MIN_VIEWPORT_HEIGHT}});
48+
await page.setContent(snapshot.dom.html);
49+
5050
let viewport: string = `${vp.width}${vp.height ? 'x'+vp.height : ''}`;
5151
if (!Array.isArray(processedOptions[ignoreOrSelectBoxes][viewport])) processedOptions[ignoreOrSelectBoxes][viewport] = []
5252

5353
let locators: Array<Locator> = [];
5454
let boxes: Array<Record<string, number>> = [];
5555
for (const selector of selectors) {
5656
let l = await page.locator(selector).all()
57+
if (l.length === 0) {
58+
await page.close();
59+
throw new Error(`no element found for selector ${selector}`);
60+
}
5761
locators.push(...l);
5862
}
5963
for (const locator of locators) {
@@ -67,6 +71,7 @@ export default async (snapshot: Snapshot, ctx: Context): Promise<ProcessedSnapsh
6771
}
6872

6973
processedOptions[ignoreOrSelectBoxes][viewport].push(...boxes);
74+
await page.close();
7075
}
7176
}
7277
}

src/lib/server.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ export default async (ctx: Context): Promise<FastifyInstance<Server, IncomingMes
3030
let processedSnapshot = await processSnapshot(snapshot, ctx);
3131
await ctx.client.uploadSnapshot(ctx.build.id, processedSnapshot, testType, ctx.log)
3232
} catch (error: any) {
33-
reply.code(500).send({ error: { message: error.message}})
33+
return reply.code(500).send({ error: { message: error.message}});
3434
}
3535

3636
ctx.totalSnapshots++

0 commit comments

Comments
 (0)