@90poe/jest-performant-warnings-stats-reporter
This is a custom jest reporter that recursively collects all warnings while tests run and notifying user afterwards improving performance.
Motivation
We had problems with:
- Slow tests run on CI even with silent mode
- When running tests locally noise in the terminal slows tests enormously
List of superpowers
- more performant than default one (check benchmark)
- can provide statistics on warnings for every test suite (see example)
- can show slowest tests (see example)
Installation
yarn add @90poe/jest-performant-warnings-stats-reporter --dev
or
npm install @90poe/jest-performant-warnings-stats-reporter --save-dev
Usage
In your jest config add the following entry:
{
reporters: [
[
'@90poe/jest-performant-warnings-stats-reporter',
{
showSlowest: false,
maxSlowTests: 5,
warnOnSlowerThan: 1000,
showWarningSummary: false,
warningsConfig: [
{
name: 'act(...) warnings',
regex: /act(...)/im,
},
{
name: 'React Key Issues',
regex: /Encountered two children with the same key/im,
},
],
},
],
],
}
Configuration
@90poe/jest-performant-warnings-stats-reporter
configuration is based on Jest, available options are shown below.
Option | Description | type | Default value |
---|
showSlowest | true / false flag whether to show slowest tests or not | boolean | false |
maxSlowTests | quantity of slowest tests to show, dependant on showSlowest flag | number | 5 |
warnOnSlowerThan | a limit in milliseconds, used to identify slow tests | number | 400 |
showWarningSummary | true / false flag whether to show detailed information on warnings | boolean | false |
warningsConfig | an array of objects with name and regexp props, where name is title for a warning and regexp is regular expression used to match the console warning. Dependant on showWarningSummary flag | Array<{ name: string , regexp: RegExp }> | [] |
Sample of output for different configurations
showSlowest: true
showWarningSummary: false
showWarningSummary: true
Benchmarks
Using hyperfine for running 130 test suites in real world project, we can see advantage in performance comparing with:
- default reporter (up to 20% improvement possible, varies by the number of warnings that exist)
- default reporter with silent mode on (up to 5% improvement)
default jest reporter
default jest reporter with silent mode on
@90poe/jest-performant-warnings-stats-reporter
Contribution
Document
Code of conduct
Document
Licence
MIT