File tree Expand file tree Collapse file tree 6 files changed +165
-0
lines changed Expand file tree Collapse file tree 6 files changed +165
-0
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.0" ,
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 , snapshotName , options ) {
6+ if ( ! page ) throw new Error ( 'A Playwright `page` object is required.' ) ;
7+ if ( ! snapshotName ) throw new Error ( 'The `name` argument is required.' ) ;
8+ if ( ! ( await utils . isSmartUIRunning ( ) ) ) throw new Error ( 'SmartUI server is not running.' ) ;
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+ await utils . postSnapshot ( {
26+ dom : dom . html ,
27+ url : page . url ( ) ,
28+ name : snapshotName ,
29+ options
30+ } , pkgName ) ;
31+
32+ log . info ( `Snapshot captured: ${ snapshotName } ` ) ;
33+ } catch ( err ) {
34+ throw err ;
35+ }
36+ }
37+
38+ module . exports = {
39+ smartuiSnapshot
40+ }
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/testcafe-driver" ,
3+ "version" : " 1.0.0" ,
4+ "description" : " Testcafe SDK for LambdaTest smart UI" ,
5+ "repository" : {
6+ "type" : " git" ,
7+ "url" : " git+https://github.com/LambdaTest/lambdatest-js-sdk.git" ,
8+ "directory" : " packages/testcafe"
9+ },
10+ "main" : " index.js" ,
11+ "scripts" : {
12+ "test" : " echo \" Error: no test specified\" && exit 1"
13+ },
14+ "keywords" : [
15+ " lambdatest" ,
16+ " testcafe" ,
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+
25+ "homepage" : " https://github.com/LambdaTest/lambdatest-js-sdk#readme" ,
26+ "devDependencies" : {
27+ "testcafe" : " ^3.4.0"
28+ },
29+ "peerDependencies" : {
30+ "testcafe" : " >=1"
31+ },
32+ "dependencies" : {
33+ "@lambdatest/sdk-utils" : " workspace:^"
34+ }
35+ }
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+ async function smartuiSnapshot ( t , snapshotName , options ) {
5+ if ( ! t ) throw new Error ( "The test function's `t` argument is required." ) ;
6+ if ( ! snapshotName ) throw new Error ( 'The `name` argument is required.' ) ;
7+ if ( ! ( await utils . isSmartUIRunning ( ) ) ) throw new Error ( 'SmartUI server is not running.' ) ;
8+
9+ let log = utils . logger ( pkgName ) ;
10+
11+ try {
12+ // Inject the DOM serialization script
13+ /* eslint-disable-next-line no-new-func */
14+ const resp = await utils . fetchDOMSerializer ( ) ;
15+
16+ await t . eval ( new Function ( resp . body . data . dom ) , { boundTestRun : t } ) ;
17+
18+ // Serialize and capture the DOM
19+ /* istanbul ignore next: no instrumenting injected code */
20+ let { dom, url } = await t . eval ( ( options ) => ( {
21+ /* eslint-disable-next-line no-undef */
22+ dom : SmartUIDOM . serialize ( options ) ,
23+ url : window . location . href || document . URL ,
24+ } ) , { boundTestRun : t , dependencies : { } } ) ;
25+
26+ await utils . postSnapshot ( {
27+ dom : dom ,
28+ url,
29+ name : snapshotName ,
30+ options
31+ } , pkgName ) ;
32+
33+ log . info ( `Snapshot captured: ${ snapshotName } ` ) ;
34+ } catch ( error ) {
35+ // Handle errors
36+ throw error ;
37+ }
38+ }
39+
40+ module . exports = {
41+ smartuiSnapshot
42+ }
You can’t perform that action at this time.
0 commit comments