Merge severalMochawesomeJSON reports
viayarn
:
$ yarn add mochawesome-merge --dev
vianpm
:
$ npm install mochawesome-merge --save-dev
const{merge}=require('mochawesome-merge')
// See Params section below
constoptions={
files:[
'./report/*.json',
// you can specify more files or globs if necessary:
'./mochawesome-report/*.json',
],
}
merge(options).then(report=>{
console.log(report)
})
$ npx mochawesome-merge./report/*.json -o output.json
or legacy usage
$ npx mochawesome-merge./report/*.json > output.json
You can specify as many paths as you wish:
$ npx mochawesome-merge./report/*.json./mochawesome-report/*.json -o output.json
You can also use a named option for the files like so:
$ npx mochawesome-merge -f./report/*.json./mochawesome-report/*.json -o output.json
files
:list of source report file paths. Can include glob patterns.- Aliases:
-f | --files
or first positional argument - Defaults to
[ "./mochawesome-report/mochawesome*.json" ]
.
output
:a file path to the bundled results. Should be ajson
file- Aliases:
-o | --output
- Defaults to
stdout
.
Version 4 has come with a breaking change —
it no more accepts params likereportDir
orrootDir
.
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.
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 tofiles
and change the value to point to your files
rather than the directory:
merge({
-reportDir: "mochawesome-report",
+files: [ "./mochawesome-report/*.json" ],
})
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.json
The main motivation to create this library was to be able to usemochawesometogether withCypress.
Since the version3.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, configurecypress.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 runcypress
together withmochawesome-merge
:
constcypress=require('cypress')
constmarge=require('mochawesome-report-generator')
const{merge}=require('mochawesome-merge')
cypress.run().then(
()=>{
generateReport()
},
error=>{
generateReport()
console.error(error)
process.exit(1)
}
)
functiongenerateReport(options){
returnmerge(options).then(report=>marge.create(report,options))
}
Alternatively, you can use CLI to merge JSON reports and generate HTML report.
For example, an AWS CodeBuildbuildspec.yml
file might look something like this:
phases:
install:
commands:
-yarn install
build:
commands:
-yarn cypress run
post_build:
commands:
-yarn mochawesome-merge > mochawesome.json
-yarn marge mochawesome.json