unmock-jest
Version:
Jest reporter for [Unmock](https://unmock.io).
49 lines • 2.42 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const React = require("react");
const ReactDomServer = require("react-dom/server");
const xmlBuilder = require("xmlbuilder");
const test_suites_1 = require("./components/test-suites");
const stylesheet_1 = require("./stylesheet");
const utils_1 = require("./utils");
const createHtml = ({ css, body }) => {
return `<html>
<head>
<meta charset="utf-8">
<title>Unmock Report</title>
<link href="https://fonts.googleapis.com/css?family=Lato:100,300,400,700,900" rel="stylesheet" />
<style type="text/css">${stylesheet_1.default}</style>
<style type="text/css">${css}</style>
</head>
<body>
${body}
</body>
</html>`;
};
exports.PAGE_TITLE = "Unmock Jest report";
const renderReact = (element) => ReactDomServer.renderToStaticMarkup(element);
const buildHeaderDiv = (input) => {
const headerDiv = xmlBuilder.begin().ele("div", { class: "header" });
const headerTextBoxDiv = headerDiv.ele("div", { class: "header__text-box" });
headerTextBoxDiv.ele("header").ele("h1", { class: "header" }, exports.PAGE_TITLE);
headerTextBoxDiv.ele("div", { class: "timestamp" }, new Date(input.jestData.aggregatedResult.startTime).toLocaleString());
const aggregatedResult = input.jestData.aggregatedResult;
headerTextBoxDiv.ele("div", { class: "metadata" }, `${aggregatedResult.numTotalTests} tests -- ${aggregatedResult.numPassedTests} passed / ${aggregatedResult.numFailedTests} failed / ${aggregatedResult.numPendingTests} pending`);
return headerDiv;
};
const buildBodyDiv = (input) => {
const reportBody = xmlBuilder.begin().element("div", { class: "report" });
reportBody.importDocument(buildHeaderDiv(input));
const testSuites = utils_1.sortTestSuites(utils_1.toTestSuites(input));
const [css, TestSuitesComponent] = test_suites_1.default({ testSuites });
reportBody.raw(renderReact(React.createElement(TestSuitesComponent, null)));
return [reportBody, css];
};
exports.createReport = (input) => {
const redactedInput = Object.assign(Object.assign({}, input), { snapshots: input.snapshots.map((snapshot) => utils_1.authRedactor(snapshot)) });
const [body, css] = buildBodyDiv(redactedInput);
const htmlOutput = createHtml({ css, body: body.end() });
return htmlOutput;
};
exports.default = exports.createReport;
//# sourceMappingURL=create-report.js.map