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); });