@honeybook/jest-stare
Version:
jest html reporter (results processor) to view HTML jest results, save raw JSON, and invoke multiple reporters
193 lines • 21.4 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.Render = void 0;
const $ = require("jquery");
const Switch_1 = require("./navigation/Switch");
const Constants_1 = require("./Constants");
const Status_1 = require("./charts/Status");
const Doughnut_1 = require("./charts/Doughnut");
const TestSuite_1 = require("./suites/TestSuite");
const TestSummary_1 = require("./summary/TestSummary");
class Render {
static init() {
document.addEventListener("DOMContentLoaded", () => {
const config = JSON.parse($("#test-config").text());
const results = JSON.parse($("#test-results").text());
try {
const globalConfig = JSON.parse($("#test-global-config").text());
const regex = new RegExp(Render.escapeRegExp(globalConfig.rootDir), "g");
results.testResults.forEach((testResult) => {
testResult.testFilePath = testResult.testFilePath.replace(regex, "");
});
}
catch (e) {
}
Render.show(results, config);
});
}
static escapeRegExp(str) {
return str.replace(/([.*+?^=!:${}()|\[\]\/\\])/g, "\\$1");
}
static show(results, config) {
const labels = [Constants_1.Constants.PASSED_LABEL, Constants_1.Constants.FAILED_LABEL];
const backgroundColor = [Constants_1.Constants.PASS, Constants_1.Constants.FAIL];
Render.setReportTitle(config);
Render.setReportHeadline(config);
Render.setCoverageLink(config);
if (!config.disableCharts) {
const suitesData = Render.buildChartsData(results.numPassedTestSuites, results.numFailedTestSuites, results.numPendingTestSuites);
Doughnut_1.Doughnut.createChart($("#test-suites-canvas"), suitesData);
const testsChart = Render.buildChartsData(results.numPassedTests, results.numFailedTests, results.numPendingTests, results.numTodoTests);
Doughnut_1.Doughnut.createChart($("#tests-canvas"), testsChart);
let snapshotChart = Render.buildChartsData(results.snapshot.matched, results.snapshot.unmatched);
snapshotChart = Render.addSnapshotChartData(results, snapshotChart);
Doughnut_1.Doughnut.createChart($("#snapshots-canvas"), snapshotChart);
}
this.updateStatusArea(results);
const tableHtml = TestSuite_1.TestSuite.create(results);
$("#loading-info").hide();
$("#test-results").replaceWith($(tableHtml));
if (config.reportSummary) {
const testSummary = TestSummary_1.TestSummary.create(results);
$("#test-summary").replaceWith($(testSummary));
}
if (config.hidePassing) {
$("#lab-passoff-switch").prop("checked", false);
$(`.${Constants_1.Constants.PASSED_TEST}`).hide();
}
if (config.hideFailing) {
$("#lab-failoff-switch").prop("checked", false);
$(`.${Constants_1.Constants.FAILED_TEST}`).hide();
}
if (config.hidePending) {
$("#lab-pendingoff-switch").prop("checked", false);
$(`.${Constants_1.Constants.PENDING_TEST}`).hide();
}
if (config.hideTodo) {
$("#lab-todooff-switch").prop("checked", false);
$(`.${Constants_1.Constants.TODO_TEST}`).hide();
}
if (config.hideFailing && config.hidePassing) {
$(`.${Constants_1.Constants.FAILED_TEST}\\.${Constants_1.Constants.PASSED_TEST}`).hide();
}
if (config.hidePending && config.hidePassing) {
$(`.${Constants_1.Constants.PASSED_TEST}\\.${Constants_1.Constants.PENDING_TEST}`).hide();
}
if (config.hideFailing && config.hidePending) {
$(`.${Constants_1.Constants.FAILED_TEST}\\.${Constants_1.Constants.PENDING_TEST}`).hide();
}
if (config.hideFailing && config.hidePassing && config.hidePending) {
$(`.${Constants_1.Constants.FAILED_TEST}\\.${Constants_1.Constants.PASSED_TEST}\\.${Constants_1.Constants.PENDING_TEST}`).hide();
}
const allCheckArray = new Array();
allCheckArray.push($("#lab-passoff-switch"));
allCheckArray.push($("#lab-failoff-switch"));
allCheckArray.push($("#lab-pendingoff-switch"));
allCheckArray.push($("#lab-todooff-switch"));
const allStylesArray = [Constants_1.Constants.PASSED_TEST, Constants_1.Constants.FAILED_TEST, Constants_1.Constants.PENDING_TEST, Constants_1.Constants.TODO_TEST];
const allSwitchArray = ["#lab-passoff-switch", "#lab-failoff-switch", "#lab-pendingoff-switch", "#lab-todooff-switch"];
allStylesArray.forEach((style, index) => {
const checksMinusCurrentOne = allCheckArray.slice();
checksMinusCurrentOne.splice(index, 1);
const stylesMinusCurrentOne = allStylesArray.slice();
stylesMinusCurrentOne.splice(index, 1);
const switchElement = new Switch_1.Switch($(allSwitchArray[index]), $("." + style), style, checksMinusCurrentOne, stylesMinusCurrentOne);
});
}
static updateStatusArea(results) {
Status_1.Status.setResultsClass($("#test-suites-results"), results.numPassedTestSuites, results.numTotalTestSuites - results.numPassedTestSuites - results.numPendingTestSuites);
Status_1.Status.setResultsClass($("#tests-results"), results.numPassedTests, results.numTotalTests - results.numPassedTests - results.numPendingTests);
Status_1.Status.setResultsClass($("#snapshots-results"), results.snapshot.matched, results.snapshot.unmatched);
if (results.snapshot.added === 0 &&
results.snapshot.matched === 0 &&
results.snapshot.unchecked === 0 &&
results.snapshot.unmatched === 0 &&
results.snapshot.updated === 0) {
$("#snapshots-group").hide();
}
}
static setReportTitle(config) {
const tabTitle = config.reportTitle != null ? config.reportTitle : "jest-stare!";
document.title = tabTitle;
}
static setReportHeadline(config) {
const brandTitle = config.reportHeadline != null ? config.reportHeadline : "jest-stare";
const a = $("#navbar-title");
a.text(brandTitle);
}
static setCoverageLink(config) {
if (config.coverageLink != null) {
const a = $("#coverage-link");
a.addClass("active");
a.removeClass("disabled");
a.attr("href", config.coverageLink);
}
}
static buildChartsData(passedTests, failedTests, pendingTests, todoTests) {
const chartData = {
labels: [],
backgroundColor: [],
data: [],
};
if (passedTests > 0) {
chartData.labels.push(Constants_1.Constants.PASSED_LABEL);
chartData.backgroundColor.push(Constants_1.Constants.PASS);
chartData.data.push(passedTests);
}
if (failedTests > 0) {
chartData.labels.push(Constants_1.Constants.FAILED_LABEL);
chartData.backgroundColor.push(Constants_1.Constants.FAIL);
chartData.data.push(failedTests);
}
if (pendingTests > 0) {
chartData.labels.push(Constants_1.Constants.PENDING_LABEL);
chartData.backgroundColor.push(Constants_1.Constants.PENDING);
chartData.data.push(pendingTests);
}
if (todoTests > 0) {
chartData.labels.push(Constants_1.Constants.TODO_LABEL);
chartData.backgroundColor.push(Constants_1.Constants.TODO);
chartData.data.push(todoTests);
}
return chartData;
}
static addSnapshotChartData(results, snapshotChart) {
if (results.snapshot.filesAdded > 0) {
snapshotChart.labels.push(Constants_1.Constants.ADDED_LABEL);
snapshotChart.backgroundColor.push(Constants_1.Constants.ADDED);
snapshotChart.data.push(results.snapshot.filesAdded);
}
if (results.snapshot.unchecked > 0) {
if (results.snapshot.didUpdate) {
snapshotChart.labels.push(Constants_1.Constants.UPDATED_SNAPSHOT_TEST_LABEL);
snapshotChart.backgroundColor.push(Constants_1.Constants.UPDATED_SNAPSHOT_TEST);
snapshotChart.data.push(results.snapshot.unchecked);
}
else {
snapshotChart.labels.push(Constants_1.Constants.OBSOLETE_SNAPSHOT_TEST_LABEL);
snapshotChart.backgroundColor.push(Constants_1.Constants.OBSOLETE_SNAPSHOT_TEST);
snapshotChart.data.push(results.snapshot.unchecked);
}
}
if (results.snapshot.updated > 0) {
snapshotChart.labels.push(Constants_1.Constants.CHANGED_LABEL);
snapshotChart.backgroundColor.push(Constants_1.Constants.CHANGED);
snapshotChart.data.push(results.snapshot.updated);
}
if (results.snapshot.filesRemoved > 0) {
if (results.snapshot.didUpdate) {
snapshotChart.labels.push(Constants_1.Constants.REMOVED_OBSOLETE_SNAPSHOT_FILE_LABEL);
snapshotChart.backgroundColor.push(Constants_1.Constants.REMOVED_OBSOLETE_SNAPSHOT_FILE);
snapshotChart.data.push(results.snapshot.filesRemoved);
}
else {
snapshotChart.labels.push(Constants_1.Constants.OBSOLETE_SNAPSHOT_FILE_LABEL);
snapshotChart.backgroundColor.push(Constants_1.Constants.OBSOLETE_SNAPSHOT_FILE);
snapshotChart.data.push(results.snapshot.filesRemoved);
}
}
return snapshotChart;
}
}
exports.Render = Render;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmVuZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3JlbmRlci9SZW5kZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsNEJBQTRCO0FBQzVCLGdEQUE2QztBQUM3QywyQ0FBd0M7QUFDeEMsNENBQXlDO0FBQ3pDLGdEQUE2QztBQUM3QyxrREFBK0M7QUFDL0MsdURBQW9EO0FBWXBELE1BQWEsTUFBTTtJQVFSLE1BQU0sQ0FBQyxJQUFJO1FBQ2QsUUFBUSxDQUFDLGdCQUFnQixDQUFDLGtCQUFrQixFQUFFLEdBQUcsRUFBRTtZQUMvQyxNQUFNLE1BQU0sR0FBcUIsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztZQUN0RSxNQUFNLE9BQU8sR0FBcUIsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztZQUV4RSxJQUFJO2dCQUNBLE1BQU0sWUFBWSxHQUEwQixJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7Z0JBQ3hGLE1BQU0sS0FBSyxHQUFHLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO2dCQUN6RSxPQUFPLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFVBQVUsRUFBRSxFQUFFO29CQUN2QyxVQUFVLENBQUMsWUFBWSxHQUFHLFVBQVUsQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztnQkFDekUsQ0FBQyxDQUFDLENBQUM7YUFDTjtZQUFDLE9BQU8sQ0FBQyxFQUFFO2FBRVg7WUFFRCxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsQ0FB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QUFDLElBQUksRUFBRSxDQUFDO1NBQ3pDO1FBR0QsSUFBSSxNQUFNLENBQUMsV0FBVyxFQUFFO1lBQ3BCLENBQUMsQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDbkQsQ0FBQyxDQUFDLElBQUkscUJBQVMsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO1NBQzFDO1FBR0QsSUFBSSxNQUFNLENBQUMsUUFBUSxFQUFFO1lBQ2pCLENBQUMsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDaEQsQ0FBQyxDQUFDLElBQUkscUJBQVMsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO1NBQ3ZDO1FBRUQsSUFBSSxNQUFNLENBQUMsV0FBVyxJQUFJLE1BQU0sQ0FBQyxXQUFXLEVBQUU7WUFDMUMsQ0FBQyxDQUFDLElBQUkscUJBQVMsQ0FBQyxXQUFXLE1BQU0scUJBQVMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO1NBQ3BFO1FBRUQsSUFBSSxNQUFNLENBQUMsV0FBVyxJQUFJLE1BQU0sQ0FBQyxXQUFXLEVBQUU7WUFDMUMsQ0FBQyxDQUFDLElBQUkscUJBQVMsQ0FBQyxXQUFXLE1BQU0scUJBQVMsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO1NBQ3JFO1FBRUQsSUFBSSxNQUFNLENBQUMsV0FBVyxJQUFJLE1BQU0sQ0FBQyxXQUFXLEVBQUU7WUFDMUMsQ0FBQyxDQUFDLElBQUkscUJBQVMsQ0FBQyxXQUFXLE1BQU0scUJBQVMsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO1NBQ3JFO1FBRUQsSUFBSSxNQUFNLENBQUMsV0FBVyxJQUFJLE1BQU0sQ0FBQyxXQUFXLElBQUksTUFBTSxDQUFDLFdBQVcsRUFBRTtZQUNoRSxDQUFDLENBQUMsSUFBSSxxQkFBUyxDQUFD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