Socket
Socket
Sign inDemoInstall

jest-html-reporter

Package Overview
Dependencies
597
Maintainers
1
Versions
69
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

Comparing version 3.0.1-beta.0 to 3.1.0-beta.0

2

dist/index.js

@@ -1,1 +0,1 @@

"use strict";function e(e){return e&&"object"==typeof e&&"default"in e?e.default:e}var t=e(require("dateformat")),s=e(require("fs")),a=e(require("mkdirp")),i=e(require("path")),l=e(require("strip-ansi")),n=e(require("xmlbuilder"));const r=e=>{const t=[],s=[],a=[];return e.forEach(e=>{const i=[],l=[],n=[];e.testResults.forEach(e=>{"pending"===e.status?i.push(e):"failed"===e.status?l.push(e):n.push(e)}),i.length>0&&t.push({...e,testResults:i}),l.length>0&&s.push({...e,testResults:l}),n.length>0&&a.push({...e,testResults:n})}),[].concat(t,s,a)},o=e=>(e&&e.sort((e,t)=>t.perfStats.end-t.perfStats.start-(e.perfStats.end-e.perfStats.start)),e),u=e=>(e&&e.sort((e,t)=>e.perfStats.end-e.perfStats.start-(t.perfStats.end-t.perfStats.start)),e),c=e=>{if(e){const t=e.sort((e,t)=>g(e.testFilePath,t.testFilePath,!0));return t.forEach(e=>{e.testResults.sort((e,t)=>g(e.ancestorTitles.join(" "),t.ancestorTitles.join(" "),!0)),e.testResults.sort((e,t)=>g(e.title,t.title,!0))}),t}return e},d=e=>{if(e){const t=e.sort((e,t)=>g(e.testFilePath,t.testFilePath));return t.forEach(e=>{e.testResults.sort((e,t)=>g(e.ancestorTitles.join(" "),t.ancestorTitles.join(" "))),e.testResults.sort((e,t)=>g(e.title,t.title))}),t}return e},g=(e,t,s=!1)=>!s&&e<t||s&&e>t?-1:!s&&e>t||s&&e<t?1:0;class h{constructor(e,t,s){this.testData=e,this.consoleLogList=s,this.setupConfig(t)}async generate(){try{const e=await this.renderTestReport(),t=this.getConfigValue("outputPath");return await a(i.dirname(t)),this.getConfigValue("append")?await s.appendFileSync(t,e):await s.writeFileSync(t,e),this.logMessage("success",`Report generated (${t})`),e}catch(e){this.logMessage("error",e)}}async renderTestReport(){const e=await this.renderTestReportContent();if(this.getConfigValue("boilerplate")){return(await s.readFileSync(this.getConfigValue("boilerplate"),"utf8")).replace("{jesthtmlreporter-content}",e.toString())}const t={html:{head:{meta:{"@charset":"utf-8"},title:{"#text":this.getConfigValue("pageTitle")},style:void 0,link:void 0}}};let a=i.join(__dirname,`../style/${this.getConfigValue("theme")}.css`);if(this.getConfigValue("styleOverridePath")&&(a=this.getConfigValue("styleOverridePath")),!this.getConfigValue("useCssFile")&&!this.getConfigValue("styleOverridePath")){const e=await s.readFileSync(a,"utf8");t.html.head.style={"@type":"text/css","#text":e}}else t.html.head.link={"@rel":"stylesheet","@type":"text/css","@href":a};const l=n.create(t),r=l.ele("body");return r.raw(e.toString()),this.getConfigValue("customScriptPath")&&r.raw(`<script src="${this.getConfigValue("customScriptPath")}"><\/script>`),l}async renderTestReportContent(){try{if(!this.testData||0===Object.entries(this.testData).length)throw Error("No test data provided");const e=n.begin().element("div",{id:"jesthtml-content"}),s=e.ele("header");s.ele("h1",{id:"title"},this.getConfigValue("pageTitle"));const a=this.getConfigValue("logo");a&&s.ele("img",{id:"logo",src:a});const i=e.ele("div",{id:"metadata-container"}),g=new Date(this.testData.startTime);i.ele("div",{id:"timestamp"},`Started: ${t(g,this.getConfigValue("dateFormat"))}`);const h=i.ele("div",{id:"summary"}),f=h.ele("div",{id:"suite-summary"});f.ele("div",{class:"summary-total"},`Suites (${this.testData.numTotalTestSuites})`),f.ele("div",{class:`summary-passed${0===this.testData.numPassedTestSuites?" summary-empty":""}`},`${this.testData.numPassedTestSuites} passed`),f.ele("div",{class:`summary-failed${0===this.testData.numFailedTestSuites?" summary-empty":""}`},`${this.testData.numFailedTestSuites} failed`),f.ele("div",{class:`summary-pending${0===this.testData.numPendingTestSuites?" summary-empty":""}`},`${this.testData.numPendingTestSuites} pending`);const m=h.ele("div",{id:"test-summary"});m.ele("div",{class:"summary-total"},`Tests (${this.testData.numTotalTests})`),m.ele("div",{class:`summary-passed${0===this.testData.numPassedTests?" summary-empty":""}`},`${this.testData.numPassedTests} passed`),m.ele("div",{class:`summary-failed${0===this.testData.numFailedTests?" summary-empty":""}`},`${this.testData.numFailedTests} failed`),m.ele("div",{class:`summary-pending${0===this.testData.numPendingTests?" summary-empty":""}`},`${this.testData.numPendingTests} pending`);const T=((e,t)=>{switch(t&&t.toLowerCase()){case"status":return r(e);case"executiondesc":return o(e);case"executionasc":return u(e);case"titledesc":return c(e);case"titleasc":return d(e);default:return e}})(this.testData.testResults,this.getConfigValue("sort")),p=this.getConfigValue("statusIgnoreFilter");let R=[];return p&&(R=p.replace(/\s/g,"").toLowerCase().split(",")),T.map((t,s)=>{if(!t.testResults||t.testResults.length<=0)return;const a=e.ele("div",{id:`suite-${s+1}`,class:"suite-container"}),i=a.ele("div",{class:"suite-info"});i.ele("div",{class:"suite-path"},t.testFilePath);const n=(t.perfStats.end-t.perfStats.start)/1e3;i.ele("div",{class:`suite-time${n>this.getConfigValue("executionTimeWarningThreshold")?" warn":""}`},`${n}s`);const r=a.ele("div",{class:"suite-tests"});if(t.testResults.filter(e=>!R.includes(e.status)).forEach(async e=>{const t=r.ele("div",{class:`test-result ${e.status}`}),s=t.ele("div",{class:"test-info"});if(s.ele("div",{class:"test-suitename"},e.ancestorTitles.join(" > ")),s.ele("div",{class:"test-title"},e.title),s.ele("div",{class:"test-status"},e.status),s.ele("div",{class:"test-duration"},`${e.duration/1e3}s`),e.failureMessages&&e.failureMessages.length>0&&this.getConfigValue("includeFailureMsg")){const s=t.ele("div",{class:"failureMessages"}," ");e.failureMessages.forEach(e=>{s.ele("pre",{class:"failureMsg"},l(e))})}}),this.consoleLogList&&this.consoleLogList.length>0&&this.getConfigValue("includeConsoleLog")){const e=this.consoleLogList.find(e=>e.filePath===t.testFilePath);if(e&&e.logs.length>0){const t=a.ele("div",{class:"suite-consolelog"});t.ele("div",{class:"suite-consolelog-header"},"Console Log"),e.logs.forEach(e=>{const s=t.ele("div",{class:"suite-consolelog-item"});s.ele("pre",{class:"suite-consolelog-item-origin"},l(e.origin)),s.ele("pre",{class:"suite-consolelog-item-message"},l(e.message))})}}}),e}catch(e){this.logMessage("error",e)}}setupConfig(e){const{append:t,boilerplate:a,customScriptPath:l,dateFormat:n,executionTimeWarningThreshold:r,logo:o,includeConsoleLog:u,includeFailureMsg:c,outputPath:d,pageTitle:g,theme:h,sort:f,statusIgnoreFilter:m,styleOverridePath:T,useCssFile:p}=e||{};this.config={append:{defaultValue:!1,environmentVariable:"JEST_HTML_REPORTER_APPEND",configValue:t},boilerplate:{defaultValue:null,environmentVariable:"JEST_HTML_REPORTER_BOILERPLATE",configValue:a},customScriptPath:{defaultValue:null,environmentVariable:"JEST_HTML_REPORTER_CUSTOM_SCRIPT_PATH",configValue:l},dateFormat:{defaultValue:"yyyy-mm-dd HH:MM:ss",environmentVariable:"JEST_HTML_REPORTER_DATE_FORMAT",configValue:n},executionTimeWarningThreshold:{defaultValue:5,environmentVariable:"JEST_HTML_REPORTER_EXECUTION_TIME_WARNING_THRESHOLD",configValue:r},logo:{defaultValue:null,environmentVariable:"JEST_HTML_REPORTER_LOGO",configValue:o},includeFailureMsg:{defaultValue:!1,environmentVariable:"JEST_HTML_REPORTER_INCLUDE_FAILURE_MSG",configValue:c},includeConsoleLog:{defaultValue:!1,environmentVariable:"JEST_HTML_REPORTER_INCLUDE_CONSOLE_LOG",configValue:u},outputPath:{defaultValue:i.join(process.cwd(),"test-report.html"),environmentVariable:"JEST_HTML_REPORTER_OUTPUT_PATH",configValue:d},pageTitle:{defaultValue:"Test Report",environmentVariable:"JEST_HTML_REPORTER_PAGE_TITLE",configValue:g},theme:{defaultValue:"defaultTheme",environmentVariable:"JEST_HTML_REPORTER_THEME",configValue:h},sort:{defaultValue:null,environmentVariable:"JEST_HTML_REPORTER_SORT",configValue:f},statusIgnoreFilter:{defaultValue:null,environmentVariable:"JEST_HTML_REPORTER_STATUS_FILTER",configValue:m},styleOverridePath:{defaultValue:null,environmentVariable:"JEST_HTML_REPORTER_STYLE_OVERRIDE_PATH",configValue:T},useCssFile:{defaultValue:!1,environmentVariable:"JEST_HTML_REPORTER_USE_CSS_FILE",configValue:p}};try{const e=s.readFileSync(i.join(process.cwd(),"jesthtmlreporter.config.json"),"utf8");if(e){const t=JSON.parse(e);for(const e of Object.keys(t))this.config[e]&&(this.config[e].configValue=t[e]);return this.config}}catch(e){}try{const e=s.readFileSync(i.join(process.cwd(),"package.json"),"utf8");if(e){const t=JSON.parse(e)["jest-html-reporter"];for(const e of Object.keys(t))this.config[e]&&(this.config[e].configValue=t[e]);return this.config}}catch(e){}}getConfigValue(e){const t=this.config[e];if(t)return process.env[t.environmentVariable]?process.env[t.environmentVariable]:t.configValue||t.defaultValue}logMessage(e="default",t){const s={default:"%s",success:"%s",error:"%s"},a=s[e]?s[e]:s.default,i=`jest-html-reporter >> ${t}`;return void 0===process.env.JEST_WORKER_ID&&console.log(a,i),{logColor:a,logMsg:i}}}const f=(e,t,s)=>new h(e,t,s).generate();module.exports=function(e,t){const s=[];if(Object.prototype.hasOwnProperty.call(e,"testResults"))return f(e.testResults,t),e;this.onTestResult=(e,t)=>{t.console&&s.push({filePath:t.testFilePath,logs:t.console})},this.onRunComplete=(e,a)=>f(a,t,s)};
"use strict";function e(e){return e&&"object"==typeof e&&"default"in e?e.default:e}var t=e(require("dateformat")),s=e(require("fs")),i=e(require("mkdirp")),a=e(require("path")),l=e(require("strip-ansi")),n=e(require("xmlbuilder"));const r=e=>{const t=[],s=[],i=[];return e.forEach(e=>{const a=[],l=[],n=[];e.testResults.forEach(e=>{"pending"===e.status?a.push(e):"failed"===e.status?l.push(e):n.push(e)}),a.length>0&&t.push({...e,testResults:a}),l.length>0&&s.push({...e,testResults:l}),n.length>0&&i.push({...e,testResults:n})}),[].concat(t,s,i)},o=e=>(e&&e.sort((e,t)=>t.perfStats.end-t.perfStats.start-(e.perfStats.end-e.perfStats.start)),e),u=e=>(e&&e.sort((e,t)=>e.perfStats.end-e.perfStats.start-(t.perfStats.end-t.perfStats.start)),e),c=e=>{if(e){const t=e.sort((e,t)=>d(e.testFilePath,t.testFilePath,!0));return t.forEach(e=>{e.testResults.sort((e,t)=>d(e.ancestorTitles.join(" "),t.ancestorTitles.join(" "),!0)),e.testResults.sort((e,t)=>d(e.title,t.title,!0))}),t}return e},g=e=>{if(e){const t=e.sort((e,t)=>d(e.testFilePath,t.testFilePath));return t.forEach(e=>{e.testResults.sort((e,t)=>d(e.ancestorTitles.join(" "),t.ancestorTitles.join(" "))),e.testResults.sort((e,t)=>d(e.title,t.title))}),t}return e},d=(e,t,s=!1)=>!s&&e<t||s&&e>t?-1:!s&&e>t||s&&e<t?1:0;class h{constructor(e,t,s,i){this.testData=e,this.jestConfig=s,this.consoleLogList=i,this.setupConfig(t)}async generate(){try{const e=await this.renderTestReport(),t=this.replaceRootDirInPath(this.jestConfig?this.jestConfig.rootDir:"",this.getConfigValue("outputPath"));return await i(a.dirname(t)),this.getConfigValue("append")?await this.appendToFile(t,e):await s.writeFileSync(t,e),this.logMessage("success",`Report generated (${t})`),e}catch(e){this.logMessage("error",e)}}async renderTestReport(){const e=await this.renderTestReportContent();if(this.getConfigValue("boilerplate")){return(await s.readFileSync(this.getConfigValue("boilerplate"),"utf8")).replace("{jesthtmlreporter-content}",e&&e.toString())}const t=n.create({html:{}}),i=t.ele("head");i.ele("meta",{charset:"utf-8"}),i.ele("title",{},this.getConfigValue("pageTitle"));let l=a.join(__dirname,`../style/${this.getConfigValue("theme")}.css`);if(this.getConfigValue("styleOverridePath")&&(l=this.getConfigValue("styleOverridePath")),!this.getConfigValue("useCssFile")&&!this.getConfigValue("styleOverridePath")){const e=await s.readFileSync(l,"utf8");i.raw(`<style type="text/css">${e}</style>`)}else i.ele("link",{rel:"stylesheet",type:"text/css",href:l});const r=t.ele("body");return e&&r.raw(e.toString()),this.getConfigValue("customScriptPath")&&r.raw(`<script src="${this.getConfigValue("customScriptPath")}"><\/script>`),t}async renderTestReportContent(){try{if(!this.testData||0===Object.entries(this.testData).length)throw Error("No test data provided");const e=n.begin().element("div",{id:"jesthtml-content"}),s=e.ele("header");s.ele("h1",{id:"title"},this.getConfigValue("pageTitle"));const i=this.getConfigValue("logo");i&&s.ele("img",{id:"logo",src:i});const a=e.ele("div",{id:"metadata-container"});if(this.testData.startTime&&!isNaN(this.testData.startTime)){const e=new Date(this.testData.startTime);if(e){const s=t(e,this.getConfigValue("dateFormat"));a.ele("div",{id:"timestamp"},`Started: ${s}`)}}const d=a.ele("div",{id:"summary"}),h=d.ele("div",{id:"suite-summary"});h.ele("div",{class:"summary-total"},`Suites (${this.testData.numTotalTestSuites})`),h.ele("div",{class:`summary-passed${0===this.testData.numPassedTestSuites?" summary-empty":""}`},`${this.testData.numPassedTestSuites} passed`),h.ele("div",{class:`summary-failed${0===this.testData.numFailedTestSuites?" summary-empty":""}`},`${this.testData.numFailedTestSuites} failed`),h.ele("div",{class:`summary-pending${0===this.testData.numPendingTestSuites?" summary-empty":""}`},`${this.testData.numPendingTestSuites} pending`);const f=d.ele("div",{id:"test-summary"});f.ele("div",{class:"summary-total"},`Tests (${this.testData.numTotalTests})`),f.ele("div",{class:`summary-passed${0===this.testData.numPassedTests?" summary-empty":""}`},`${this.testData.numPassedTests} passed`),f.ele("div",{class:`summary-failed${0===this.testData.numFailedTests?" summary-empty":""}`},`${this.testData.numFailedTests} failed`),f.ele("div",{class:`summary-pending${0===this.testData.numPendingTests?" summary-empty":""}`},`${this.testData.numPendingTests} pending`);const m=((e,t)=>{switch(t&&t.toLowerCase()){case"status":return r(e);case"executiondesc":return o(e);case"executionasc":return u(e);case"titledesc":return c(e);case"titleasc":return g(e);default:return e}})(this.testData.testResults,this.getConfigValue("sort")),T=this.getConfigValue("statusIgnoreFilter");let p=[];return T&&(p=T.replace(/\s/g,"").toLowerCase().split(",")),m&&m.map((t,s)=>{if(!t.testResults||t.testResults.length<=0)return;const i=e.ele("div",{id:`suite-${s+1}`,class:"suite-container"}),a=i.ele("div",{class:"suite-info"});a.ele("div",{class:"suite-path"},t.testFilePath);const n=(t.perfStats.end-t.perfStats.start)/1e3;a.ele("div",{class:`suite-time${n>this.getConfigValue("executionTimeWarningThreshold")?" warn":""}`},`${n}s`);const r=i.ele("div",{class:"suite-tests"});if(t.testResults.filter(e=>!p.includes(e.status)).forEach(async e=>{const t=r.ele("div",{class:`test-result ${e.status}`}),s=t.ele("div",{class:"test-info"});if(s.ele("div",{class:"test-suitename"},e.ancestorTitles.join(" > ")),s.ele("div",{class:"test-title"},e.title),s.ele("div",{class:"test-status"},e.status),s.ele("div",{class:"test-duration"},`${e.duration/1e3}s`),e.failureMessages&&e.failureMessages.length>0&&this.getConfigValue("includeFailureMsg")){const s=t.ele("div",{class:"failureMessages"}," ");e.failureMessages.forEach(e=>{s.ele("pre",{class:"failureMsg"},l(e))})}}),this.consoleLogList&&this.consoleLogList.length>0&&this.getConfigValue("includeConsoleLog")){const e=this.consoleLogList.find(e=>e.filePath===t.testFilePath);if(e&&e.logs.length>0){const t=i.ele("div",{class:"suite-consolelog"});t.ele("div",{class:"suite-consolelog-header"},"Console Log"),e.logs.forEach(e=>{const s=t.ele("div",{class:"suite-consolelog-item"});s.ele("pre",{class:"suite-consolelog-item-origin"},l(e.origin)),s.ele("pre",{class:"suite-consolelog-item-message"},l(e.message))})}}}),e}catch(e){this.logMessage("error",e)}}setupConfig(e){const{append:t,boilerplate:i,customScriptPath:l,dateFormat:n,executionTimeWarningThreshold:r,logo:o,includeConsoleLog:u,includeFailureMsg:c,outputPath:g,pageTitle:d,theme:h,sort:f,statusIgnoreFilter:m,styleOverridePath:T,useCssFile:p}=e||{};this.config={append:{defaultValue:!1,environmentVariable:"JEST_HTML_REPORTER_APPEND",configValue:t},boilerplate:{defaultValue:null,environmentVariable:"JEST_HTML_REPORTER_BOILERPLATE",configValue:i},customScriptPath:{defaultValue:null,environmentVariable:"JEST_HTML_REPORTER_CUSTOM_SCRIPT_PATH",configValue:l},dateFormat:{defaultValue:"yyyy-mm-dd HH:MM:ss",environmentVariable:"JEST_HTML_REPORTER_DATE_FORMAT",configValue:n},executionTimeWarningThreshold:{defaultValue:5,environmentVariable:"JEST_HTML_REPORTER_EXECUTION_TIME_WARNING_THRESHOLD",configValue:r},logo:{defaultValue:null,environmentVariable:"JEST_HTML_REPORTER_LOGO",configValue:o},includeFailureMsg:{defaultValue:!1,environmentVariable:"JEST_HTML_REPORTER_INCLUDE_FAILURE_MSG",configValue:c},includeConsoleLog:{defaultValue:!1,environmentVariable:"JEST_HTML_REPORTER_INCLUDE_CONSOLE_LOG",configValue:u},outputPath:{defaultValue:a.join(process.cwd(),"test-report.html"),environmentVariable:"JEST_HTML_REPORTER_OUTPUT_PATH",configValue:g},pageTitle:{defaultValue:"Test Report",environmentVariable:"JEST_HTML_REPORTER_PAGE_TITLE",configValue:d},theme:{defaultValue:"defaultTheme",environmentVariable:"JEST_HTML_REPORTER_THEME",configValue:h},sort:{defaultValue:null,environmentVariable:"JEST_HTML_REPORTER_SORT",configValue:f},statusIgnoreFilter:{defaultValue:null,environmentVariable:"JEST_HTML_REPORTER_STATUS_FILTER",configValue:m},styleOverridePath:{defaultValue:null,environmentVariable:"JEST_HTML_REPORTER_STYLE_OVERRIDE_PATH",configValue:T},useCssFile:{defaultValue:!1,environmentVariable:"JEST_HTML_REPORTER_USE_CSS_FILE",configValue:p}};try{const e=s.readFileSync(a.join(process.cwd(),"jesthtmlreporter.config.json"),"utf8");if(e){const t=JSON.parse(e);for(const e of Object.keys(t))this.config[e]&&(this.config[e].configValue=t[e]);return this.config}}catch(e){}try{const e=s.readFileSync(a.join(process.cwd(),"package.json"),"utf8");if(e){const t=JSON.parse(e)["jest-html-reporter"];for(const e of Object.keys(t))this.config[e]&&(this.config[e].configValue=t[e]);return this.config}}catch(e){}}getConfigValue(e){const t=this.config[e];if(t)return process.env[t.environmentVariable]?process.env[t.environmentVariable]:t.configValue||t.defaultValue}async appendToFile(e,t){let i=t;const a=await s.readFileSync(e,"utf8");if(a){const l=/<body>(.*?)<\/body>/gm.exec(t);if(l){const[e]=l;i=e}let n=a;const r=/<\/body>/gm.exec(a),o=r?r.index:0;return n=[a.slice(0,o),i,a.slice(o)].join(""),s.writeFileSync(e,n)}return s.appendFileSync(e,i)}replaceRootDirInPath(e,t){return/^<rootDir>/.test(t)?a.resolve(e,a.normalize("./"+t.substr("<rootDir>".length))):t}logMessage(e="default",t){const s={default:"%s",success:"%s",error:"%s"},i=s[e]?s[e]:s.default,a=`jest-html-reporter >> ${t}`;return void 0===process.env.JEST_WORKER_ID&&console.log(i,a),{logColor:i,logMsg:a}}}const f=(e,t,s,i)=>new h(e,t,s,i).generate();module.exports=function(e,t){const s=[];if(Object.prototype.hasOwnProperty.call(e,"testResults"))return f(e.testResults,t,e),e;this.onTestResult=(e,t)=>{t.console&&s.push({filePath:t.testFilePath,logs:t.console})},this.onRunComplete=(i,a)=>f(a,t,e,s)};
{
"name": "jest-html-reporter",
"version": "3.0.1-beta.0",
"version": "3.1.0-beta.0",
"description": "Jest test results processor for generating a summary in HTML",

@@ -5,0 +5,0 @@ "main": "dist/index.js",

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc