@@ -23,6 +23,13 @@ const archiver = require("../helpers/archiver"),
2323 packageDiff = require ( '../helpers/package-diff' ) ;
2424const { getStackTraceUrl } = require ( '../helpers/sync/syncSpecsLogs' ) ;
2525
26+ const {
27+ launchTestSession,
28+ setTestObservabilityFlags,
29+ runCypressTestsLocally,
30+ printBuildLink
31+ } = require ( '../testObservability/helper/helper' ) ;
32+
2633module . exports = function run ( args , rawArgs ) {
2734
2835 markBlockStart ( 'preBuild' ) ;
@@ -45,6 +52,12 @@ module.exports = function run(args, rawArgs) {
4552 logger . debug ( 'Completed browserstack.json validation' ) ;
4653 markBlockStart ( 'setConfig' ) ;
4754 logger . debug ( 'Started setting the configs' ) ;
55+
56+ /*
57+ Set testObservability & browserstackAutomation flags
58+ */
59+ const [ isTestObservabilitySession , isBrowserstackInfra ] = setTestObservabilityFlags ( bsConfig ) ;
60+
4861 utils . setUsageReportingFlag ( bsConfig , args . disableUsageReporting ) ;
4962
5063 utils . setDefaults ( bsConfig , args ) ;
@@ -55,80 +68,97 @@ module.exports = function run(args, rawArgs) {
5568 // accept the access key from command line or env variable if provided
5669 utils . setAccessKey ( bsConfig , args ) ;
5770
58- let buildReportData = await getInitialDetails ( bsConfig , args , rawArgs ) ;
71+ let buildReportData = ! isBrowserstackInfra ? null : await getInitialDetails ( bsConfig , args , rawArgs ) ;
5972
6073 // accept the build name from command line if provided
6174 utils . setBuildName ( bsConfig , args ) ;
6275
6376 // set cypress config filename
6477 utils . setCypressConfigFilename ( bsConfig , args ) ;
78+
79+ if ( isBrowserstackInfra ) {
80+ // set cypress test suite type
81+ utils . setCypressTestSuiteType ( bsConfig ) ;
6582
66- // set cypress test suite type
67- utils . setCypressTestSuiteType ( bsConfig ) ;
68-
69- // set cypress geo location
70- utils . setGeolocation ( bsConfig , args ) ;
71-
72- // set timezone
73- utils . setTimezone ( bsConfig , args ) ;
83+ // set cypress geo location
84+ utils . setGeolocation ( bsConfig , args ) ;
7485
75- // set spec timeout
76- utils . setSpecTimeout ( bsConfig , args ) ;
86+ // set timezone
87+ utils . setTimezone ( bsConfig , args ) ;
7788
89+ // set spec timeout
90+ utils . setSpecTimeout ( bsConfig , args ) ;
91+ }
92+
7893 // accept the specs list from command line if provided
7994 utils . setUserSpecs ( bsConfig , args ) ;
8095
8196 // accept the env list from command line and set it
8297 utils . setTestEnvs ( bsConfig , args ) ;
8398
99+ // set build tag caps
100+ utils . setBuildTags ( bsConfig , args ) ;
101+
102+ /*
103+ Send build start to Observability
104+ */
105+ if ( isTestObservabilitySession ) await launchTestSession ( bsConfig , bsConfigPath ) ;
106+
84107 // accept the system env list from bsconf and set it
85108 utils . setSystemEnvs ( bsConfig ) ;
86109
87- //accept the local from env variable if provided
88- utils . setLocal ( bsConfig , args ) ;
110+ if ( isBrowserstackInfra ) {
111+ //accept the local from env variable if provided
112+ utils . setLocal ( bsConfig , args ) ;
89113
90- //set network logs
91- utils . setNetworkLogs ( bsConfig ) ;
114+ //set network logs
115+ utils . setNetworkLogs ( bsConfig ) ;
92116
93- // set Local Mode (on-demand/ always-on)
94- utils . setLocalMode ( bsConfig , args ) ;
117+ // set Local Mode (on-demand/ always-on)
118+ utils . setLocalMode ( bsConfig , args ) ;
95119
96- //accept the local identifier from env variable if provided
97- utils . setLocalIdentifier ( bsConfig , args ) ;
120+ //accept the local identifier from env variable if provided
121+ utils . setLocalIdentifier ( bsConfig , args ) ;
98122
99- // set Local Config File
100- utils . setLocalConfigFile ( bsConfig , args ) ;
123+ // set Local Config File
124+ utils . setLocalConfigFile ( bsConfig , args ) ;
101125
102- // run test in headed mode
103- utils . setHeaded ( bsConfig , args ) ;
126+ // run test in headed mode
127+ utils . setHeaded ( bsConfig , args ) ;
104128
105- // set the no-wrap
106- utils . setNoWrap ( bsConfig , args ) ;
129+ // set the no-wrap
130+ utils . setNoWrap ( bsConfig , args ) ;
107131
108- // add cypress dependency if missing
109- utils . setCypressNpmDependency ( bsConfig ) ;
132+ // add cypress dependency if missing
133+ utils . setCypressNpmDependency ( bsConfig ) ;
134+ }
110135
111- const { packagesInstalled } = await packageInstaller . packageSetupAndInstaller ( bsConfig , config . packageDirName , { markBlockStart, markBlockEnd} ) ;
136+ const { packagesInstalled } = ! isBrowserstackInfra ? false : await packageInstaller . packageSetupAndInstaller ( bsConfig , config . packageDirName , { markBlockStart, markBlockEnd} ) ;
112137
113- // set build tag caps
114- utils . setBuildTags ( bsConfig , args ) ;
115- // set node version
116- utils . setNodeVersion ( bsConfig , args ) ;
138+ if ( isBrowserstackInfra ) {
139+ // set node version
140+ utils . setNodeVersion ( bsConfig , args ) ;
141+
142+ //set browsers
143+ await utils . setBrowsers ( bsConfig , args ) ;
117144
118- //set browsers
119- await utils . setBrowsers ( bsConfig , args ) ;
145+ //set config (--config)
146+ utils . setConfig ( bsConfig , args ) ;
120147
121- // set config (--config )
122- utils . setConfig ( bsConfig , args ) ;
148+ // set sync/async mode (--async/--sync )
149+ utils . setCLIMode ( bsConfig , args ) ;
123150
124- // set sync/async mode (--async/--sync)
125- utils . setCLIMode ( bsConfig , args ) ;
151+ // set other cypress configs e.g. reporter and reporter-options
152+ utils . setOtherConfigs ( bsConfig , args ) ;
153+ }
126154
127- // set other cypress configs e.g. reporter and reporter-options
128- utils . setOtherConfigs ( bsConfig , args ) ;
129155 markBlockEnd ( 'setConfig' ) ;
130156 logger . debug ( "Completed setting the configs" ) ;
131157
158+ if ( ! isBrowserstackInfra ) {
159+ return runCypressTestsLocally ( bsConfig , args , rawArgs ) ;
160+ }
161+
132162 // Validate browserstack.json values and parallels specified via arguments
133163 markBlockStart ( 'validateConfig' ) ;
134164 logger . debug ( "Started configs validation" ) ;
@@ -287,7 +317,10 @@ module.exports = function run(args, rawArgs) {
287317
288318 logger . info ( message ) ;
289319 logger . info ( dashboardLink ) ;
290- if ( ! args . sync ) logger . info ( Constants . userMessages . EXIT_SYNC_CLI_MESSAGE . replace ( "<build-id>" , data . build_id ) ) ;
320+ if ( ! args . sync ) {
321+ logger . info ( Constants . userMessages . EXIT_SYNC_CLI_MESSAGE . replace ( "<build-id>" , data . build_id ) ) ;
322+ printBuildLink ( false ) ;
323+ }
291324 let dataToSend = {
292325 time_components : getTimeComponents ( ) ,
293326 unique_id : utils . generateUniqueHash ( ) ,
0 commit comments