@@ -23,6 +23,13 @@ const archiver = require("../helpers/archiver"),
23
23
packageDiff = require ( '../helpers/package-diff' ) ;
24
24
const { getStackTraceUrl } = require ( '../helpers/sync/syncSpecsLogs' ) ;
25
25
26
+ const {
27
+ launchTestSession,
28
+ setTestObservabilityFlags,
29
+ runCypressTestsLocally,
30
+ printBuildLink
31
+ } = require ( '../testObservability/helper/helper' ) ;
32
+
26
33
module . exports = function run ( args , rawArgs ) {
27
34
28
35
markBlockStart ( 'preBuild' ) ;
@@ -45,6 +52,12 @@ module.exports = function run(args, rawArgs) {
45
52
logger . debug ( 'Completed browserstack.json validation' ) ;
46
53
markBlockStart ( 'setConfig' ) ;
47
54
logger . debug ( 'Started setting the configs' ) ;
55
+
56
+ /*
57
+ Set testObservability & browserstackAutomation flags
58
+ */
59
+ const [ isTestObservabilitySession , isBrowserstackInfra ] = setTestObservabilityFlags ( bsConfig ) ;
60
+
48
61
utils . setUsageReportingFlag ( bsConfig , args . disableUsageReporting ) ;
49
62
50
63
utils . setDefaults ( bsConfig , args ) ;
@@ -55,80 +68,97 @@ module.exports = function run(args, rawArgs) {
55
68
// accept the access key from command line or env variable if provided
56
69
utils . setAccessKey ( bsConfig , args ) ;
57
70
58
- let buildReportData = await getInitialDetails ( bsConfig , args , rawArgs ) ;
71
+ let buildReportData = ! isBrowserstackInfra ? null : await getInitialDetails ( bsConfig , args , rawArgs ) ;
59
72
60
73
// accept the build name from command line if provided
61
74
utils . setBuildName ( bsConfig , args ) ;
62
75
63
76
// set cypress config filename
64
77
utils . setCypressConfigFilename ( bsConfig , args ) ;
78
+
79
+ if ( isBrowserstackInfra ) {
80
+ // set cypress test suite type
81
+ utils . setCypressTestSuiteType ( bsConfig ) ;
65
82
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 ) ;
74
85
75
- // set spec timeout
76
- utils . setSpecTimeout ( bsConfig , args ) ;
86
+ // set timezone
87
+ utils . setTimezone ( bsConfig , args ) ;
77
88
89
+ // set spec timeout
90
+ utils . setSpecTimeout ( bsConfig , args ) ;
91
+ }
92
+
78
93
// accept the specs list from command line if provided
79
94
utils . setUserSpecs ( bsConfig , args ) ;
80
95
81
96
// accept the env list from command line and set it
82
97
utils . setTestEnvs ( bsConfig , args ) ;
83
98
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
+
84
107
// accept the system env list from bsconf and set it
85
108
utils . setSystemEnvs ( bsConfig ) ;
86
109
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 ) ;
89
113
90
- //set network logs
91
- utils . setNetworkLogs ( bsConfig ) ;
114
+ //set network logs
115
+ utils . setNetworkLogs ( bsConfig ) ;
92
116
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 ) ;
95
119
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 ) ;
98
122
99
- // set Local Config File
100
- utils . setLocalConfigFile ( bsConfig , args ) ;
123
+ // set Local Config File
124
+ utils . setLocalConfigFile ( bsConfig , args ) ;
101
125
102
- // run test in headed mode
103
- utils . setHeaded ( bsConfig , args ) ;
126
+ // run test in headed mode
127
+ utils . setHeaded ( bsConfig , args ) ;
104
128
105
- // set the no-wrap
106
- utils . setNoWrap ( bsConfig , args ) ;
129
+ // set the no-wrap
130
+ utils . setNoWrap ( bsConfig , args ) ;
107
131
108
- // add cypress dependency if missing
109
- utils . setCypressNpmDependency ( bsConfig ) ;
132
+ // add cypress dependency if missing
133
+ utils . setCypressNpmDependency ( bsConfig ) ;
134
+ }
110
135
111
- const { packagesInstalled } = await packageInstaller . packageSetupAndInstaller ( bsConfig , config . packageDirName , { markBlockStart, markBlockEnd} ) ;
136
+ const { packagesInstalled } = ! isBrowserstackInfra ? false : await packageInstaller . packageSetupAndInstaller ( bsConfig , config . packageDirName , { markBlockStart, markBlockEnd} ) ;
112
137
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 ) ;
117
144
118
- //set browsers
119
- await utils . setBrowsers ( bsConfig , args ) ;
145
+ //set config (--config)
146
+ utils . setConfig ( bsConfig , args ) ;
120
147
121
- // set config (--config )
122
- utils . setConfig ( bsConfig , args ) ;
148
+ // set sync/async mode (--async/--sync )
149
+ utils . setCLIMode ( bsConfig , args ) ;
123
150
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
+ }
126
154
127
- // set other cypress configs e.g. reporter and reporter-options
128
- utils . setOtherConfigs ( bsConfig , args ) ;
129
155
markBlockEnd ( 'setConfig' ) ;
130
156
logger . debug ( "Completed setting the configs" ) ;
131
157
158
+ if ( ! isBrowserstackInfra ) {
159
+ return runCypressTestsLocally ( bsConfig , args , rawArgs ) ;
160
+ }
161
+
132
162
// Validate browserstack.json values and parallels specified via arguments
133
163
markBlockStart ( 'validateConfig' ) ;
134
164
logger . debug ( "Started configs validation" ) ;
@@ -287,7 +317,10 @@ module.exports = function run(args, rawArgs) {
287
317
288
318
logger . info ( message ) ;
289
319
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
+ }
291
324
let dataToSend = {
292
325
time_components : getTimeComponents ( ) ,
293
326
unique_id : utils . generateUniqueHash ( ) ,
0 commit comments