11const constants = require ( "../constants" ) ;
22const request = require ( "request" ) ;
3+ const builds = require ( "./build" ) ;
34//const poller=require("./poller.js")
45
56function get_completed_build_info ( lt_config , session_id , env ) {
@@ -38,7 +39,7 @@ function get_build_info(lt_config, session_id, env, update_status, callback) {
3839 password : lt_config [ "lambdatest_auth" ] [ "access_key" ] ,
3940 } ,
4041 } ,
41- ( err , res , body ) => {
42+ async ( err , res , body ) => {
4243 if ( err ) {
4344 //reject(err);
4445 update_status ( false ) ;
@@ -54,7 +55,13 @@ function get_build_info(lt_config, session_id, env, update_status, callback) {
5455 update_status ( false ) ;
5556 return callback ( null , JSON . parse ( body ) ) ;
5657 }
57- //console.log(resp)
58+ //Stop the tests if stop on failure is enabled and we get an errored/failed/lambda errored test
59+ if ( lt_config . run_settings . stop_on_failure == true ) {
60+ let response = await get_error_state ( lt_config , session_id , env ) ;
61+ if ( response . count > 0 ) {
62+ await builds . stop_cypress_session ( lt_config , session_id , env ) ;
63+ }
64+ }
5865 return setTimeout ( callback , 5000 , null ) ;
5966 } else {
6067 update_status ( false ) ;
@@ -64,6 +71,39 @@ function get_build_info(lt_config, session_id, env, update_status, callback) {
6471 ) ;
6572}
6673
74+ function get_error_state ( lt_config , session_id , env ) {
75+ return new Promise ( function ( resolve , reject ) {
76+ request (
77+ constants [ env ] . SESSION_URL + session_id + constants . BUILD_ERROR_STATES ,
78+ {
79+ auth : {
80+ username : lt_config [ "lambdatest_auth" ] [ "username" ] ,
81+ password : lt_config [ "lambdatest_auth" ] [ "access_key" ] ,
82+ } ,
83+ } ,
84+ ( err , res , body ) => {
85+ let response = { err : null , res_code : null , count : 0 } ;
86+ if ( err ) {
87+ console . log ( err ) ;
88+ response . err = err ;
89+ response . res_code = 500 ;
90+ resolve ( response ) ;
91+ }
92+ response . res_code = res . statusCode ;
93+ if ( res . statusCode == "401" ) {
94+ response . err = "Unauthorized" ;
95+ resolve ( response ) ;
96+ } else if ( res . statusCode == "200" ) {
97+ resp = JSON . parse ( body ) ;
98+ response . count = resp [ "Meta" ] [ "result_set" ] [ "count" ] ;
99+ resolve ( response ) ;
100+ } else {
101+ resolve ( response ) ;
102+ }
103+ }
104+ ) ;
105+ } ) ;
106+ }
67107module . exports = {
68108 get_build_info : get_build_info ,
69109 get_completed_build_info : get_completed_build_info ,
0 commit comments