Skip to content

Commit 2d97d7b

Browse files
committed
Merge branch 'master' of github.com:browserstack/browserstack-cypress-cli
2 parents 7c1e681 + 11a63ce commit 2d97d7b

18 files changed

+987
-304
lines changed

README.md

Lines changed: 260 additions & 62 deletions
Large diffs are not rendered by default.

bin/commands/info.js

Lines changed: 81 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -1,55 +1,94 @@
11
'use strict';
2-
var config = require('../helpers/config');
3-
var request = require('request')
4-
var logger = require("../helpers/logger");
5-
var Constant = require("../helpers/constants")
2+
const request = require('request');
3+
4+
const config = require("../helpers/config"),
5+
logger = require("../helpers/logger").winstonLogger,
6+
Constants = require("../helpers/constants"),
7+
util = require("../helpers/util");
68

79
module.exports = function info(args) {
810
return buildInfo(args)
911
}
1012

1113
function buildInfo(args) {
1214
let bsConfigPath = process.cwd() + args.cf;
13-
logger.log(`Reading config from ${args.cf}`);
14-
var bsConfig = require(bsConfigPath);
15-
16-
let buildId = args._[1]
17-
18-
let options = {
19-
url: config.buildUrl + buildId,
20-
method: 'GET',
21-
auth: {
22-
user: bsConfig.auth.username,
23-
password: bsConfig.auth.access_key
24-
}
25-
}
26-
27-
request(options, function (err, resp, body) {
28-
if (err) {
29-
logger.log(Constant.userMessages.BUILD_INFO_FAILED);
30-
} else {
31-
let build = null
32-
try {
33-
build = JSON.parse(body)
34-
} catch (error) {
35-
build = null
36-
}
37-
38-
if (resp.statusCode != 200) {
39-
if (build) {
40-
logger.error(`${Constant.userMessages.BUILD_INFO_FAILED} with error: \n${JSON.stringify(build, null, 2)}`);
41-
} else {
42-
logger.error(Constant.userMessages.BUILD_INFO_FAILED);
15+
16+
util.validateBstackJson(bsConfigPath).then(function (bsConfig) {
17+
util.setUsageReportingFlag(bsConfig, args.disableUsageReporting);
18+
19+
let buildId = args._[1];
20+
21+
let options = {
22+
url: config.buildUrl + buildId,
23+
method: "GET",
24+
auth: {
25+
user: bsConfig.auth.username,
26+
password: bsConfig.auth.access_key,
27+
},
28+
headers: {
29+
"User-Agent": util.getUserAgent(),
30+
},
31+
};
32+
33+
request(options, function (err, resp, body) {
34+
let message = null;
35+
let messageType = null;
36+
let errorCode = null;
37+
38+
if (err) {
39+
message = Constants.userMessages.BUILD_INFO_FAILED;
40+
messageType = Constants.messageTypes.ERROR;
41+
errorCode = 'api_failed_build_info';
42+
43+
logger.info(message);
44+
} else {
45+
let build = null;
46+
try {
47+
build = JSON.parse(body);
48+
} catch (error) {
49+
build = null;
4350
}
44-
} else if(resp.statusCode == 299) {
45-
if(build) {
46-
logger.log(build.message);
51+
52+
if (resp.statusCode == 299) {
53+
messageType = Constants.messageTypes.INFO;
54+
errorCode = "api_deprecated";
55+
56+
if (build) {
57+
message = build.message;
58+
logger.info(message);
59+
} else {
60+
message = Constants.userMessages.API_DEPRECATED;
61+
logger.info(message);
62+
}
63+
} else if (resp.statusCode != 200) {
64+
messageType = Constants.messageTypes.ERROR;
65+
errorCode = "api_failed_build_info";
66+
67+
if (build) {
68+
message = `${
69+
Constants.userMessages.BUILD_INFO_FAILED
70+
} with error: \n${JSON.stringify(build, null, 2)}`;
71+
logger.error(message);
72+
if (build.message === "Unauthorized") errorCode = "api_auth_failed";
73+
} else {
74+
message = Constants.userMessages.BUILD_INFO_FAILED;
75+
logger.error(message);
76+
}
4777
} else {
48-
logger.log(Constants.userMessages.API_DEPRECATED);
78+
messageType = Constants.messageTypes.SUCCESS;
79+
message = `Build info for build id: \n ${JSON.stringify(
80+
build,
81+
null,
82+
2
83+
)}`;
84+
logger.info(message);
4985
}
50-
} else {
51-
logger.log(`Build info for build id: \n ${JSON.stringify(build, null, 2)}`)
5286
}
53-
}
54-
})
87+
util.sendUsageReport(bsConfig, args, message, messageType, errorCode);
88+
})
89+
}).catch(function (err) {
90+
logger.error(err);
91+
util.setUsageReportingFlag(null, args.disableUsageReporting);
92+
util.sendUsageReport(null, args, err.message, Constants.messageTypes.ERROR, util.getErrorCodeFromErr(err));
93+
})
5594
}

bin/commands/init.js

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
'use strict';
2-
var fileHelpers = require('../helpers/fileHelpers');
3-
const Constants = require('../helpers/constants');
4-
var logger = require("../helpers/logger");
2+
const fileHelpers = require("../helpers/fileHelpers"),
3+
Constants = require("../helpers/constants"),
4+
logger = require("../helpers/logger").winstonLogger,
5+
util = require("../helpers/util");
56

67
module.exports = function init(args) {
78
return createBrowserStackConfig(args)
@@ -21,12 +22,16 @@ function createBrowserStackConfig(args) {
2122
};
2223

2324
function allDone() {
24-
logger.log(Constants.userMessages.CONFIG_FILE_CREATED);
25+
let message = Constants.userMessages.CONFIG_FILE_CREATED
26+
logger.info(message);
27+
util.sendUsageReport(null, args, message, Constants.messageTypes.SUCCESS, null);
2528
}
2629

2730
return fileHelpers.fileExists(config.path, function(exists){
2831
if (exists) {
29-
logger.error(Constants.userMessages.CONFIG_FILE_EXISTS);
32+
let message = Constants.userMessages.CONFIG_FILE_EXISTS;
33+
logger.error(message);
34+
util.sendUsageReport(null, args, message, Constants.messageTypes.ERROR, 'bstack_json_already_exists');
3035
} else {
3136
fileHelpers.write(config, null, allDone);
3237
}

bin/commands/runs.js

Lines changed: 62 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
'use strict';
2+
<<<<<<< HEAD
23
var archiver = require("../helpers/archiver");
34
var zipUploader = require("../helpers/zipUpload");
45
var build = require("../helpers/build");
@@ -8,6 +9,18 @@ var capabilityHelper = require("../helpers/capabilityHelper");
89
var fs = require('fs');
910
const Constants = require('../helpers/constants');
1011
const fileHelpers = require('../helpers/fileHelpers');
12+
=======
13+
const fs = require('fs');
14+
15+
const archiver = require("../helpers/archiver"),
16+
zipUploader = require("../helpers/zipUpload"),
17+
build = require("../helpers/build"),
18+
logger = require("../helpers/logger").winstonLogger,
19+
config = require("../helpers/config"),
20+
capabilityHelper = require("../helpers/capabilityHelper"),
21+
Constants = require("../helpers/constants"),
22+
util = require("../helpers/util");
23+
>>>>>>> 11a63ce498033cc6a3814730eb9300f28f8c007a
1124

1225
module.exports = function run(args) {
1326
return runCypress(args);
@@ -16,54 +29,69 @@ module.exports = function run(args) {
1629
function deleteZip() {
1730
fs.unlink(config.fileName, function (err) {
1831
if(err) {
19-
logger.log(Constants.userMessages.ZIP_DELETE_FAILED);
32+
logger.info(Constants.userMessages.ZIP_DELETE_FAILED);
2033
} else {
21-
logger.log(Constants.userMessages.ZIP_DELETED);
34+
logger.info(Constants.userMessages.ZIP_DELETED);
2235
}
2336
});
2437
}
2538

2639
function runCypress(args) {
2740
let bsConfigPath = process.cwd() + args.cf;
28-
logger.log(`Reading config from ${args.cf}`);
29-
fileHelpers.fileExists(bsConfigPath, (configExists) => {
30-
if (configExists) {
31-
var bsConfig = require(bsConfigPath);
3241

33-
// Validate browserstack.json
34-
capabilityHelper.validate(bsConfig).then(function (validated) {
35-
logger.log(validated);
36-
// Archive the spec files
37-
archiver.archive(bsConfig.run_settings, config.fileName).then(function (data) {
38-
// Uploaded zip file
39-
zipUploader.zipUpload(bsConfig, config.fileName).then(function (zip) {
40-
// Create build
41-
build.createBuild(bsConfig, zip).then(function (data) {
42-
return;
43-
}).catch(function (err) {
44-
// Build creation failed
45-
logger.error(Constants.userMessages.BUILD_FAILED)
46-
});
42+
util.validateBstackJson(bsConfigPath).then(function (bsConfig) {
43+
util.setUsageReportingFlag(bsConfig, args.disableUsageReporting);
44+
45+
// Validate browserstack.json values
46+
capabilityHelper.validate(bsConfig).then(function (validated) {
47+
logger.info(validated);
48+
49+
// Archive the spec files
50+
archiver.archive(bsConfig.run_settings, config.fileName).then(function (data) {
51+
52+
// Uploaded zip file
53+
zipUploader.zipUpload(bsConfig, config.fileName).then(function (zip) {
54+
55+
// Create build
56+
build.createBuild(bsConfig, zip).then(function (message) {
57+
logger.info(message);
58+
util.sendUsageReport(bsConfig, args, message, Constants.messageTypes.SUCCESS, null);
59+
return;
4760
}).catch(function (err) {
48-
// Zip Upload failed
49-
logger.error(err)
50-
logger.error(Constants.userMessages.ZIP_UPLOAD_FAILED)
51-
}).finally(function () {
52-
deleteZip();
61+
// Build creation failed
62+
logger.error(err);
63+
util.sendUsageReport(bsConfig, args, err, Constants.messageTypes.ERROR, 'build_failed');
5364
});
5465
}).catch(function (err) {
55-
// Zipping failed
66+
// Zip Upload failed
5667
logger.error(err)
57-
logger.error(Constants.userMessages.FAILED_TO_ZIP)
68+
logger.error(Constants.userMessages.ZIP_UPLOAD_FAILED)
69+
util.sendUsageReport(bsConfig, args, `${err}\n${Constants.userMessages.ZIP_UPLOAD_FAILED}`, Constants.messageTypes.ERROR, 'zip_upload_failed');
70+
}).finally(function () {
5871
deleteZip();
5972
});
6073
}).catch(function (err) {
61-
// browerstack.json is not valid
62-
logger.error(err)
63-
logger.error(Constants.validationMessages.NOT_VALID)
74+
// Zipping failed
75+
logger.error(err);
76+
logger.error(Constants.userMessages.FAILED_TO_ZIP);
77+
util.sendUsageReport(bsConfig, args, `${err}\n${Constants.userMessages.FAILED_TO_ZIP}`, Constants.messageTypes.ERROR, 'zip_creation_failed');
78+
try {
79+
deleteZip();
80+
} catch (err) {
81+
util.sendUsageReport(bsConfig, args, Constants.userMessages.ZIP_DELETE_FAILED, Constants.messageTypes.ERROR, 'zip_deletion_failed');
82+
}
6483
});
65-
} else {
66-
logger.error('Could not find browserstack.json, you can create it by running `browserstack-cypress init`');
67-
}
68-
});
84+
}).catch(function (err) {
85+
// browerstack.json is not valid
86+
logger.error(err);
87+
logger.error(Constants.validationMessages.NOT_VALID);
88+
89+
let error_code = util.getErrorCodeFromMsg(err);
90+
util.sendUsageReport(bsConfig, args, `${err}\n${Constants.validationMessages.NOT_VALID}`, Constants.messageTypes.ERROR, error_code);
91+
});
92+
}).catch(function (err) {
93+
logger.error(err);
94+
util.setUsageReportingFlag(null, args.disableUsageReporting);
95+
util.sendUsageReport(null, args, err.message, Constants.messageTypes.ERROR, util.getErrorCodeFromErr(err));
96+
})
6997
}

0 commit comments

Comments
 (0)