UNPKG

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