@90poe/jest-performant-warnings-stats-reporter
TypeScript icon, indicating that this package has built-in type declarations

1.0.0 • Public • Published

@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:

  1. Slow tests run on CI even with silent mode
  2. 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

Sample of output if showSlowest=true

showWarningSummary: false

Sample of output if showWarningSummary=false

showWarningSummary: true

Sample of output if 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

Sample of benchmark for default jest reporter

default jest reporter with silent mode on

Sample of benchmark for default jest reporter with silent mode on

@90poe/jest-performant-warnings-stats-reporter

Sample of benchmark for @90poe/jest-performant-warnings-stats-reporter

Contribution

Document

Code of conduct

Document

Licence

MIT

Package Sidebar

Install

npm i @90poe/jest-performant-warnings-stats-reporter

Weekly Downloads

5

Version

1.0.0

License

MIT

Unpacked Size

365 kB

Total Files

40

Last publish

Collaborators

  • paulanton
  • concourseci90poe
  • slopez90poe
  • garylloyd
  • fabmos
  • pkujawa
  • andrew.wilde
  • simont90poe
  • annmedvid
  • dhorelik
  • andreeey
  • vasilich6107
  • nataki
  • meetmeleave
  • madelgeek
  • icho
  • e_vashchuk
  • anatolii.omelchenko
  • volomar
  • anplotkina