UNPKG

@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
"use strict"; 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;