Code Monkey home page Code Monkey logo

mochawesome-merge's Introduction

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

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

mochawesome-merge's People

Contributors

antontelesh avatar dependabot[bot] avatar ojizero avatar basile-parent avatar danantal avatar eltonlauhk01 avatar gabrielcaamano-ujet avatar houce avatar jankanty avatar stormslowly avatar xputerkas avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.