11const utils = require ( '@lambdatest/sdk-utils' ) ;
22const pkgName = require ( '../package.json' ) . name ;
33const testType = 'js-selenium-driver' ;
4+ const crypto = require ( 'crypto' ) ;
45
56async function smartuiSnapshot ( driver , name , options = { } ) {
67 if ( ! driver ) throw new Error ( 'An instance of the selenium driver object is required.' ) ;
@@ -24,11 +25,25 @@ async function smartuiSnapshot(driver, name, options = {}) {
2425 dom : SmartUIDOM . serialize ( options ) ,
2526 url : document . URL
2627 } ) , { } ) ;
27-
28- let { body } = await utils . postSnapshot ( { url, name, dom, options} , pkgName ) ;
29- if ( body && body . data && body . data . warnings ?. length !== 0 ) body . data . warnings . map ( e => log . warn ( e ) ) ;
30-
31- log . info ( `Snapshot captured: ${ name } ` ) ;
28+
29+ if ( options ?. sync ) {
30+ options . contextId = crypto . randomUUID ( ) ;
31+ let { body } = await utils . postSnapshot ( { url, name, dom, options} , pkgName ) ;
32+ if ( body && body . data && body . data . warnings ?. length !== 0 ) body . data . warnings . map ( e => log . warn ( e ) ) ;
33+ log . info ( `Snapshot captured: ${ name } ` ) ;
34+ let timeout = options ?. timeout || 600 ;
35+ if ( timeout < 30 || timeout > 900 ) {
36+ log . info ( `Timeout value must be between 30 and 900 seconds. Using default value of 600 seconds.` ) ;
37+ timeout = 600 ;
38+ }
39+ let snapshotStatus = await utils . getSnapshotStatus ( options . contextId , name , timeout ) ;
40+ return snapshotStatus . body ;
41+ }
42+ else {
43+ let { body } = await utils . postSnapshot ( { url, name, dom, options} , pkgName ) ;
44+ if ( body && body . data && body . data . warnings ?. length !== 0 ) body . data . warnings . map ( e => log . warn ( e ) ) ;
45+ log . info ( `Snapshot captured: ${ name } ` ) ;
46+ }
3247 } catch ( error ) {
3348 log . error ( `SmartUI snapshot failed "${ name } "` ) ;
3449 log . error ( error ) ;
0 commit comments