cypress-mochawesome-reporter
Version:
Zero config Mochawesome reporter for Cypress with screenshots
158 lines (116 loc) • 9.66 kB
Markdown
# cypress-mochawesome-reporter
[](http://www.npmjs.com/package/cypress-mochawesome-reporter)
[](https://github.com/LironEr/cypress-mochawesome-reporter)
[](http://www.npmjs.com/package/cypress-mochawesome-reporter)
[](http://www.npmjs.com/package/cypress-mochawesome-reporter)
Zero config Mochawesome reporter for Cypress with screenshots attached to tests.
[Example report](https://lironer.github.io/cypress-mochawesome-reporter/example-report/mochawesome.html)
<img src="./docs/assets/failed-test-with-screenshot.png" alt="Mochawesome report with fail test screenshot" width="50%" />
## Cypress compatibility
| reporter version | cypress version | reporter branch |
| ---------------- | ----------------------------------------------------------------------------- | ----------------------------------------------------------------------- |
| `v4` | node >= 22<br/>>= `6.7.0` <br />>= `6.2.0` with `experimentalRunEvents: true` | `main` |
| `v3` | node >= 14<br/>>= `6.7.0` <br />>= `6.2.0` with `experimentalRunEvents: true` | [`v2`](https://github.com/LironEr/cypress-mochawesome-reporter/tree/v3) |
| `v2` | >= `6.7.0` <br />>= `6.2.0` with `experimentalRunEvents: true` | [`v2`](https://github.com/LironEr/cypress-mochawesome-reporter/tree/v2) |
| `v1` | >= `4.0.0` | [`v1`](https://github.com/LironEr/cypress-mochawesome-reporter/tree/v1) |
[migration guide from `v1` to `v2`](./migration.md)
## Setup
> This setup tutorial works with Cypress >= v10, looking for older version setup? [here](https://github.com/LironEr/cypress-mochawesome-reporter/blob/9c11e7005351e8750fe48b90d010c9bf29539956/README.md#setup)
1. install cypress-mochawesome-reporter
```
npm i --save-dev cypress-mochawesome-reporter
```
or
```
yarn add -D cypress-mochawesome-reporter
```
2. Change cypress reporter & setup hooks
Edit config file (`cypress.config.js` by default)
```js
const { defineConfig } = require('cypress');
module.exports = defineConfig({
reporter: 'cypress-mochawesome-reporter',
e2e: {
setupNodeEvents(on, config) {
require('cypress-mochawesome-reporter/plugin')(on);
},
},
});
```
If you are override `before:run` or `after:run` hooks, use this:
```js
const { defineConfig } = require('cypress');
const { beforeRunHook, afterRunHook } = require('cypress-mochawesome-reporter/lib');
module.exports = defineConfig({
reporter: 'cypress-mochawesome-reporter',
e2e: {
setupNodeEvents(on, config) {
on('before:run', async (details) => {
console.log('override before:run');
await beforeRunHook(details);
});
on('after:run', async () => {
console.log('override after:run');
await afterRunHook();
});
},
},
});
```
3. Add to `cypress/support/e2e.js`
```javascript
import 'cypress-mochawesome-reporter/register';
```
4. (optional, if your are using `cypress-cucumber-preprocessor`) Add to `cypress/support/step_definitions/index.js`
```javascript
import 'cypress-mochawesome-reporter/cucumberSupport';
```
> ⚠️ `cypress-cucumber-preprocessor` uses the same hooks as `cypress-mochawesome-reporter`, you also need to install [cypress-on-fix](https://github.com/bahmutov/cypress-on-fix). Full example of using `cypress-mochawesome-reporter` with `cypress-cucumber-preprocessor` can be found [here](examples/cucumber).
5. run cypress
## Custom options
If you want to customize your HTML report with [mochawesome-report-generator flags](https://github.com/adamgruber/mochawesome-report-generator#cli-flags) just add the flags you want to `reporterOptions`
```js
const { defineConfig } = require('cypress');
module.exports = defineConfig({
reporter: 'cypress-mochawesome-reporter',
reporterOptions: {
charts: true,
reportPageTitle: 'custom-title',
embeddedScreenshots: true,
inlineAssets: true,
saveAllAttempts: false,
},
e2e: {
setupNodeEvents(on, config) {
require('cypress-mochawesome-reporter/plugin')(on);
},
},
});
```
Additional reporter options:
| name | type | default | description |
| --------------------- | --------- | ------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `embeddedScreenshots` | `boolean` | `false` | Embedded external screenshots into HTML using base64, use with `inlineAssets` option to produce a single HTML file |
| `ignoreVideos` | `boolean` | `false` | Will not copy videos recorded by Cypress nor show them in the mochawesome report. Requires that Cypress config option `video` is set to `true` for the option to have any effect<br/>Because mochawesome doesn't support context per spec file, each test will have the whole spec file video. More info can be found [here](https://github.com/LironEr/cypress-mochawesome-reporter/issues/43) |
| `videoOnFailOnly` | `boolean` | `false` | If Videos are recorded and added to the report, setting this to `true` will add the videos only to tests with failures.<br/>Do note that this will NOT cause video's to only record failed tests, just they not be added to passed tests in the mochawesome report |
| `quiet` | `boolean` | `false` | Silence console messages |
| `saveAllAttempts` | `boolean` | `true` | Save screenshots of all test attempts, set to `false` to save only the last attempt |
| `debug` | `boolean` | `false` | Creates log file with debug data |
| `saveJson` | `boolean` | `false` | Keeps the json file used to create html report |
## Add extra information to report
Add extra information to the report manually by using `cy.addTestContext()` as seen in the [simple-typescript example test 2](/examples/simple-typescript/cypress/e2e/test2.cy.ts)
<img src="./docs/assets/passed-test-with-addContext-screenshot.png" alt="Mochawesome report with fail test screenshot" width="50%" />
## Examples
1. [Simple use of `cypress-mochawesome-reporter`](examples/simple)
2. [Using `cypress-multi-reporters`](examples/multiple-reporters)
3. [With `mochawesome-report-generator` flags](examples/mochawesome-flags)
4. [Change default screenshots folder in `cypress.json`](examples/screenshots-folder)
5. [Using `cypress-mochawesome-reporter` with typescript](examples/simple-typescript)
6. [Using `cypress-mochawesome-reporter` with `cypress-parallel`](examples/cypress-parallel)
7. [Using `cypress-mochawesome-reporter` with `cypress-cucumber-preprocessor`](examples/cucumber)
Run `npm i` in root directory then:
```
cd examples/<example-project>
npm i
npm test
```