@gmangiapelo/wdio-azure-devops-service
Version:
Wdio Service to inject result of automatic test run in Azure DevOps TestPlan
97 lines (96 loc) • 3.89 kB
JavaScript
;
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true });
const azuredevops_test_reporter_1 = require("@gmangiapelo/azuredevops-test-reporter");
class AzureDevopsService {
constructor(_options) {
this._options = _options;
_options = Object.assign(_options, { stdout: true });
this._azureReporter = new azuredevops_test_reporter_1.AzureTestPlanReporter(this._options);
}
onPrepare() {
return __awaiter(this, void 0, void 0, function* () {
yield this._azureReporter.init();
yield this._azureReporter.starTestRun();
});
}
onComplete() {
return __awaiter(this, void 0, void 0, function* () {
yield this._azureReporter.stopTestRun();
});
}
afterTest(test, context, result) {
return __awaiter(this, void 0, void 0, function* () {
let caseId = this.parseCaseIDString(test.parent);
if (caseId == 'notDefined') {
caseId = this.parseCaseIDString(test.title);
if (caseId == 'notDefined') {
return new Promise((resolve) => {
resolve();
});
}
}
const testResult = {
testCaseId: caseId,
result: result.passed ? 'Passed' : 'Failed',
message: '', // pass a substring of result.error
};
yield this._azureReporter.init();
const runId = yield this._azureReporter.getCurrentTestRunId();
yield this._azureReporter.sendTestResult(testResult, runId);
});
}
afterScenario(world, result) {
return __awaiter(this, void 0, void 0, function* () {
const caseId = this.parseCaseID(world.pickle.tags);
if (caseId == 'notDefined') {
return new Promise((resolve) => {
resolve();
});
}
const testResult = {
testCaseId: caseId,
result: result.passed ? 'Passed' : 'Failed',
message: result.error || '',
};
yield this._azureReporter.init();
const runId = yield this._azureReporter.getCurrentTestRunId();
yield this._azureReporter.sendTestResult(testResult, runId);
});
}
parseCaseID(pickleTags) {
const caseID = 'notDefined';
let patt = /@?[cC](\d+)/g;
if (this._options.caseIdRegex) {
patt = new RegExp(this._options.caseIdRegex, 'g');
}
for (const tag of pickleTags) {
const matchInfo = patt.exec(tag.name);
if (matchInfo != null) {
return matchInfo[1];
}
}
return caseID;
}
parseCaseIDString(title) {
const caseID = 'notDefined';
let patt = /@?[cC](\d+)/g;
if (this._options.caseIdRegex) {
patt = new RegExp(this._options.caseIdRegex, 'g');
}
const matchInfo = patt.exec(title);
if (matchInfo != null) {
return matchInfo[1];
}
return caseID;
}
}
exports.default = AzureDevopsService;