Skip to content

Commit be00df8

Browse files
committed
Merge branch 'master' of github.com:roshan04/browserstack-cypress-cli
2 parents bc98628 + 717dc31 commit be00df8

File tree

15 files changed

+125
-70
lines changed

15 files changed

+125
-70
lines changed

bin/commands/info.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ module.exports = function info(args, rawArgs) {
4747
errorCode = 'api_failed_build_info';
4848

4949
logger.info(message);
50+
logger.error(utils.formatRequest(err, resp, body));
5051
} else {
5152
let build = null;
5253
try {
@@ -66,6 +67,7 @@ module.exports = function info(args, rawArgs) {
6667
message = Constants.userMessages.API_DEPRECATED;
6768
logger.info(message);
6869
}
70+
logger.info(utils.formatRequest(err, resp, body));
6971
} else if (resp.statusCode != 200) {
7072
messageType = Constants.messageTypes.ERROR;
7173
errorCode = 'api_failed_build_info';
@@ -80,6 +82,7 @@ module.exports = function info(args, rawArgs) {
8082
message = Constants.userMessages.BUILD_INFO_FAILED;
8183
logger.error(message);
8284
}
85+
logger.error(utils.formatRequest(err, resp, body));
8386
} else {
8487
messageType = Constants.messageTypes.SUCCESS;
8588
message = `Build info for build id: \n ${JSON.stringify(

bin/helpers/build.js

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,8 @@ const request = require('request');
44
const config = require('./config'),
55
capabilityHelper = require("../helpers/capabilityHelper"),
66
Constants = require('../helpers/constants'),
7-
utils = require('../helpers/utils');
7+
utils = require('../helpers/utils'),
8+
logger = require('../helpers/logger').winstonLogger;
89

910
const createBuild = (bsConfig, zip) => {
1011
return new Promise(function (resolve, reject) {
@@ -24,6 +25,7 @@ const createBuild = (bsConfig, zip) => {
2425

2526
request.post(options, function (err, resp, body) {
2627
if (err) {
28+
logger.error(utils.formatRequest(err, resp, body));
2729
reject(err);
2830
} else {
2931
let build = null;
@@ -37,9 +39,11 @@ const createBuild = (bsConfig, zip) => {
3739
if (build) {
3840
resolve(build.message);
3941
} else {
42+
logger.error(utils.formatRequest(err, resp, body));
4043
reject(Constants.userMessages.API_DEPRECATED);
4144
}
4245
} else if (resp.statusCode != 201) {
46+
logger.error(utils.formatRequest(err, resp, body));
4347
if (build) {
4448
reject(`${Constants.userMessages.BUILD_FAILED} Error: ${build.message}`);
4549
} else {

bin/helpers/buildArtifacts.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -162,6 +162,7 @@ const sendUpdatesToBstack = async (bsConfig, buildId, args, options, rawArgs) =>
162162
request.post(options, function (err, resp, data) {
163163
if(err) {
164164
utils.sendUsageReport(bsConfig, args, err, Constants.messageTypes.ERROR, 'api_failed_build_artifacts_status_update', null, rawArgs);
165+
logger.error(utils.formatRequest(err, resp, body));
165166
reject(err);
166167
} else {
167168
try {
@@ -203,6 +204,7 @@ exports.downloadBuildArtifacts = async (bsConfig, buildId, args, rawArgs) => {
203204
let buildDetails = null;
204205
request.get(options, async function (err, resp, body) {
205206
if(err) {
207+
logger.error(utils.formatRequest(err, resp, body));
206208
utils.sendUsageReport(bsConfig, args, err, Constants.messageTypes.ERROR, 'api_failed_build_artifacts', null, rawArgs);
207209
process.exitCode = Constants.ERROR_EXIT_CODE;
208210
} else {
@@ -211,6 +213,7 @@ exports.downloadBuildArtifacts = async (bsConfig, buildId, args, rawArgs) => {
211213
if(resp.statusCode != 200) {
212214
logger.error('Downloading the build artifacts failed.');
213215
logger.error(`Error: Request failed with status code ${resp.statusCode}`)
216+
logger.error(utils.formatRequest(err, resp, body));
214217
utils.sendUsageReport(bsConfig, args, buildDetails, Constants.messageTypes.ERROR, 'api_failed_build_artifacts', null, rawArgs);
215218
process.exitCode = Constants.ERROR_EXIT_CODE;
216219
} else {
@@ -241,6 +244,7 @@ exports.downloadBuildArtifacts = async (bsConfig, buildId, args, rawArgs) => {
241244
}
242245
utils.sendUsageReport(bsConfig, args, err, messageType, errorCode, null, rawArgs);
243246
logger.error(`Error: Request failed with status code ${resp.statusCode}`)
247+
logger.error(utils.formatRequest(err, resp, body));
244248
process.exitCode = Constants.ERROR_EXIT_CODE;
245249
}
246250
}

bin/helpers/checkUploaded.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ const checkUploadedMd5 = (bsConfig, args, instrumentBlocks) => {
8282
zipUrlPresent: false,
8383
packageUrlPresent: false,
8484
};
85-
if (args["force-upload"] && !utils.isTrueString(bsConfig.run_settings.cache_dependencies)) {
85+
if (args["force-upload"]) {
8686
return resolve(obj);
8787
}
8888

bin/helpers/constants.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -168,7 +168,7 @@ const messageTypes = {
168168
NULL: null
169169
}
170170

171-
const allowedFileTypes = ['js', 'json', 'txt', 'ts', 'feature', 'features', 'pdf', 'jpg', 'jpeg', 'png', 'zip', 'npmrc', 'xml', 'doc', 'docx', 'ppt', 'pptx', 'xls', 'xlsx', 'jsx', 'coffee', 'cjsx', 'csv', 'tsv', 'yml', 'yaml', 'env', 'mov', 'mp4', 'mp3', 'wav'];
171+
const allowedFileTypes = ['js', 'json', 'txt', 'ts', 'feature', 'features', 'pdf', 'jpg', 'jpeg', 'png', 'zip', 'npmrc', 'xml', 'doc', 'docx', 'ppt', 'pptx', 'xls', 'xlsx', 'jsx', 'coffee', 'cjsx', 'csv', 'tsv', 'yml', 'yaml', 'env', 'mov', 'mp4', 'mp3', 'wav', 'gz'];
172172

173173
const filesToIgnoreWhileUploading = [
174174
'**/node_modules/**',

bin/helpers/reporterHTML.js

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -105,14 +105,14 @@ let reportGenerator = (bsConfig, buildId, args, rawArgs, cb) => {
105105
let messageType = null;
106106
let errorCode = null;
107107
let build;
108-
108+
109109
if (err) {
110110
message = err;
111111
messageType = Constants.messageTypes.ERROR;
112112
errorCode = 'api_failed_build_report';
113113

114114
logger.error('Generating the build report failed.');
115-
logger.error(message);
115+
logger.error(utils.formatRequest(err, resp, body));
116116

117117
utils.sendUsageReport(bsConfig, args, message, messageType, errorCode, null, rawArgs);
118118
return;
@@ -145,7 +145,7 @@ let reportGenerator = (bsConfig, buildId, args, rawArgs, cb) => {
145145
logger.error(`Error generating the report: ${error}`);
146146
response = {message: message};
147147
}
148-
logger.error(response.message);
148+
logger.error(utils.formatRequest(err, resp, body));
149149
} else if (resp.statusCode != 200) {
150150
messageType = Constants.messageTypes.ERROR;
151151
errorCode = 'api_failed_build_generate_report';
@@ -158,7 +158,7 @@ let reportGenerator = (bsConfig, buildId, args, rawArgs, cb) => {
158158
if (build.message === 'Unauthorized') errorCode = 'api_auth_failed';
159159
} else {
160160
message = Constants.userMessages.BUILD_GENERATE_REPORT_FAILED.replace('<build-id>', buildId);
161-
logger.error(message);
161+
logger.error(utils.formatRequest(err, resp, body));
162162
}
163163
} else {
164164
messageType = Constants.messageTypes.SUCCESS;

bin/helpers/utils.js

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ const getmac = require('getmac').default;
77
const { v4: uuidv4 } = require('uuid');
88
const browserstack = require('browserstack-local');
99
const crypto = require('crypto');
10+
const util = require('util');
1011

1112
const usageReporting = require("./usageReporting"),
1213
logger = require("./logger").winstonLogger,
@@ -969,6 +970,14 @@ exports.setCLIMode = (bsConfig, args) => {
969970
}
970971
}
971972

973+
exports.formatRequest = (err, resp, body) => {
974+
return {
975+
err,
976+
status: resp ? resp.statusCode : null,
977+
body: body ? util.format('%j', body) : null
978+
}
979+
}
980+
972981
exports.stopBrowserStackBuild = async (bsConfig, args, buildId, rawArgs) => {
973982
let that = this;
974983
return new Promise(function (resolve, reject) {

bin/helpers/zipUpload.js

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ const uploadSuits = (bsConfig, filePath, opts, obj) => {
5252
var r = request.post(options, function (err, resp, body) {
5353

5454
if (err) {
55-
reject(err);
55+
reject({message: err, stacktrace: utils.formatRequest(err, resp, body)});
5656
} else {
5757
try {
5858
responseData = JSON.parse(body);
@@ -63,22 +63,22 @@ const uploadSuits = (bsConfig, filePath, opts, obj) => {
6363
if (resp.statusCode == 401) {
6464
if (responseData && responseData["error"]) {
6565
responseData["time"] = Date.now() - obj.startTime;
66-
return reject(responseData["error"]);
66+
return reject({message: responseData["error"], stacktrace: utils.formatRequest(err, resp, body)});
6767
} else {
68-
return reject(Constants.validationMessages.INVALID_DEFAULT_AUTH_PARAMS);
68+
return reject({message: Constants.validationMessages.INVALID_DEFAULT_AUTH_PARAMS, stacktrace: utils.formatRequest(err, resp, body)});
6969
}
7070
}
7171
if (!opts.propogateError){
7272
return resolve({});
7373
}
7474
if(responseData && responseData["error"]){
7575
responseData["time"] = Date.now() - obj.startTime;
76-
reject(responseData["error"]);
76+
reject({message: responseData["error"], stacktrace: utils.formatRequest(err, resp, body)});
7777
} else {
7878
if (resp.statusCode == 413) {
79-
reject(Constants.userMessages.ZIP_UPLOAD_LIMIT_EXCEEDED);
79+
reject({message: Constants.userMessages.ZIP_UPLOAD_LIMIT_EXCEEDED, stacktrace: utils.formatRequest(err, resp, body)});
8080
} else {
81-
reject(Constants.userMessages.ZIP_UPLOADER_NOT_REACHABLE);
81+
reject({message: Constants.userMessages.ZIP_UPLOADER_NOT_REACHABLE, stacktrace: utils.formatRequest(err, resp, body)});
8282
}
8383
}
8484
} else {
@@ -147,9 +147,10 @@ const uploadCypressZip = (bsConfig, md5data, packageData) => {
147147
});
148148
return resolve(obj);
149149
}).catch((error) => {
150-
purgeUploadBar(testZipUploadObj);
151-
purgeUploadBar(npmPackageZipUploadObj);
152-
return reject(error);
150+
testZipUploadObj.bar1 && purgeUploadBar(testZipUploadObj);
151+
npmPackageZipUploadObj.bar1 && purgeUploadBar(npmPackageZipUploadObj);
152+
logger.error(error.stacktrace)
153+
return reject(error.message);
153154
})
154155
})
155156
}

package.json

Lines changed: 24 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -12,23 +12,23 @@
1212
"browserstack-cypress": "bin/runner.js"
1313
},
1414
"dependencies": {
15-
"archiver": "^5.2.0",
16-
"async": "^3.2.0",
17-
"browserstack-local": "^1.4.8",
18-
"chalk": "^4.1.0",
19-
"cli-progress": "^3.9.1",
20-
"fs-extra": "^8.1.0",
21-
"getmac": "^5.17.0",
22-
"glob": "^7.1.6",
23-
"mkdirp": "^1.0.3",
24-
"request": "^2.88.0",
25-
"requestretry": "^4.1.0",
26-
"table": "^5.4.6",
27-
"unzipper": "^0.10.11",
28-
"update-notifier": "^5.1.0",
29-
"uuid": "^8.3.2",
15+
"archiver": "5.3.0",
16+
"async": "3.2.3",
17+
"browserstack-local": "1.4.8",
18+
"chalk": "4.1.2",
19+
"cli-progress": "3.10.0",
20+
"fs-extra": "8.1.0",
21+
"getmac": "5.20.0",
22+
"glob": "7.2.0",
23+
"mkdirp": "1.0.4",
24+
"request": "2.88.2",
25+
"requestretry": "4.1.2",
26+
"table": "5.4.6",
27+
"unzipper": "0.10.11",
28+
"update-notifier": "5.1.0",
29+
"uuid": "8.3.2",
3030
"winston": "2.4.4",
31-
"yargs": "^14.2.3"
31+
"yargs": "14.2.3"
3232
},
3333
"repository": {
3434
"type": "git",
@@ -39,13 +39,13 @@
3939
"url": "https://github.com/browserstack/browserstack-cypress-cli/issues"
4040
},
4141
"devDependencies": {
42-
"chai": "^4.2.0",
43-
"chai-as-promised": "^7.1.1",
44-
"custom-env": "^2.0.1",
45-
"mocha": "^7.1.2",
46-
"nyc": "^15.0.1",
47-
"proxyquire": "^2.1.3",
48-
"rewire": "^5.0.0",
49-
"sinon": "^9.0.2"
42+
"chai": "4.3.6",
43+
"chai-as-promised": "7.1.1",
44+
"custom-env": "2.0.1",
45+
"mocha": "7.2.0",
46+
"nyc": "15.1.0",
47+
"proxyquire": "2.1.3",
48+
"rewire": "5.0.0",
49+
"sinon": "9.2.4"
5050
}
5151
}

test/unit/bin/commands/info.js

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,8 @@ const chai = require("chai"),
55

66
const Constants = require("../../../../bin/helpers/constants"),
77
logger = require("../../../../bin/helpers/logger").winstonLogger,
8-
testObjects = require("../../support/fixtures/testObjects");
8+
testObjects = require("../../support/fixtures/testObjects"),
9+
formatRequest = require('../../../../bin/helpers/utils').formatRequest;
910

1011
const proxyquire = require("proxyquire").noCallThru();
1112

@@ -60,7 +61,8 @@ describe("buildInfo", () => {
6061
setCypressConfigFilename: setCypressConfigFilenameStub,
6162
getUserAgent: getUserAgentStub,
6263
getConfigPath: getConfigPathStub,
63-
setDefaults: setDefaultsStub
64+
setDefaults: setDefaultsStub,
65+
formatRequest,
6466
},
6567
request: {get: requestStub},
6668
});
@@ -98,7 +100,8 @@ describe("buildInfo", () => {
98100
setCypressConfigFilename: setCypressConfigFilenameStub,
99101
getUserAgent: getUserAgentStub,
100102
getConfigPath: getConfigPathStub,
101-
setDefaults: setDefaultsStub
103+
setDefaults: setDefaultsStub,
104+
formatRequest,
102105
},
103106
request: {get: requestStub},
104107
});
@@ -160,7 +163,8 @@ describe("buildInfo", () => {
160163
setCypressConfigFilename: setCypressConfigFilenameStub,
161164
getUserAgent: getUserAgentStub,
162165
getConfigPath: getConfigPathStub,
163-
setDefaults: setDefaultsStub
166+
setDefaults: setDefaultsStub,
167+
formatRequest,
164168
},
165169
request: {get: requestStub},
166170
});
@@ -204,7 +208,8 @@ describe("buildInfo", () => {
204208
setCypressConfigFilename: setCypressConfigFilenameStub,
205209
getUserAgent: getUserAgentStub,
206210
getConfigPath: getConfigPathStub,
207-
setDefaults: setDefaultsStub
211+
setDefaults: setDefaultsStub,
212+
formatRequest,
208213
},
209214
request: {get: requestStub},
210215
});
@@ -243,7 +248,8 @@ describe("buildInfo", () => {
243248
setCypressConfigFilename: setCypressConfigFilenameStub,
244249
getUserAgent: getUserAgentStub,
245250
getConfigPath: getConfigPathStub,
246-
setDefaults: setDefaultsStub
251+
setDefaults: setDefaultsStub,
252+
formatRequest,
247253
},
248254
request: {get: requestStub},
249255
});

0 commit comments

Comments
 (0)