11const utils = require ( '@lambdatest/sdk-utils' ) ;
22const pkgName = require ( '../package.json' ) . name ;
3+ const testType = 'js-playwright-driver' ;
34
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.' ) ;
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.' ) ;
99
10- let log = utils . logger ( pkgName ) ;
10+ let log = utils . logger ( pkgName ) ;
11+ try {
12+ const resp = await utils . fetchDOMSerializer ( ) ;
13+ await page . evaluate ( resp . body . data . dom ) ;
1114
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- } ) , { } ) ;
15+ let { dom } = await page . evaluate ( ( options ) => ( {
16+ dom : SmartUIDOM . serialize ( options )
17+ } ) , { } ) ;
2318
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 ) ;
19+ let { body } = await utils . postSnapshot ( {
20+ dom ,
21+ url : page . url ( ) ,
22+ name ,
23+ options
24+ } , testType ) ;
25+ if ( body && body . data && body . data . warnings ?. length !== 0 ) body . data . warnings . map ( e => log . warn ( e ) ) ;
3126
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- }
27+ log . info ( `Snapshot captured: ${ name } ` ) ;
28+ } catch ( error ) {
29+ log . error ( `SmartUI snapshot failed "${ name } "` ) ;
30+ log . error ( error ) ;
31+ }
3832}
3933
4034module . exports = {
41- smartuiSnapshot
42- }
35+ smartuiSnapshot
36+ }
0 commit comments