diff options
Diffstat (limited to 'scripts/frontend/merge_coverage_frontend.js')
-rw-r--r-- | scripts/frontend/merge_coverage_frontend.js | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/scripts/frontend/merge_coverage_frontend.js b/scripts/frontend/merge_coverage_frontend.js new file mode 100644 index 00000000000..507695b45e5 --- /dev/null +++ b/scripts/frontend/merge_coverage_frontend.js @@ -0,0 +1,31 @@ +const { create } = require('istanbul-reports'); +const { createCoverageMap } = require('istanbul-lib-coverage'); +const { createContext } = require('istanbul-lib-report'); +const { resolve } = require('path'); +const { sync } = require('glob'); + +const coverageMap = createCoverageMap(); + +const coverageDir = resolve(__dirname, '../../coverage-frontend'); +const reportFiles = sync(`${coverageDir}/*/coverage-final.json`); + +// Normalize coverage report generated by jest that has additional "data" key +// https://github.com/facebook/jest/issues/2418#issuecomment-423806659 +const normalizeReport = report => { + const normalizedReport = Object.assign({}, report); + Object.entries(normalizedReport).forEach(([k, v]) => { + if (v.data) normalizedReport[k] = v.data; + }); + return normalizedReport; +}; + +reportFiles + .map(reportFile => require(reportFile)) + .map(normalizeReport) + .forEach(report => coverageMap.merge(report)); + +const context = createContext({ coverageMap: coverageMap, dir: 'coverage-frontend' }); + +['json', 'lcov', 'text-summary', 'clover'].forEach(reporter => { + create(reporter, {}).execute(context); +}); |