diff --git a/frontend/karma.conf.js b/frontend/karma.conf.js index ba77107c6..d9ec87303 100644 --- a/frontend/karma.conf.js +++ b/frontend/karma.conf.js @@ -31,12 +31,66 @@ module.exports = (config) => { "tests/unit/**/*_test.js": ["webpack"], }, - reporters: ["progress", "html"], + reporters: ["progress", "html", "coverage-istanbul"], htmlReporter: { outputFile: "tests/unit.html", }, + coverageIstanbulReporter: { + // reports can be any that are listed here: https://github.com/istanbuljs/istanbuljs/tree/aae256fb8b9a3d19414dcf069c592e88712c32c6/packages/istanbul-reports/lib + reports: ["html", "lcovonly", "text-summary"], + + // base output directory. If you include %browser% in the path it will be replaced with the karma browser name + dir: path.join(__dirname, "coverage"), + + // Combines coverage information from multiple browsers into one report rather than outputting a report + // for each browser. + combineBrowserReports: true, + + // if using webpack and pre-loaders, work around webpack breaking the source path + fixWebpackSourcePaths: true, + + // Omit files with no statements, no functions and no branches from the report + skipFilesWithNoCoverage: true, + + // Most reporters accept additional config options. You can pass these through the `report-config` option + "report-config": { + // all options available at: https://github.com/istanbuljs/istanbuljs/blob/aae256fb8b9a3d19414dcf069c592e88712c32c6/packages/istanbul-reports/lib/html/index.js#L135-L137 + html: { + // outputs the report in ./coverage/html + subdir: "html", + }, + }, + + // enforce percentage thresholds + // anything under these percentages will cause karma to fail with an exit code of 1 if not running in watch mode + thresholds: { + emitWarning: true, // set to `true` to not fail the test command when thresholds are not met + // thresholds for all files + global: { + statements: 100, + lines: 100, + branches: 100, + functions: 100, + }, + // thresholds per file + each: { + statements: 100, + lines: 100, + branches: 100, + functions: 100, + overrides: { + "baz/component/**/*.js": { + statements: 98, + }, + }, + }, + }, + + verbose: false, // output config used by istanbul for debugging + }, + webpack: { mode: "development",