|
1 | | -import utils from '@lambdatest/sdk-utils' |
2 | | -import { getPackageName } from './utils.js'; |
3 | | -const pkgName = getPackageName() |
| 1 | +const utils = require('@lambdatest/sdk-utils'); |
| 2 | +const pkgName = require('../package.json').name; |
4 | 3 |
|
5 | | -export async function smartuiSnapshot(driver, snapshotName) { |
| 4 | +async function smartuiSnapshot(driver, name, options = {}) { |
6 | 5 | // TODO: check if driver is selenium webdriver object |
7 | 6 | if (!driver) throw new Error('An instance of the selenium driver object is required.'); |
8 | | - if (!snapshotName) throw new Error('The `snapshotName` argument is required.'); |
| 7 | + if (!name) throw new Error('The `name` argument is required.'); |
9 | 8 | if (!(await utils.isSmartUIRunning())) throw new Error('SmartUI server is not running.'); |
10 | 9 | let log = utils.logger(pkgName); |
11 | 10 |
|
12 | 11 | try { |
13 | 12 | let resp = await utils.fetchDOMSerializer(); |
14 | 13 | await driver.executeScript(resp.body.data.dom); |
15 | 14 |
|
16 | | - let { dom } = await driver.executeScript(options => ({ |
17 | | - dom: SmartUIDOM.serialize(options) |
| 15 | + let { dom, url } = await driver.executeScript(options => ({ |
| 16 | + dom: SmartUIDOM.serialize(options), |
| 17 | + url: document.URL |
18 | 18 | }), {}); |
19 | 19 |
|
20 | | - await utils.postSnapshot(dom.html, snapshotName, pkgName); |
21 | | - log.info(`Snapshot captured: ${snapshotName}`); |
| 20 | + let { body } = await utils.postSnapshot({url, name, dom, options}, pkgName); |
| 21 | + log.info(`Snapshot captured: ${name}`); |
| 22 | + if (body && body.data && body.data.warnings?.length !== 0) body.data.warnings.map(e => log.warn(e)); |
22 | 23 | } catch (error) { |
23 | 24 | throw new Error(error); |
24 | 25 | } |
25 | 26 | } |
| 27 | + |
| 28 | +module.exports = { |
| 29 | + smartuiSnapshot |
| 30 | +} |
0 commit comments