Skip to content

Commit 8d9db03

Browse files
authored
Merge pull request #63 from parthlambdatest/screenshot_addition
add support for capturing screenshot before dom and upload
2 parents de3eb57 + 2d84198 commit 8d9db03

File tree

2 files changed

+34
-2
lines changed

2 files changed

+34
-2
lines changed

packages/playwright/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@lambdatest/playwright-driver",
3-
"version": "1.0.6",
3+
"version": "1.0.7",
44
"description": "Playwright driver for all Lambdatest functionalities",
55
"main": "index.js",
66
"repository": {

packages/playwright/src/smartui.js

Lines changed: 33 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,38 @@ async function smartuiSnapshot(page, name, options = {}) {
99

1010
let log = utils.logger(pkgName);
1111
try {
12+
if (process.env.UPLOAD_SDK_SCREENSHOT) {
13+
try {
14+
const screenshotBuffer = await page.screenshot({ fullPage: true });
15+
const screenshotBlob = new Blob([screenshotBuffer], { type: 'image/png' });
16+
const form = new FormData();
17+
//screenshot name is name_uuid use snapshotUuid = uuidv4()
18+
const snapshotid = Math.floor(100000 + Math.random() * 900000);
19+
const screenshotName = `${name}_${snapshotid}`;
20+
form.append('screenshotName', screenshotName);
21+
form.append('uploadToS3Only', true);
22+
form.append('buildId', process.env.SMARTUI_BUILD_ID || '');
23+
form.append('screenshot', screenshotBlob, {
24+
filename: `${screenshotName.replace(/[^a-z0-9]/gi, '_')}.png`,
25+
contentType: 'image/png',
26+
});
27+
const uploadUrl = 'https://api.lambdatest.com/visualui/1.0/screenshot';
28+
let response;
29+
try {
30+
response = await fetch(uploadUrl, {
31+
method: 'POST',
32+
headers: {
33+
projectToken: process.env.PROJECT_TOKEN || '',
34+
},
35+
body: form,
36+
});
37+
} catch (uploadError) {
38+
log.info('Failed to upload sdk screenshot:', uploadError);
39+
}
40+
} catch (screenshotError) {
41+
log.info('Failed to capture sdk screenshot:', screenshotError);
42+
}
43+
}
1244
const resp = await utils.fetchDOMSerializer();
1345
await page.evaluate(resp.body.data.dom);
1446

@@ -27,7 +59,7 @@ async function smartuiSnapshot(page, name, options = {}) {
2759
log.info(`Snapshot captured: ${name}`);
2860
} catch (error) {
2961
log.error(`SmartUI snapshot failed "${name}"`);
30-
log.error(error);
62+
log.error(error);
3163
}
3264
}
3365

0 commit comments

Comments
 (0)