@90poe/jest-performant-warnings-stats-reporter
v1.0.0
Published
A flexible jest reporter that provides ability to show statistics of warnings and group them
Downloads
8
Readme
@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)