File tree Expand file tree Collapse file tree 13 files changed +252
-5
lines changed Expand file tree Collapse file tree 13 files changed +252
-5
lines changed Original file line number Diff line number Diff line change
1
+ const { smartuiSnapshot } = require ( './src/smartui' ) ;
2
+
3
+ module . exports = {
4
+ smartuiSnapshot
5
+ }
Original file line number Diff line number Diff line change
1
+ {
2
+ "name" : " @lambdatest/playwright-driver" ,
3
+ "version" : " 1.0.3" ,
4
+ "description" : " Playwright SDK for smart UI" ,
5
+ "main" : " index.js" ,
6
+ "scripts" : {
7
+ "test" : " echo \" Error: no test specified\" && exit 1"
8
+ },
9
+ "repository" : {
10
+ "type" : " git" ,
11
+ "url" : " git+https://github.com/LambdaTest/lambdatest-js-sdk.git" ,
12
+ "directory" : " packages/playwright"
13
+ },
14
+ "keywords" : [
15
+ " lambdatest" ,
16
+ " playwright" ,
17
+ " smartui"
18
+ ],
19
+ "author" :
" LambdaTest <[email protected] >" ,
20
+ "license" : " MIT" ,
21
+ "bugs" : {
22
+ "url" : " https://github.com/LambdaTest/lambdatest-js-sdk/issues"
23
+ },
24
+ "homepage" : " https://github.com/LambdaTest/lambdatest-js-sdk#readme" ,
25
+
26
+ "peerDependencies" : {
27
+ "playwright-core" : " >=1"
28
+ },
29
+ "devDependencies" : {
30
+ "@playwright/test" : " ^1.24.2" ,
31
+ "playwright" : " ^1.24.2"
32
+ },
33
+ "dependencies" : {
34
+ "@lambdatest/sdk-utils" : " workspace:^"
35
+ }
36
+
37
+ }
38
+
Original file line number Diff line number Diff line change
1
+ const utils = require ( '@lambdatest/sdk-utils' ) ;
2
+ const pkgName = require ( '../package.json' ) . name ;
3
+
4
+ // Take a DOM snapshot and post it to the snapshot endpoint
5
+ async function smartuiSnapshot ( page , name , options ) {
6
+ if ( ! page ) throw new Error ( 'A Playwright `page` object is required.' ) ;
7
+ if ( ! name || typeof name !== 'string' ) throw new Error ( 'The `name` argument is required.' ) ;
8
+ if ( ! ( await utils . isSmartUIRunning ( ) ) ) throw new Error ( 'Cannot find SmartUI server.' ) ;
9
+
10
+ let log = utils . logger ( pkgName ) ;
11
+
12
+ try {
13
+ // Inject the DOM serialization script
14
+ const resp = await utils . fetchDOMSerializer ( ) ;
15
+ await page . evaluate ( resp . body . data . dom ) ;
16
+
17
+ // Serialize and capture the DOM
18
+ /* istanbul ignore next: no instrumenting injected code */
19
+ let { dom } = await page . evaluate ( ( options ) => ( {
20
+ /* eslint-disable-next-line no-undef */
21
+ dom : SmartUIDOM . serialize ( options )
22
+ } ) , { } ) ;
23
+
24
+ // Post the DOM to the snapshot endpoint with snapshot options and other info
25
+ let { body } = await utils . postSnapshot ( {
26
+ dom,
27
+ url : page . url ( ) ,
28
+ name,
29
+ options
30
+ } , pkgName ) ;
31
+
32
+ log . info ( `Snapshot captured: ${ name } ` ) ;
33
+
34
+ if ( body && body . data && body . data . warnings ?. length !== 0 ) body . data . warnings . map ( e => log . warn ( e ) ) ;
35
+ } catch ( err ) {
36
+ throw err ;
37
+ }
38
+ }
39
+
40
+ module . exports = {
41
+ smartuiSnapshot
42
+ }
Original file line number Diff line number Diff line change
1
+ const { smartuiSnapshot } = require ( './src/smartui' ) ;
2
+
3
+ module . exports = {
4
+ smartuiSnapshot
5
+ }
Original file line number Diff line number Diff line change
1
+ {
2
+ "name" : " @lambdatest/puppeteer-driver" ,
3
+ "version" : " 1.0.3" ,
4
+ "description" : " Puppeteer SDK for smart UI" ,
5
+ "main" : " index.js" ,
6
+ "scripts" : {
7
+ "test" : " echo \" Error: no test specified\" && exit 1"
8
+ },
9
+ "repository" : {
10
+ "type" : " git" ,
11
+ "url" : " git+https://github.com/LambdaTest/lambdatest-js-sdk.git" ,
12
+ "directory" : " packages/puppeteer"
13
+ },
14
+ "keywords" : [
15
+ " lambdatest" ,
16
+ " puppeteer" ,
17
+ " smartui"
18
+ ],
19
+ "author" :
" LambdaTest <[email protected] >" ,
20
+ "license" : " MIT" ,
21
+ "bugs" : {
22
+ "url" : " https://github.com/LambdaTest/lambdatest-js-sdk/issues"
23
+ },
24
+ "homepage" : " https://github.com/LambdaTest/lambdatest-js-sdk#readme" ,
25
+ "dependencies" : {
26
+ "@lambdatest/sdk-utils" : " workspace:^"
27
+ }
28
+ }
Original file line number Diff line number Diff line change
1
+ const utils = require ( '@lambdatest/sdk-utils' ) ;
2
+ const pkgName = require ( '../package.json' ) . name ;
3
+
4
+
5
+ async function smartuiSnapshot ( page , name , options = { } ) {
6
+ if ( ! page ) throw new Error ( 'puppeteer `page` argument is required.' ) ;
7
+ if ( ! name || typeof name !== 'string' ) throw new Error ( 'The `name` argument is required.' ) ;
8
+ if ( ! ( await utils . isSmartUIRunning ( ) ) ) throw new Error ( 'Cannot find SmartUI server.' ) ;
9
+
10
+ let log = utils . logger ( pkgName ) ;
11
+
12
+ try {
13
+ // Fetch the DOM serializer from the SmartUI server.
14
+ let resp = await utils . fetchDOMSerializer ( ) ;
15
+
16
+ // Inject the DOM serializer into the page.
17
+ await page . evaluate ( resp . body . data . dom ) ;
18
+
19
+ // Serialize the DOM
20
+ let { dom, url } = await page . evaluate ( options => ( {
21
+ dom : SmartUIDOM . serialize ( options ) ,
22
+ url : document . URL
23
+ } ) , { } ) ;
24
+
25
+
26
+ // Post it to the SmartUI server.
27
+ let { body } = await utils . postSnapshot ( {
28
+ dom,
29
+ url,
30
+ name,
31
+ options
32
+ } , pkgName ) ;
33
+
34
+ log . info ( `Snapshot captured: ${ name } ` ) ;
35
+
36
+ if ( body && body . data && body . data . warnings ?. length !== 0 ) body . data . warnings . map ( e => log . warn ( e ) ) ;
37
+ } catch ( error ) {
38
+ throw new Error ( error ) ;
39
+ }
40
+ }
41
+
42
+ module . exports = {
43
+ smartuiSnapshot
44
+ } ;
Original file line number Diff line number Diff line change 1
1
{
2
2
"name" : " @lambdatest/sdk-utils" ,
3
- "version" : " 1.0.2 " ,
3
+ "version" : " 1.0.3 " ,
4
4
"description" : " " ,
5
5
"main" : " index.js" ,
6
6
"repository" : {
Original file line number Diff line number Diff line change 1
1
function getSmartUIServerAddress ( ) {
2
- return process . env . SMARTUI_SERVER_ADDRESS || 'http://localhost:8080'
2
+ if ( ! process . env . SMARTUI_SERVER_ADDRESS ) throw new Error ( 'SmartUI server address not found' ) ;
3
+ return process . env . SMARTUI_SERVER_ADDRESS
3
4
}
4
5
5
6
module . exports = {
Original file line number Diff line number Diff line change 1
1
{
2
2
"name" : " @lambdatest/selenium-driver" ,
3
- "version" : " 1.0.2 " ,
3
+ "version" : " 1.0.3 " ,
4
4
"description" : " Selenium driver for all Lambdatest functionalities" ,
5
5
"main" : " index.js" ,
6
6
"repository" : {
Original file line number Diff line number Diff line change @@ -4,8 +4,8 @@ const pkgName = require('../package.json').name;
4
4
async function smartuiSnapshot ( driver , name , options = { } ) {
5
5
// TODO: check if driver is selenium webdriver object
6
6
if ( ! driver ) throw new Error ( 'An instance of the selenium driver object is required.' ) ;
7
- if ( ! name ) throw new Error ( 'The `name` argument is required.' ) ;
8
- if ( ! ( await utils . isSmartUIRunning ( ) ) ) throw new Error ( 'SmartUI server is not running .' ) ;
7
+ if ( ! name || typeof name !== 'string' ) throw new Error ( 'The `name` argument is required.' ) ;
8
+ if ( ! ( await utils . isSmartUIRunning ( ) ) ) throw new Error ( 'Cannot find SmartUI server .' ) ;
9
9
let log = utils . logger ( pkgName ) ;
10
10
11
11
try {
You can’t perform that action at this time.
0 commit comments