Utility functions to calculate mutation testing metrics.
npm install mutation-testing-metrics

Utility function to calculate mutation testing metrics..
See mutant states and metrics on the Stryker website for more details about mutation testing metrics.
See the below example (uses TypeScript):
``ts
import { MetricsResult, calculateMutationTestMetrics } from 'mutation-testing-metrics';
import { MutationTestResult } from 'mutation-testing-report-schema';
const mutationTestReport: MutationTestResult = {
/... Get a holds of mutation test results somehow /
};
const result: MetricsResult = calculateMutationTestMetrics(mutationTestReport);
console.log('Mutation score', result.metrics.mutationScore);
`
Calculates the full mutation test metrics from both the files-under-test as well as (optionally) the test files.
The input is a mutation test result valid according to the [https://github.com/stryker-mutator/mutation-testing-elements/tree/master/packages/report-schema#readme]
Returns A MutationTestMetricsResult that contains both the systemUnderTestMetrics as well as the testMetrics
Calculates the files-under-test metrics inside of a mutation testing report.
The input is a mutation test result valid according to the [https://github.com/stryker-mutator/mutation-testing-elements/tree/master/packages/report-schema#readme]
Aggregates multiple reports together into a single report, grouped by module.
Input: resultsByModule The MutationTestResult objects by module name.
Types are included and documented with TypeScript.
You can use this script to merge multiple JSON reports together.
`js
const { aggregateResultsByModule } = require('mutation-testing-metrics');
const fs = require('fs');
const packagesRoot = './packages';
const reportsPerModule = fs
.readdirSync(packagesRoot)
.map((pkg) => [pkg, ${packagesRoot}/${pkg}/reports/mutation/mutation.json])
.filter(([, report]) => fs.existsSync(report))
.map(([pkg, report]) => [pkg, require(report)])
.reduce((acc, [pkg, report]) => {
acc[pkg] = report;
return acc;
}, {});
const monoReport = aggregateResultsByModule(reportsPerModule);
fs.writeFileSync('./mono-report.html', reportTemplate(monoReport), 'utf-8');
function reportTemplate(report) {
const scriptContent = fs.readFileSync(require.resolve('mutation-testing-elements/dist/mutation-test-elements.js'), 'utf-8');
return
;
}
function escapeHtmlTags(json) {
return json.replace(/}
``