UNPKG

@honeybook/jest-stare

Version:

jest html reporter (results processor) to view HTML jest results, save raw JSON, and invoke multiple reporters

194 lines 21.6 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"); const util_1 = require("util"); 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 = !(0, util_1.isNullOrUndefined)(config.reportTitle) ? config.reportTitle : "jest-stare!"; document.title = tabTitle; } static setReportHeadline(config) { const brandTitle = !(0, util_1.isNullOrUndefined)(config.reportHeadline) ? config.reportHeadline : "jest-stare"; const a = $("#navbar-title"); a.text(brandTitle); } static setCoverageLink(config) { if (!(0, util_1.isNullOrUndefined)(config.coverageLink)) { 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmVuZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3JlbmRlci9SZW5kZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsNEJBQTRCO0FBQzVCLGdEQUE2QztBQUM3QywyQ0FBd0M7QUFDeEMsNENBQXlDO0FBQ3pDLGdEQUE2QztBQUM3QyxrREFBK0M7QUFDL0MsdURBQW9EO0FBR3BELCtCQUF5QztBQVN6QyxNQUFhLE1BQU07SUFRUixNQUFNLENBQUMsSUFBSTtRQUNkLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxrQkFBa0IsRUFBRSxHQUFHLEVBQUU7WUFDL0MsTUFBTSxNQUFNLEdBQXFCLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7WUFDdEUsTUFBTSxPQUFPLEdBQXFCLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7WUFFeEUsSUFBSTtnQkFDQSxNQUFNLFlBQVksR0FBMEIsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMscUJBQXFCLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO2dCQUN4RixNQUFNLEtBQUssR0FBRyxJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztnQkFDekUsT0FBTyxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxVQUFVLEVBQUUsRUFBRTtvQkFDdkMsVUFBVSxDQUFDLFlBQVksR0FBRyxVQUFVLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7Z0JBQ3pFLENBQUMsQ0FBQyxDQUFDO2FBQ047WUFBQyxPQUFPLENBQUMsRUFBRTthQUVYO1lBRUQsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUs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