|
1 | | -'use strict'; |
| 1 | +"use strict"; |
2 | 2 | const os = require("os"); |
3 | 3 | const path = require("path"); |
4 | 4 | const fs = require("fs"); |
5 | 5 |
|
6 | | -const usageReporting = require('./usageReporting'), |
7 | | - logger = require('./logger').winstonLogger, |
8 | | - Constants = require('./constants'); |
| 6 | +const usageReporting = require("./usageReporting"), |
| 7 | + logger = require("./logger").winstonLogger, |
| 8 | + Constants = require("./constants"); |
9 | 9 |
|
10 | 10 | exports.validateBstackJson = (bsConfigPath) => { |
11 | 11 | return new Promise(function (resolve, reject) { |
12 | 12 | try { |
13 | 13 | logger.info(`Reading config from ${bsConfigPath}`); |
14 | 14 | let bsConfig = require(bsConfigPath); |
15 | 15 | resolve(bsConfig); |
16 | | - } |
17 | | - catch (e) { |
18 | | - reject("Couldn't find the browserstack.json file at \"" + bsConfigPath + "\". Please use --config-file <path to browserstack.json>."); |
| 16 | + } catch (e) { |
| 17 | + reject( |
| 18 | + e.code === "MODULE_NOT_FOUND" |
| 19 | + ? "Couldn't find the browserstack.json file at \"" + |
| 20 | + bsConfigPath + |
| 21 | + '". Please use --config-file <path to browserstack.json>.' |
| 22 | + : `Invalid browserstack.json file. Error : ${e.message}` |
| 23 | + ); |
19 | 24 | } |
20 | 25 | }); |
21 | | -} |
| 26 | +}; |
22 | 27 |
|
23 | 28 | exports.getErrorCodeFromMsg = (errMsg) => { |
24 | 29 | let errorCode = null; |
@@ -51,71 +56,89 @@ exports.getErrorCodeFromMsg = (errMsg) => { |
51 | 56 | errorCode = "invalid_directory_structure"; |
52 | 57 | break; |
53 | 58 | } |
54 | | - if (errMsg.includes("Please use --config-file <path to browserstack.json>.")) { |
| 59 | + if ( |
| 60 | + errMsg.includes("Please use --config-file <path to browserstack.json>.") |
| 61 | + ) { |
55 | 62 | errorCode = "bstack_json_path_invalid"; |
| 63 | + } else if (errMsg.includes("Invalid browserstack.json file.")) { |
| 64 | + errorCode = "bstack_json_invalid"; |
56 | 65 | } |
57 | 66 | return errorCode; |
58 | | -} |
| 67 | +}; |
59 | 68 |
|
60 | 69 | exports.getErrorCodeFromErr = (err) => { |
61 | 70 | let errorCode = null; |
62 | | - if (err.code === 'SyntaxError') { |
63 | | - errorCode = 'bstack_json_parse_error'; |
64 | | - } else if (err.code === 'EACCES') { |
65 | | - errorCode = 'bstack_json_no_permission'; |
| 71 | + if (err.code === "SyntaxError") { |
| 72 | + errorCode = "bstack_json_parse_error"; |
| 73 | + } else if (err.code === "EACCES") { |
| 74 | + errorCode = "bstack_json_no_permission"; |
66 | 75 | } else { |
67 | | - errorCode = 'bstack_json_invalid_unknown'; |
| 76 | + errorCode = "bstack_json_invalid_unknown"; |
68 | 77 | } |
69 | | - return errorCode |
70 | | -} |
71 | | - |
72 | | -exports.sendUsageReport = (bsConfig, args, message, message_type, error_code) => { |
| 78 | + return errorCode; |
| 79 | +}; |
| 80 | + |
| 81 | +exports.sendUsageReport = ( |
| 82 | + bsConfig, |
| 83 | + args, |
| 84 | + message, |
| 85 | + message_type, |
| 86 | + error_code |
| 87 | +) => { |
73 | 88 | usageReporting.send({ |
74 | 89 | cli_args: args, |
75 | 90 | message: message, |
76 | 91 | message_type: message_type, |
77 | 92 | error_code: error_code, |
78 | | - bstack_config: bsConfig |
| 93 | + bstack_config: bsConfig, |
79 | 94 | }); |
80 | | -} |
| 95 | +}; |
81 | 96 |
|
82 | 97 | exports.setUsageReportingFlag = (bsConfig, disableUsageReporting) => { |
83 | | - if (disableUsageReporting === undefined && bsConfig && bsConfig['disable_usage_reporting'] != undefined) { |
84 | | - process.env.DISABLE_USAGE_REPORTING = bsConfig['disable_usage_reporting']; |
| 98 | + if ( |
| 99 | + disableUsageReporting === undefined && |
| 100 | + bsConfig && |
| 101 | + bsConfig["disable_usage_reporting"] != undefined |
| 102 | + ) { |
| 103 | + process.env.DISABLE_USAGE_REPORTING = bsConfig["disable_usage_reporting"]; |
85 | 104 | } else { |
86 | 105 | process.env.DISABLE_USAGE_REPORTING = disableUsageReporting; |
87 | 106 | } |
88 | | -} |
| 107 | +}; |
89 | 108 |
|
90 | 109 | exports.setParallels = (bsConfig, args) => { |
91 | 110 | if (!this.isUndefined(args.parallels)) { |
92 | | - bsConfig['run_settings']['parallels'] = args.parallels; |
| 111 | + bsConfig["run_settings"]["parallels"] = args.parallels; |
93 | 112 | } |
94 | | -} |
| 113 | +}; |
95 | 114 |
|
96 | 115 | exports.setUsername = (bsConfig, args) => { |
97 | 116 | if (!this.isUndefined(args.username)) { |
98 | | - bsConfig['auth']['username'] = args.username; |
| 117 | + bsConfig["auth"]["username"] = args.username; |
99 | 118 | } else if (!this.isUndefined(process.env.BROWSERSTACK_USERNAME)) { |
100 | | - bsConfig['auth']['username'] = process.env.BROWSERSTACK_USERNAME; |
101 | | - logger.info("Reading username from the environment variable BROWSERSTACK_USERNAME"); |
| 119 | + bsConfig["auth"]["username"] = process.env.BROWSERSTACK_USERNAME; |
| 120 | + logger.info( |
| 121 | + "Reading username from the environment variable BROWSERSTACK_USERNAME" |
| 122 | + ); |
102 | 123 | } |
103 | | -} |
| 124 | +}; |
104 | 125 |
|
105 | 126 | exports.setAccessKey = (bsConfig, args) => { |
106 | 127 | if (!this.isUndefined(args.key)) { |
107 | | - bsConfig['auth']['access_key'] = args.key; |
| 128 | + bsConfig["auth"]["access_key"] = args.key; |
108 | 129 | } else if (!this.isUndefined(process.env.BROWSERSTACK_ACCESS_KEY)) { |
109 | | - bsConfig['auth']['access_key'] = process.env.BROWSERSTACK_ACCESS_KEY; |
110 | | - logger.info("Reading access key from the environment variable BROWSERSTACK_ACCESS_KEY"); |
| 130 | + bsConfig["auth"]["access_key"] = process.env.BROWSERSTACK_ACCESS_KEY; |
| 131 | + logger.info( |
| 132 | + "Reading access key from the environment variable BROWSERSTACK_ACCESS_KEY" |
| 133 | + ); |
111 | 134 | } |
112 | | -} |
| 135 | +}; |
113 | 136 |
|
114 | 137 | exports.setBuildName = (bsConfig, args) => { |
115 | | - if (!this.isUndefined(args['build-name'])) { |
116 | | - bsConfig['run_settings']['build_name'] = args['build-name']; |
| 138 | + if (!this.isUndefined(args["build-name"])) { |
| 139 | + bsConfig["run_settings"]["build_name"] = args["build-name"]; |
117 | 140 | } |
118 | | -} |
| 141 | +}; |
119 | 142 |
|
120 | 143 | exports.searchForOption = (option) => { |
121 | 144 | return (process.argv.indexOf(option) > -1); |
@@ -180,71 +203,95 @@ exports.fixCommaSeparatedString = (string) => { |
180 | 203 |
|
181 | 204 | exports.isUndefined = value => (value === undefined || value === null); |
182 | 205 |
|
183 | | -exports.isFloat = value => (Number(value) && Number(value) % 1 !== 0); |
| 206 | +exports.isFloat = (value) => Number(value) && Number(value) % 1 !== 0; |
184 | 207 |
|
185 | 208 | exports.isParallelValid = (value) => { |
186 | 209 | return this.isUndefined(value) || !(isNaN(value) || this.isFloat(value) || parseInt(value, 10) === 0 || parseInt(value, 10) < -1) || value === Constants.cliMessages.RUN.DEFAULT_PARALLEL_MESSAGE; |
187 | 210 | } |
188 | 211 |
|
189 | 212 | exports.getUserAgent = () => { |
190 | | - return `BStack-Cypress-CLI/1.3.0 (${os.arch()}/${os.platform()}/${os.release()})`; |
191 | | -} |
| 213 | + return `BStack-Cypress-CLI/1.4.0 (${os.arch()}/${os.platform()}/${os.release()})`; |
| 214 | +}; |
192 | 215 |
|
193 | 216 | exports.isAbsolute = (configPath) => { |
194 | | - return path.isAbsolute(configPath) |
195 | | -} |
| 217 | + return path.isAbsolute(configPath); |
| 218 | +}; |
196 | 219 |
|
197 | 220 | exports.getConfigPath = (configPath) => { |
198 | | - return this.isAbsolute(configPath) ? configPath : path.join(process.cwd(), configPath); |
199 | | -} |
| 221 | + return this.isAbsolute(configPath) |
| 222 | + ? configPath |
| 223 | + : path.join(process.cwd(), configPath); |
| 224 | +}; |
200 | 225 |
|
201 | 226 | exports.configCreated = (args) => { |
202 | | - let message = Constants.userMessages.CONFIG_FILE_CREATED |
| 227 | + let message = Constants.userMessages.CONFIG_FILE_CREATED; |
203 | 228 | logger.info(message); |
204 | | - this.sendUsageReport(null, args, message, Constants.messageTypes.SUCCESS, null); |
205 | | -} |
| 229 | + this.sendUsageReport( |
| 230 | + null, |
| 231 | + args, |
| 232 | + message, |
| 233 | + Constants.messageTypes.SUCCESS, |
| 234 | + null |
| 235 | + ); |
| 236 | +}; |
206 | 237 |
|
207 | 238 | exports.exportResults = (buildId, buildUrl) => { |
208 | 239 | let data = "BUILD_ID=" + buildId + "\nBUILD_URL=" + buildUrl; |
209 | 240 | fs.writeFileSync("log/build_results.txt", data, function (err) { |
210 | 241 | if (err) { |
211 | | - logger.warn(`Couldn't write BUILD_ID with value: ${buildId} to browserstack/build_results.txt`); |
212 | | - logger.warn(`Couldn't write BUILD_URL with value: ${buildUrl} to browserstack/build_results.txt`); |
| 242 | + logger.warn( |
| 243 | + `Couldn't write BUILD_ID with value: ${buildId} to browserstack/build_results.txt` |
| 244 | + ); |
| 245 | + logger.warn( |
| 246 | + `Couldn't write BUILD_URL with value: ${buildUrl} to browserstack/build_results.txt` |
| 247 | + ); |
213 | 248 | } |
214 | 249 | }); |
215 | | -} |
| 250 | +}; |
216 | 251 |
|
217 | 252 | exports.deleteResults = () => { |
218 | | - fs.unlink("log/build_results.txt", function (err) { |
219 | | - }); |
220 | | -} |
| 253 | + fs.unlink("log/build_results.txt", function (err) {}); |
| 254 | +}; |
221 | 255 |
|
222 | | -exports.isCypressProjDirValid = (cypressDir, cypressProjDir) => { |
| 256 | +exports.isCypressProjDirValid = (cypressProjDir, integrationFoldDir) => { |
223 | 257 | // Getting absolute path |
224 | | - cypressDir = path.resolve(cypressDir); |
225 | | - cypressProjDir = path.resolve(cypressProjDir); |
226 | | - if (cypressProjDir === cypressDir) return true; |
227 | | - let parentTokens = cypressDir.split('/').filter(i => i.length); |
228 | | - let childTokens = cypressProjDir.split('/').filter(i => i.length); |
| 258 | + let cypressDir = path.resolve(cypressProjDir); |
| 259 | + let integrationFolderDir = path.resolve(integrationFoldDir); |
| 260 | + if (!this.isAbsolute(integrationFoldDir)) { |
| 261 | + integrationFolderDir = path.resolve(path.join(cypressProjDir, integrationFoldDir)); |
| 262 | + } |
| 263 | + if (integrationFolderDir === cypressDir) return true; |
| 264 | + let parentTokens = cypressDir.split("/").filter((i) => i.length); |
| 265 | + let childTokens = integrationFolderDir.split("/").filter((i) => i.length); |
229 | 266 | return parentTokens.every((t, i) => childTokens[i] === t); |
230 | | -} |
| 267 | +}; |
231 | 268 |
|
232 | 269 | exports.getLocalFlag = (connectionSettings) => { |
233 | | - return !this.isUndefined(connectionSettings) && !this.isUndefined(connectionSettings.local) && connectionSettings.local |
234 | | -} |
| 270 | + return ( |
| 271 | + !this.isUndefined(connectionSettings) && |
| 272 | + !this.isUndefined(connectionSettings.local) && |
| 273 | + connectionSettings.local |
| 274 | + ); |
| 275 | +}; |
235 | 276 |
|
236 | 277 | exports.setLocal = (bsConfig) => { |
237 | 278 | if (!this.isUndefined(process.env.BROWSERSTACK_LOCAL)) { |
238 | 279 | let local = false; |
239 | | - if (String(process.env.BROWSERSTACK_LOCAL).toLowerCase() === "true") local = true; |
240 | | - bsConfig['connection_settings']['local'] = local; |
241 | | - logger.info("Reading local setting from the environment variable BROWSERSTACK_LOCAL"); |
| 280 | + if (String(process.env.BROWSERSTACK_LOCAL).toLowerCase() === "true") |
| 281 | + local = true; |
| 282 | + bsConfig["connection_settings"]["local"] = local; |
| 283 | + logger.info( |
| 284 | + "Reading local setting from the environment variable BROWSERSTACK_LOCAL" |
| 285 | + ); |
242 | 286 | } |
243 | | -} |
| 287 | +}; |
244 | 288 |
|
245 | 289 | exports.setLocalIdentifier = (bsConfig) => { |
246 | 290 | if (!this.isUndefined(process.env.BROWSERSTACK_LOCAL_IDENTIFIER)) { |
247 | | - bsConfig['connection_settings']['local_identifier'] = process.env.BROWSERSTACK_LOCAL_IDENTIFIER; |
248 | | - logger.info("Reading local identifier from the environment variable BROWSERSTACK_LOCAL_IDENTIFIER"); |
| 291 | + bsConfig["connection_settings"]["local_identifier"] = |
| 292 | + process.env.BROWSERSTACK_LOCAL_IDENTIFIER; |
| 293 | + logger.info( |
| 294 | + "Reading local identifier from the environment variable BROWSERSTACK_LOCAL_IDENTIFIER" |
| 295 | + ); |
249 | 296 | } |
250 | | -} |
| 297 | +}; |
0 commit comments