html-reporter
Version:
Html-reporter and GUI for viewing and managing results of a tests run. Currently supports Testplane and Hermione.
202 lines • 9.14 kB
JavaScript
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.StaticTestsTreeBuilder = void 0;
const lodash_1 = __importDefault(require("lodash"));
const base_1 = require("./base");
const constants_1 = require("../constants");
const sqlite_1 = require("../adapters/test-result/sqlite");
class StaticTestsTreeBuilder extends base_1.BaseTestsTreeBuilder {
constructor(options) {
super(options);
this._stats = {
...initStats(),
perBrowser: {}
};
this._skips = [];
this._failedTestIds = {};
this._passedTestIds = {};
this._skippedTestIds = {};
}
build(rows = []) {
const attemptsMap = new Map();
const browsers = {};
for (const row of rows) {
const testPath = JSON.parse(row[constants_1.DB_COLUMN_INDEXES.suitePath]);
const browserName = row[constants_1.DB_COLUMN_INDEXES.name];
const testId = this._buildId(testPath);
const browserId = this._buildId(testId, browserName);
attemptsMap.set(browserId, attemptsMap.has(browserId) ? attemptsMap.get(browserId) + 1 : 0);
const attempt = attemptsMap.get(browserId);
const formattedResult = new sqlite_1.SqliteTestResultAdapter(row, attempt);
addBrowserVersion(browsers, formattedResult);
this.addTestResult(formattedResult);
this._calcStats(formattedResult, { testId, browserName });
}
this.sortTree();
return {
tree: this.tree,
stats: this._stats,
skips: this._skips,
browsers: lodash_1.default.map(browsers, (versions, id) => ({ id, versions: Array.from(versions) }))
};
}
_addResultIdToBrowser(browserId, testResultId) {
this._tree.browsers.byId[browserId].resultIds.push(testResultId);
}
_calcStats(testResult, { testId, browserName }) {
const testIdWithBrowser = this._buildId(testId, browserName);
const { status } = testResult;
const { browserVersion } = testResult.meta;
const version = browserVersion || constants_1.BrowserVersions.UNKNOWN;
if (!this._stats.perBrowser[browserName]) {
this._stats.perBrowser[browserName] = {};
}
if (!this._stats.perBrowser[browserName][version]) {
this._stats.perBrowser[browserName][version] = initStats();
}
switch (status) {
case constants_1.TestStatus.FAIL:
case constants_1.TestStatus.ERROR: {
if (this._passedTestIds[testIdWithBrowser]) {
delete this._passedTestIds[testIdWithBrowser];
this._failedTestIds[testIdWithBrowser] = true;
this._stats.passed--;
this._stats.failed++;
this._stats.retries++;
this._stats.perBrowser[browserName][version].passed--;
this._stats.perBrowser[browserName][version].failed++;
this._stats.perBrowser[browserName][version].retries++;
return;
}
if (this._failedTestIds[testIdWithBrowser]) {
this._stats.retries++;
this._stats.perBrowser[browserName][version].retries++;
return;
}
if (this._skippedTestIds[testIdWithBrowser]) {
delete this._skippedTestIds[testIdWithBrowser];
this._failedTestIds[testIdWithBrowser] = true;
this._stats.skipped--;
this._stats.failed++;
this._stats.retries++;
this._stats.perBrowser[browserName][version].skipped--;
this._stats.perBrowser[browserName][version].failed++;
this._stats.perBrowser[browserName][version].retries++;
return;
}
this._failedTestIds[testIdWithBrowser] = true;
this._stats.failed++;
this._stats.total++;
this._stats.perBrowser[browserName][version].failed++;
this._stats.perBrowser[browserName][version].total++;
return;
}
case constants_1.TestStatus.SUCCESS: {
if (this._passedTestIds[testIdWithBrowser]) {
this._stats.retries++;
this._stats.perBrowser[browserName][version].retries++;
return;
}
if (this._failedTestIds[testIdWithBrowser]) {
delete this._failedTestIds[testIdWithBrowser];
this._passedTestIds[testIdWithBrowser] = true;
this._stats.failed--;
this._stats.passed++;
this._stats.retries++;
this._stats.perBrowser[browserName][version].failed--;
this._stats.perBrowser[browserName][version].passed++;
this._stats.perBrowser[browserName][version].retries++;
return;
}
if (this._skippedTestIds[testIdWithBrowser]) {
delete this._skippedTestIds[testIdWithBrowser];
this._passedTestIds[testIdWithBrowser] = true;
this._stats.skipped--;
this._stats.passed++;
this._stats.retries++;
this._stats.perBrowser[browserName][version].skipped--;
this._stats.perBrowser[browserName][version].passed++;
this._stats.perBrowser[browserName][version].retries++;
return;
}
this._passedTestIds[testIdWithBrowser] = true;
this._stats.passed++;
this._stats.total++;
this._stats.perBrowser[browserName][version].passed++;
this._stats.perBrowser[browserName][version].total++;
return;
}
case constants_1.TestStatus.SKIPPED: {
if (this._failedTestIds[testIdWithBrowser]) {
delete this._failedTestIds[testIdWithBrowser];
this._skippedTestIds[testIdWithBrowser] = true;
this._stats.failed--;
this._stats.skipped++;
this._stats.retries++;
this._stats.perBrowser[browserName][version].failed--;
this._stats.perBrowser[browserName][version].skipped++;
this._stats.perBrowser[browserName][version].retries++;
this._skips.push({
browser: browserName,
suite: testId,
comment: testResult.skipReason
});
return;
}
if (this._passedTestIds[testIdWithBrowser]) {
delete this._passedTestIds[testIdWithBrowser];
this._skippedTestIds[testIdWithBrowser] = true;
this._stats.passed--;
this._stats.skipped++;
this._stats.retries++;
this._stats.perBrowser[browserName][version].passed--;
this._stats.perBrowser[browserName][version].skipped++;
this._stats.perBrowser[browserName][version].retries++;
this._skips.push({
browser: browserName,
suite: testId,
comment: testResult.skipReason
});
return;
}
if (this._skippedTestIds[testIdWithBrowser]) {
this._stats.retries++;
this._stats.perBrowser[browserName][version].retries++;
return;
}
this._skippedTestIds[testIdWithBrowser] = true;
this._skips.push({
browser: browserName,
suite: testId,
comment: testResult.skipReason
});
this._stats.skipped++;
this._stats.perBrowser[browserName][version].skipped++;
this._stats.total++;
this._stats.perBrowser[browserName][version].total++;
}
}
}
}
exports.StaticTestsTreeBuilder = StaticTestsTreeBuilder;
function initStats() {
return {
total: 0,
passed: 0,
failed: 0,
skipped: 0,
retries: 0
};
}
function addBrowserVersion(browsers, testResult) {
const { browserId } = testResult;
if (!browsers[browserId]) {
browsers[browserId] = new Set();
}
const { browserVersion = constants_1.BrowserVersions.UNKNOWN } = testResult.meta;
browsers[browserId].add(browserVersion);
}
//# sourceMappingURL=static.js.map