mochawesome-merge v5.0.0
mochawesome-merge
Merge several Mochawesome JSON reports
Installation
$ npm install mochawesome-merge --save-devExamples
JavaScript API
const { merge } = require('mochawesome-merge')
// See Params section below
const options = {
files: [
'./report/*.json',
// you can specify more files or globs if necessary:
'./mochawesome-report/*.json',
],
}
merge(options).then(report => {
console.log(report)
})CLI
$ npx mochawesome-merge ./report/*.json -o output.jsonor legacy usage
$ npx mochawesome-merge ./report/*.json > output.jsonYou can specify as many paths as you wish:
$ npx mochawesome-merge ./report/*.json ./mochawesome-report/*.json -o output.jsonYou can also use a named option for the files like so:
$ npx mochawesome-merge -f ./report/*.json ./mochawesome-report/*.json -o output.jsonParams
files: list of source report file paths. Can include glob patterns.- Aliases:
-f | --filesor first positional argument - Defaults to
["./mochawesome-report/mochawesome*.json"].
output: a file path to the bundled results. Should be ajsonfile- Aliases:
-o | --output - Defaults to
stdout.
Migration to v4
Version 4 has come with a breaking change —
it no more accepts params like reportDir or rootDir.
Instead, it now accepts a list of file paths or glob patterns
to source report files. If you are migrating to version 4
you likely have to change your params accordignly.
JavaScript API
Let's say you have a bunch of reports that you want to merge
under ./mochawesome-report directory.
Then you're probably using mochawesome-merge like this:
merge({
reportDir: "mochawesome-report",
});After switching to version 4 you need to rename
reportDir param to files
and change the value to point to your files
rather than the directory:
merge({
- reportDir: "mochawesome-report",
+ files: ["./mochawesome-report/*.json"],
})CLI
After upgrading to version 4 all you need
is to remove the --reportDir option
and instead specify a glob pattern
or several ones if necessary, separating each one with a space:
- npx mochawesome-merge --reportDir mochawesome-report > mochawesome.json
+ npx mochawesome-merge ./mochawesome-report/*.json > mochawesome.jsonCypress
The main motivation to create this library was to be able to use mochawesome together with Cypress.
Since the version 3.0.0, Cypress runs every spec separately, which leads to generating multiple mochawesome reports, one for each spec. mochawesome-merge can be used to merge these reports and then generate one HTML report for all your cypress tests.
First, configure cypress.json:
{
// use mochawesome reporter as usually
"reporter": "mochawesome",
"reporterOptions": {
// disable overwrite to generate many JSON reports
"overwrite": false,
// do not generate intermediate HTML reports
"html": false,
// generate intermediate JSON reports
"json": true
}
}Then, write your custom script to run cypress together with mochawesome-merge:
const cypress = require('cypress')
const marge = require('mochawesome-report-generator')
const { merge } = require('mochawesome-merge')
cypress.run().then(
() => {
generateReport()
},
error => {
generateReport()
console.error(error)
process.exit(1)
}
)
function generateReport(options) {
return merge(options).then(report => marge.create(report, options))
}Alternatively, you can use CLI to merge JSON reports and generate HTML report.
For example, an AWS CodeBuild buildspec.yml file might look something like this:
phases:
install:
commands:
- npm ci
build:
commands:
- npm run cypress
post_build:
commands:
- npm run mochawesome-merge > mochawesome.json
- npm run marge mochawesome.json9 months ago
9 months ago
9 months ago
3 years ago
3 years ago
4 years ago
5 years ago
5 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago