|
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