UNPKG

unmock-jest

Version:

Jest reporter for [Unmock](https://unmock.io).

49 lines 2.42 kB
"use strict"; 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