Novel Preposterous Mockery

    mochawesome-merge

    4.2.2 • Public • Published

    mochawesome-merge

    CircleCI codecov semantic-release

    Merge several Mochawesome JSON reports

    Installation

    via yarn:

    $ yarn add mochawesome-merge --dev
    

    via npm:

    $ npm install mochawesome-merge --save-dev
    

    Examples

    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.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
    

    Params

    • 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 a json file
    • 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.json

    Cypress

    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:
          - yarn install
      build:
        commands:
          - yarn cypress run
      post_build:
        commands:
          - yarn mochawesome-merge > mochawesome.json
          - yarn marge mochawesome.json

    Keywords

    none

    Install

    npm i mochawesome-merge

    DownloadsWeekly Downloads

    597,200

    Version

    4.2.2

    License

    MIT

    Unpacked Size

    22.6 kB

    Total Files

    19

    Last publish

    Collaborators

    • antontelesh