UNPKG

@honeybook/jest-stare

Version:

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

46 lines 4.12 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.TestDifference = void 0; const diff2html = require("diff2html"); const $ = require("jquery"); class TestDifference { static containsDiff(jestFailureMessage) { return jestFailureMessage.search(TestDifference.DIFF_INDICATOR) >= 0; } static generate(jestFailureMessage) { const jestDiff = TestDifference.isolateDiff(jestFailureMessage); const diffjson = diff2html.parse(jestDiff); const diffHtml = diff2html.html(diffjson, { drawFileList: false, outputFormat: "side-by-side", matching: "lines" }); return $(diffHtml).get(0); } static isolateDiff(jestFailureMessage) { const beginIndex = jestFailureMessage.search(TestDifference.DIFF_INDICATOR); const endIndex = jestFailureMessage.search(TestDifference.DIFF_END_INDICATOR); let isolated = jestFailureMessage.substring(beginIndex, endIndex); let snapshotChanges = 0; let receivedChanges = 0; const changeLines = isolated.split(/\r?\n/g); for (const line of changeLines) { if (/^- /.test(line)) { snapshotChanges++; } else if (/^\+ /.test(line)) { receivedChanges++; } } const changesIndicator = `\n@@ -0,${snapshotChanges} +0,${receivedChanges} @@\n`; isolated = isolated.replace("- Snapshot", "--- Snapshot"); isolated = isolated.replace("+ Received", "+++ Received"); const lines = isolated.split(/\r?\n/g); lines.splice(2, 0, changesIndicator); return lines.join(`\n`); } } exports.TestDifference = TestDifference; TestDifference.DIFF_INDICATOR = /- Snapshot\s*(\-\s*[0-9]+)?\n\s*\+ Received\s*(\+\s*[0-9]+)?/g; TestDifference.DIFF_END_INDICATOR = /(at .*? \(.*?:[0-9]+:[0-9]+\)\s)/g; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVGVzdERpZmZlcmVuY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcmVuZGVyL2RpZmYvVGVzdERpZmZlcmVuY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsdUNBQXVDO0FBQ3ZDLDRCQUE0QjtBQU81QixNQUFhLGNBQWM7SUFnQmhCLE1BQU0sQ0FBQyxZQUFZLENBQUMsa0JBQTBCO1FBQ2pELE9BQU8sa0JBQWtCLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDekUsQ0FBQztJQVNNLE1BQU0sQ0FBQyxRQUFRLENBQUMsa0JBQTBCO1FBQzdDLE1BQU0sUUFBUSxHQUFHLGNBQWMsQ0FBQyxXQUFXLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUNoRSxNQUFNLFFBQVEsR0FBRyxTQUFTLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzNDLE1BQU0sUUFBUSxHQUFHLFNBQVMsQ0FBQyxJQUFJLENBQzNCLFFBQVEsRUFDUjtZQUNJLFlBQVksRUFBRSxLQUFLO1lBQ25CLFlBQVksRUFBRSxjQUFjO1lBQzVCLFFBQVEsRUFBRSxPQUFPO1NBQ3BCLENBQ0osQ0FBQztRQUVGLE9BQU8sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBV08sTUFBTSxDQUFDLFdBQVcsQ0FBQyxrQkFBMEI7UUFDakQsTUFBTSxVQUFVLEdBQUcsa0JBQWtCLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUM1RSxNQUFNLFFBQVEsR0FBRyxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFDOUUsSUFBSSxRQUFRLEdBQUcsa0JBQWtCLENBQUMsU0FBUyxDQUFDLFVBQVUsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUVsRSxJQUFJLGVBQWUsR0FBRyxDQUFDLENBQUM7UUFDeEIsSUFBSSxlQUFlLEdBQUcsQ0FBQyxDQUFDO1FBQ3hCLE1BQU0sV0FBVyxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDN0MsS0FBSyxNQUFNLElBQUksSUFBSSxXQUFXLEVBQUU7WUFDNUIsSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFO2dCQUNsQixlQUFlLEVBQUUsQ0FBQzthQUNyQjtpQkFBTSxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUU7Z0JBQzFCLGVBQWUsRUFBRSxDQUFDO2FBQ3JCO1NBQ0o7UUFDRCxNQUFNLGdCQUFnQixHQUFHLFdBQVcsZUFBZSxPQUFPLGVBQWUsT0FBTyxDQUFDO1FBQ2pGLFFBQVEsR0FBRyxRQUFRLENBQUMsT0FBTyxDQUFDLFlBQVksRUFBRSxjQUFjLENBQUMsQ0FBQztRQUUxRCxRQUFRLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQyxZQUFZLEVBQUUsY0FBYyxDQUFDLENBQUM7UUFDMUQsTUFBTSxLQUFLLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUN2QyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztRQUVyQyxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDNUIsQ0FBQzs7QUExRUwsd0NBMkVDO0FBckVpQiw2QkFBYyxHQUFXLCtEQUErRCxDQUFDO0FBRXpGLGlDQUFrQixHQUFXLG1DQUFtQyxDQUFDIn0=