testcafe-reporter-qase 1.0.5 → 1.2.0-alpha.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -3,6 +3,17 @@ var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cook
3
3
  if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; }
4
4
  return cooked;
5
5
  };
6
+ var __assign = (this && this.__assign) || function () {
7
+ __assign = Object.assign || function(t) {
8
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
9
+ s = arguments[i];
10
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
11
+ t[p] = s[p];
12
+ }
13
+ return t;
14
+ };
15
+ return __assign.apply(this, arguments);
16
+ };
6
17
  var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
7
18
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
8
19
  return new (P || (P = Promise))(function (resolve, reject) {
@@ -50,16 +61,20 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
50
61
  return (mod && mod.__esModule) ? mod : { "default": mod };
51
62
  };
52
63
  /* eslint-disable no-console,@typescript-eslint/require-await */
53
- var models_1 = require("qaseio/dist/src/models");
64
+ /* eslint-disable camelcase */
65
+ /* eslint-disable no-unused-vars */
66
+ var CustomBoundaryFormData_1 = require("./CustomBoundaryFormData");
67
+ var src_1 = require("qaseio/dist/src");
68
+ var fs_1 = require("fs");
54
69
  var qaseio_1 = require("qaseio");
55
70
  var chalk_1 = __importDefault(require("chalk"));
56
- var fs_1 = __importDefault(require("fs"));
71
+ var child_process_1 = require("child_process");
57
72
  var moment_1 = __importDefault(require("moment"));
58
73
  var path_1 = __importDefault(require("path"));
59
74
  var RuntimeError = WebAssembly.RuntimeError;
60
75
  var loadJSON = function (file) {
61
76
  try {
62
- var data = fs_1.default.readFileSync(file, { encoding: 'utf8' });
77
+ var data = fs_1.readFileSync(file, { encoding: 'utf8' });
63
78
  if (data) {
64
79
  return JSON.parse(data);
65
80
  }
@@ -79,12 +94,16 @@ var prepareConfig = function (options) {
79
94
  return {
80
95
  enabled: process.env.QASE_ENABLED === 'true' || config.enabled || false,
81
96
  apiToken: process.env.QASE_API_TOKEN || config.apiToken,
97
+ basePath: process.env.QASE_API_BASE_URL || config.basePath,
82
98
  projectCode: process.env.QASE_PROJECT || config.projectCode || '',
83
99
  runId: process.env.QASE_RUN_ID || config.runId || '',
84
100
  runName: process.env.QASE_RUN_NAME ||
85
101
  config.runName ||
86
102
  'Automated Run %DATE%',
87
103
  runDescription: process.env.QASE_RUN_DESCRIPTION || config.runDescription,
104
+ runComplete: process.env.QASE_RUN_COMPLETE === 'true' || config.runComplete,
105
+ uploadAttachments: process.env.QASE_UPLOAD_ATTACHMENTS === 'true' || config.uploadAttachments,
106
+ environmentId: process.env.QASE_ENVIRONMENT_ID || config.environmentId || undefined,
88
107
  logging: process.env.QASE_LOGGING !== '' || config.logging,
89
108
  };
90
109
  };
@@ -110,6 +129,8 @@ var TestcafeQaseReporter = /** @class */ (function () {
110
129
  function TestcafeQaseReporter() {
111
130
  var _this = this;
112
131
  this.pending = [];
132
+ this.results = [];
133
+ this.sending = false;
113
134
  this.reportTaskStart = function (_startTime, userAgents) { return __awaiter(_this, void 0, void 0, function () {
114
135
  var _this = this;
115
136
  return __generator(this, function (_a) {
@@ -118,94 +139,200 @@ var TestcafeQaseReporter = /** @class */ (function () {
118
139
  }
119
140
  this.userAgents = userAgents;
120
141
  this.config.runName = prepareReportName(this.config, this.userAgents);
121
- this.checkProject(this.config.projectCode, function (prjExists) {
122
- if (prjExists) {
123
- _this.log(chalk_1.default(templateObject_1 || (templateObject_1 = __makeTemplateObject(["{green Project ", " exists}"], ["{green Project ", " exists}"])), _this.config.projectCode));
124
- if (_this.config.runId) {
125
- _this.saveRunId(_this.config.runId);
126
- _this.checkRun(_this.config.runId, function (runExists) {
127
- var run = _this.config.runId;
128
- if (runExists) {
129
- _this.log(chalk_1.default(templateObject_2 || (templateObject_2 = __makeTemplateObject(["{green Using run ", " to publish test results}"], ["{green Using run ", " to publish test results}"])), run));
130
- }
131
- else {
132
- _this.log(chalk_1.default(templateObject_3 || (templateObject_3 = __makeTemplateObject(["{red Run ", " does not exist}"], ["{red Run ", " does not exist}"])), run));
133
- }
134
- });
135
- }
136
- else if (!_this.config.runId) {
137
- _this.createRun(_this.config.runName, _this.config.runDescription, function (created) {
138
- if (created) {
139
- _this.saveRunId(created.id);
140
- _this.log(chalk_1.default(templateObject_4 || (templateObject_4 = __makeTemplateObject(["{green Using run ", " to publish test results}"], ["{green Using run ", " to publish test results}"])), _this.config.runId));
141
- }
142
- else {
143
- _this.log(chalk_1.default(templateObject_5 || (templateObject_5 = __makeTemplateObject(["{red Could not create run in project ", "}"], ["{red Could not create run in project ", "}"])), _this.config.projectCode));
144
- }
145
- });
146
- }
147
- }
148
- else {
149
- _this.log(chalk_1.default(templateObject_6 || (templateObject_6 = __makeTemplateObject(["{red Project ", " does not exist}"], ["{red Project ", " does not exist}"])), _this.config.projectCode));
150
- }
151
- });
152
- return [2 /*return*/];
142
+ return [2 /*return*/, this.checkProject(this.config.projectCode, function (prjExists) { return __awaiter(_this, void 0, void 0, function () {
143
+ var _this = this;
144
+ return __generator(this, function (_a) {
145
+ if (!prjExists) {
146
+ this.log(chalk_1.default(templateObject_1 || (templateObject_1 = __makeTemplateObject(["{red Project ", " does not exist}"], ["{red Project ", " does not exist}"])), this.config.projectCode));
147
+ this.enabled = false;
148
+ return [2 /*return*/];
149
+ }
150
+ this.log(chalk_1.default(templateObject_2 || (templateObject_2 = __makeTemplateObject(["{green Project ", " exists}"], ["{green Project ", " exists}"])), this.config.projectCode));
151
+ if (this.config.runId) {
152
+ this.saveRunId(this.config.runId);
153
+ return [2 /*return*/, this.checkRun(this.config.runId, function (runExists) {
154
+ if (runExists) {
155
+ _this.log(chalk_1.default(templateObject_3 || (templateObject_3 = __makeTemplateObject(["{green Using run ", " to publish test results}"], ["{green Using run ", " to publish test results}"])), _this.config.runId));
156
+ }
157
+ else {
158
+ _this.log(chalk_1.default(templateObject_4 || (templateObject_4 = __makeTemplateObject(["{red Run ", " does not exist}"], ["{red Run ", " does not exist}"])), _this.config.runId));
159
+ _this.enabled = false;
160
+ }
161
+ })];
162
+ }
163
+ else {
164
+ return [2 /*return*/, this.createRun(this.config.runName, this.config.runDescription, function (created) {
165
+ var _a;
166
+ if (created) {
167
+ _this.saveRunId((_a = created.result) === null || _a === void 0 ? void 0 : _a.id);
168
+ _this.log(chalk_1.default(templateObject_5 || (templateObject_5 = __makeTemplateObject(["{green Using run ", " to publish test results}"], ["{green Using run ", " to publish test results}"])), _this.config.runId));
169
+ }
170
+ else {
171
+ _this.log(chalk_1.default(templateObject_6 || (templateObject_6 = __makeTemplateObject(["{red Could not create run in project ", "}"], ["{red Could not create run in project ", "}"])), _this.config.projectCode));
172
+ _this.enabled = false;
173
+ }
174
+ })];
175
+ }
176
+ return [2 /*return*/];
177
+ });
178
+ }); })];
153
179
  });
154
180
  }); };
155
181
  this.reportTestDone = function (name, testRunInfo, meta, formatError) { return __awaiter(_this, void 0, void 0, function () {
156
- var hasErr, testStatus, errorLog;
182
+ var hasErr, testStatus, errorLog, attachmentsArray;
157
183
  return __generator(this, function (_a) {
158
- if (!this.enabled) {
159
- return [2 /*return*/];
160
- }
161
- if (meta.CID) {
162
- hasErr = testRunInfo.errs.length;
163
- testStatus = void 0;
164
- if (testRunInfo.skipped) {
165
- testStatus = models_1.ResultStatus.BLOCKED;
166
- }
167
- else if (hasErr > 0) {
168
- testStatus = models_1.ResultStatus.FAILED;
169
- }
170
- else {
171
- testStatus = models_1.ResultStatus.PASSED;
172
- }
173
- errorLog = testRunInfo.errs
174
- .map(function (x) { return formatError(x).replace(/[\u001b\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]/g, ''); })
175
- .join('\n');
176
- this.publishCaseResult({ name: name, info: testRunInfo, meta: meta, error: errorLog }, testStatus);
184
+ switch (_a.label) {
185
+ case 0:
186
+ if (!this.enabled) {
187
+ return [2 /*return*/];
188
+ }
189
+ if (!meta.CID) return [3 /*break*/, 3];
190
+ this.queued++;
191
+ hasErr = testRunInfo.errs.length;
192
+ testStatus = void 0;
193
+ if (testRunInfo.skipped) {
194
+ testStatus = src_1.ResultCreateStatusEnum.SKIPPED;
195
+ }
196
+ else if (hasErr > 0) {
197
+ testStatus = src_1.ResultCreateStatusEnum.FAILED;
198
+ }
199
+ else {
200
+ testStatus = src_1.ResultCreateStatusEnum.PASSED;
201
+ }
202
+ errorLog = testRunInfo.errs
203
+ .map(function (x) { return formatError(x).replace(/[\u001b\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]/g, ''); })
204
+ .join('\n');
205
+ attachmentsArray = [];
206
+ if (!(this.config.uploadAttachments && testRunInfo.screenshots.length > 0)) return [3 /*break*/, 2];
207
+ return [4 /*yield*/, this.uploadAttachments(testRunInfo)];
208
+ case 1:
209
+ attachmentsArray = _a.sent();
210
+ _a.label = 2;
211
+ case 2:
212
+ this.prepareCaseResult({ name: name, info: testRunInfo, meta: meta, error: errorLog }, testStatus, attachmentsArray);
213
+ _a.label = 3;
214
+ case 3: return [2 /*return*/];
177
215
  }
178
- return [2 /*return*/];
179
216
  });
180
217
  }); };
181
218
  this.reportTaskDone = function () { return __awaiter(_this, void 0, void 0, function () {
182
- var check;
219
+ var body;
183
220
  var _this = this;
184
221
  return __generator(this, function (_a) {
185
- if (!this.enabled) {
186
- return [2 /*return*/];
187
- }
188
- check = function () {
189
- setTimeout(function () {
190
- if (_this.pending) {
191
- check();
192
- }
193
- else {
194
- if (_this.results.length === 0) {
195
- console.warn("\n(Qase Reporter)\n \nNo testcases were matched.\n Ensure that your tests are declared correctly.\n");
196
- }
222
+ switch (_a.label) {
223
+ case 0:
224
+ if (!this.enabled) {
225
+ return [2 /*return*/];
197
226
  }
198
- }, 1000);
199
- };
200
- return [2 /*return*/];
227
+ return [4 /*yield*/, new Promise(function (resolve, reject) {
228
+ var timer = 0;
229
+ var interval = setInterval(function () {
230
+ timer++;
231
+ if (_this.config.runId && _this.queued === 0) {
232
+ clearInterval(interval);
233
+ resolve();
234
+ }
235
+ if (timer > 30) {
236
+ clearInterval(interval);
237
+ reject();
238
+ }
239
+ }, 1000);
240
+ })];
241
+ case 1:
242
+ _a.sent();
243
+ if (!(this.results.length === 0)) return [3 /*break*/, 2];
244
+ console.warn("\n(Qase Reporter)\n \nNo testcases were matched.\n Ensure that your tests are declared correctly.\n");
245
+ return [3 /*break*/, 5];
246
+ case 2:
247
+ body = {
248
+ results: this.results,
249
+ };
250
+ return [4 /*yield*/, this.api.results.createResultBulk(this.config.projectCode, Number(this.config.runId), body)];
251
+ case 3:
252
+ _a.sent();
253
+ this.log('Results sent to Qase');
254
+ if (!this.config.runComplete) return [3 /*break*/, 5];
255
+ return [4 /*yield*/, this.completeRun(this.config.runId)];
256
+ case 4:
257
+ _a.sent();
258
+ _a.label = 5;
259
+ case 5: return [2 /*return*/];
260
+ }
201
261
  });
202
262
  }); };
203
263
  this.config = prepareConfig();
204
264
  this.enabled = verifyConfig(this.config);
205
- this.api = new qaseio_1.QaseApi(this.config.apiToken);
206
- this.results = [];
265
+ this.api = new qaseio_1.QaseApi(this.config.apiToken, this.config.basePath, TestcafeQaseReporter.createHeaders(), CustomBoundaryFormData_1.CustomBoundaryFormData);
266
+ this.queued = 0;
207
267
  this.screenshots = {};
208
268
  }
269
+ TestcafeQaseReporter.getCaseId = function (meta) {
270
+ if (!meta.CID) {
271
+ return [];
272
+ }
273
+ return meta.CID;
274
+ };
275
+ TestcafeQaseReporter.createHeaders = function () {
276
+ var nodeVersion = process.version, os = process.platform, arch = process.arch;
277
+ var npmVersion = child_process_1.execSync('npm -v', { encoding: 'utf8' }).replace(/['"\n]+/g, '');
278
+ var qaseapiVersion = this.getPackageVersion('qaseio');
279
+ var testcafeVersion = this.getPackageVersion('testcafe');
280
+ var testcafeCaseReporterVersion = this.getPackageVersion('testcafe-reporter-qase');
281
+ var xPlatformHeader = "node=" + nodeVersion + "; npm=" + npmVersion + "; os=" + os + "; arch=" + arch;
282
+ // eslint-disable-next-line max-len
283
+ var xClientHeader = "testcafe=" + testcafeVersion + "; qase-testcafe=" + testcafeCaseReporterVersion + "; qaseapi=" + qaseapiVersion;
284
+ return {
285
+ 'X-Client': xClientHeader,
286
+ 'X-Platform': xPlatformHeader,
287
+ };
288
+ };
289
+ TestcafeQaseReporter.createRunObject = function (name, cases, args) {
290
+ return __assign({ title: name, cases: cases }, args);
291
+ };
292
+ TestcafeQaseReporter.getPackageVersion = function (name) {
293
+ var UNDEFINED = 'undefined';
294
+ try {
295
+ var pathToPackageJson = require.resolve(name + "/package.json", { paths: [process.cwd()] });
296
+ if (pathToPackageJson) {
297
+ try {
298
+ var packageString = fs_1.readFileSync(pathToPackageJson, { encoding: 'utf8' });
299
+ if (packageString) {
300
+ var packageObject = JSON.parse(packageString);
301
+ return packageObject.version;
302
+ }
303
+ return UNDEFINED;
304
+ }
305
+ catch (error) {
306
+ return UNDEFINED;
307
+ }
308
+ }
309
+ }
310
+ catch (error) {
311
+ return UNDEFINED;
312
+ }
313
+ };
314
+ TestcafeQaseReporter.prototype.completeRun = function (runId) {
315
+ return __awaiter(this, void 0, void 0, function () {
316
+ var _this = this;
317
+ return __generator(this, function (_a) {
318
+ switch (_a.label) {
319
+ case 0:
320
+ if (!(runId !== undefined)) return [3 /*break*/, 2];
321
+ return [4 /*yield*/, this.api.runs.completeRun(this.config.projectCode, Number(this.config.runId))
322
+ .then(function () {
323
+ _this.log('Run completed successfully');
324
+ })
325
+ .catch(function (err) {
326
+ _this.log("Error on completing run " + err);
327
+ })];
328
+ case 1:
329
+ _a.sent();
330
+ _a.label = 2;
331
+ case 2: return [2 /*return*/];
332
+ }
333
+ });
334
+ });
335
+ };
209
336
  TestcafeQaseReporter.prototype.log = function (message) {
210
337
  var optionalParams = [];
211
338
  for (var _i = 1; _i < arguments.length; _i++) {
@@ -216,36 +343,77 @@ var TestcafeQaseReporter = /** @class */ (function () {
216
343
  }
217
344
  };
218
345
  TestcafeQaseReporter.prototype.checkProject = function (projectCode, cb) {
219
- var _this = this;
220
- this.api.projects.exists(projectCode)
221
- .then(cb)
222
- .catch(function (err) {
223
- _this.log(err);
346
+ var _a;
347
+ return __awaiter(this, void 0, void 0, function () {
348
+ var resp, err_1;
349
+ return __generator(this, function (_b) {
350
+ switch (_b.label) {
351
+ case 0:
352
+ _b.trys.push([0, 3, , 4]);
353
+ return [4 /*yield*/, this.api.projects.getProject(projectCode)];
354
+ case 1:
355
+ resp = _b.sent();
356
+ return [4 /*yield*/, cb(Boolean((_a = resp.data.result) === null || _a === void 0 ? void 0 : _a.code))];
357
+ case 2:
358
+ _b.sent();
359
+ return [3 /*break*/, 4];
360
+ case 3:
361
+ err_1 = _b.sent();
362
+ this.log("Error on checking project " + err_1);
363
+ this.enabled = false;
364
+ return [3 /*break*/, 4];
365
+ case 4: return [2 /*return*/];
366
+ }
367
+ });
224
368
  });
225
369
  };
226
370
  TestcafeQaseReporter.prototype.createRun = function (name, description, cb) {
227
- var _this = this;
228
- this.api.runs.create(this.config.projectCode, new models_1.RunCreate(name || "Automated run " + new Date().toISOString(), [],
229
- // eslint-disable-next-line camelcase
230
- { description: description || 'Cypress automated run', is_autotest: true }))
231
- .then(function (res) { return res.data; })
232
- .then(cb)
233
- .catch(function (err) {
234
- _this.log("Error on creating run " + err);
371
+ return __awaiter(this, void 0, void 0, function () {
372
+ var runObject, res, err_2;
373
+ return __generator(this, function (_a) {
374
+ switch (_a.label) {
375
+ case 0:
376
+ _a.trys.push([0, 2, , 3]);
377
+ runObject = TestcafeQaseReporter.createRunObject(name || "Automated run " + new Date().toISOString(), [], {
378
+ description: description || 'TestCafe automated run',
379
+ environment_id: Number(this.config.environmentId),
380
+ is_autotest: true,
381
+ });
382
+ return [4 /*yield*/, this.api.runs.createRun(this.config.projectCode, runObject)];
383
+ case 1:
384
+ res = _a.sent();
385
+ cb(res.data);
386
+ return [3 /*break*/, 3];
387
+ case 2:
388
+ err_2 = _a.sent();
389
+ this.log("Error on creating run " + err_2);
390
+ this.enabled = false;
391
+ return [3 /*break*/, 3];
392
+ case 3: return [2 /*return*/];
393
+ }
394
+ });
235
395
  });
236
396
  };
237
397
  TestcafeQaseReporter.prototype.checkRun = function (runId, cb) {
238
- var _this = this;
239
- if (runId !== undefined) {
240
- this.api.runs.exists(this.config.projectCode, runId)
241
- .then(cb)
242
- .catch(function (err) {
243
- _this.log("Error on checking run " + err);
398
+ return __awaiter(this, void 0, void 0, function () {
399
+ var _this = this;
400
+ return __generator(this, function (_a) {
401
+ if (runId === undefined) {
402
+ cb(false);
403
+ return [2 /*return*/];
404
+ }
405
+ return [2 /*return*/, this.api.runs.getRun(this.config.projectCode, Number(runId))
406
+ .then(function (resp) {
407
+ var _a, _b;
408
+ _this.log("Get run result on checking run " + ((_a = resp.data.result) === null || _a === void 0 ? void 0 : _a.id));
409
+ cb(Boolean((_b = resp.data.result) === null || _b === void 0 ? void 0 : _b.id));
410
+ })
411
+ .catch(function (err) {
412
+ _this.log("Error on checking run " + err);
413
+ _this.enabled = false;
414
+ })];
244
415
  });
245
- }
246
- else {
247
- cb(false);
248
- }
416
+ });
249
417
  };
250
418
  TestcafeQaseReporter.prototype.saveRunId = function (runId) {
251
419
  this.config.runId = runId;
@@ -259,54 +427,71 @@ var TestcafeQaseReporter = /** @class */ (function () {
259
427
  }
260
428
  }
261
429
  };
262
- TestcafeQaseReporter.prototype.getCaseId = function (meta) {
263
- if (!meta.CID) {
264
- return [];
265
- }
266
- return meta.CID;
267
- };
268
430
  TestcafeQaseReporter.prototype.logTestItem = function (name, status) {
269
431
  var map = {
270
432
  failed: chalk_1.default(templateObject_8 || (templateObject_8 = __makeTemplateObject(["{red Test ", " ", "}"], ["{red Test ", " ", "}"])), name, status),
271
433
  passed: chalk_1.default(templateObject_9 || (templateObject_9 = __makeTemplateObject(["{green Test ", " ", "}"], ["{green Test ", " ", "}"])), name, status),
272
434
  pending: chalk_1.default(templateObject_10 || (templateObject_10 = __makeTemplateObject(["{blueBright Test ", " ", "}"], ["{blueBright Test ", " ", "}"])), name, status),
435
+ skipped: chalk_1.default(templateObject_11 || (templateObject_11 = __makeTemplateObject(["{blueBright Test ", " ", "}"], ["{blueBright Test ", " ", "}"])), name, status),
273
436
  };
274
437
  if (status) {
275
438
  this.log(map[status]);
276
439
  }
277
440
  };
278
- TestcafeQaseReporter.prototype.publishCaseResult = function (test, status) {
441
+ TestcafeQaseReporter.prototype.prepareCaseResult = function (test, status, attachments) {
279
442
  var _this = this;
280
443
  this.logTestItem(test.name, status);
281
- var caseIds = this.getCaseId(test.meta);
444
+ this.queued--;
445
+ var caseIds = TestcafeQaseReporter.getCaseId(test.meta);
282
446
  caseIds.forEach(function (caseId) {
283
- var publishTest = function (runId) {
284
- if (caseId) {
285
- var add_1 = caseIds.length > 1 ? chalk_1.default(templateObject_11 || (templateObject_11 = __makeTemplateObject([" {white For case ", "}"], [" {white For case ", "}"])), caseId) : '';
286
- _this.log(chalk_1.default(templateObject_12 || (templateObject_12 = __makeTemplateObject(["{gray Start publishing: ", "}", ""], ["{gray Start publishing: ", "}", ""])), test.name, add_1));
287
- _this.api.results.create(_this.config.projectCode, runId, new models_1.ResultCreate(parseInt(caseId, 10), status, {
288
- // eslint-disable-next-line camelcase
289
- time_ms: test.info.durationMs,
290
- stacktrace: test.error,
291
- comment: test.error ? test.error.split('\n')[0] : undefined,
292
- }))
293
- .then(function (res) {
294
- _this.results.push({ test: test, result: res.data });
295
- _this.log(chalk_1.default(templateObject_13 || (templateObject_13 = __makeTemplateObject(["{gray Result published: ", " ", "}", ""], ["{gray Result published: ", " ", "}", ""])), test.name, res.data.hash, add_1));
296
- })
297
- .catch(function (err) {
298
- _this.log(err);
299
- });
300
- }
301
- };
302
- if (_this.config.runId) {
303
- publishTest(_this.config.runId);
304
- }
305
- else {
306
- _this.pending.push(publishTest);
447
+ if (caseId) {
448
+ var add = caseIds.length > 1 ? chalk_1.default(templateObject_12 || (templateObject_12 = __makeTemplateObject([" {white For case ", "}"], [" {white For case ", "}"])), caseId) : '';
449
+ _this.log(chalk_1.default(templateObject_13 || (templateObject_13 = __makeTemplateObject(["{gray Ready for publishing: ", "}", ""], ["{gray Ready for publishing: ", "}", ""])), test.name, add));
450
+ var caseObject = {
451
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
452
+ case_id: parseInt(caseId, 10),
453
+ status: status,
454
+ time_ms: test.info.durationMs,
455
+ stacktrace: test.error,
456
+ comment: test.error ? test.error.split('\n')[0] : undefined,
457
+ attachments: attachments.length > 0
458
+ ? attachments
459
+ : undefined,
460
+ };
461
+ _this.results.push(caseObject);
307
462
  }
308
463
  });
309
464
  };
465
+ TestcafeQaseReporter.prototype.uploadAttachments = function (testRunInfo) {
466
+ return __awaiter(this, void 0, void 0, function () {
467
+ var _this = this;
468
+ return __generator(this, function (_a) {
469
+ switch (_a.label) {
470
+ case 0: return [4 /*yield*/, Promise.all(testRunInfo.screenshots.map(function (attachment) { return __awaiter(_this, void 0, void 0, function () {
471
+ var data, options, response;
472
+ var _a;
473
+ return __generator(this, function (_b) {
474
+ switch (_b.label) {
475
+ case 0:
476
+ data = fs_1.createReadStream(attachment === null || attachment === void 0 ? void 0 : attachment.screenshotPath);
477
+ options = {
478
+ headers: {
479
+ 'Content-Type': 'multipart/form-data; boundary=' + CustomBoundaryFormData_1.customBoundary,
480
+ },
481
+ };
482
+ return [4 /*yield*/, this.api.attachments.uploadAttachment(this.config.projectCode, [data], options)];
483
+ case 1:
484
+ response = _b.sent();
485
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
486
+ return [2 /*return*/, (_a = response.data.result) === null || _a === void 0 ? void 0 : _a[0].hash];
487
+ }
488
+ });
489
+ }); }))];
490
+ case 1: return [2 /*return*/, _a.sent()];
491
+ }
492
+ });
493
+ });
494
+ };
310
495
  return TestcafeQaseReporter;
311
496
  }());
312
497
  var templateObject_1, templateObject_2, templateObject_3, templateObject_4, templateObject_5, templateObject_6, templateObject_7, templateObject_8, templateObject_9, templateObject_10, templateObject_11, templateObject_12, templateObject_13;
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}