1
1
const utils = require ( '@lambdatest/sdk-utils' ) ;
2
2
const pkgName = require ( '../package.json' ) . name ;
3
3
const testType = 'js-selenium-driver' ;
4
+ const crypto = require ( 'crypto' ) ;
4
5
5
6
async function smartuiSnapshot ( driver , name , options = { } ) {
6
7
if ( ! driver ) throw new Error ( 'An instance of the selenium driver object is required.' ) ;
@@ -24,11 +25,25 @@ async function smartuiSnapshot(driver, name, options = {}) {
24
25
dom : SmartUIDOM . serialize ( options ) ,
25
26
url : document . URL
26
27
} ) , { } ) ;
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
+ }
32
47
} catch ( error ) {
33
48
log . error ( `SmartUI snapshot failed "${ name } "` ) ;
34
49
log . error ( error ) ;
0 commit comments