jest-regression

Jest test regression detection.

Usage no npm install needed!

<script type="module">
  import jestRegression from 'https://cdn.skypack.dev/jest-regression';
</script>

README

Jest regression

Simple zero dependency tool to check for test regression between commits.

Features:

  • create basic json report for current project state and save it under current checked out git commit id
  • check for test regression between two commits node ./node_modules/.bin/jest-regression <fom commit> <to commit>

Installation

npm install jest-regression

Running

First create report for your current project state. Just simply run all tests with jest. Report with name of current checked out git commit id will be saved inside ./jest-regression folder (you can change default folder via config).

For instruction purposes lets say commit id is 79262dc. Example: ./jest-regression/79262dc.json

When you our your co-worker do next commit (lets say it's 4930822), just simply run tests again. Report will saved: Example: ./jest-regression/4930822.json

Now you can make regression test with command jest-regression <fom commit> <to commit>.

Example:

$ node ./node_modules/.bin/jest-regression 79262dc 4930822

... or if you add "jest-regression": "jest-regression" under scripts in package.json:

<package.json>

{
 ...
 "scripts": {
    "jest-regression": "jest-regression"
 },
 ...
}
$ npm run jest-regression 79262dc 4930822

Example output:

$ jest-regression "79262dc" "4930822"

Checking for test regression from commit 5751a1a to 01d30c6.
Regression detected.
-----------
 FAILED    Test suite A Test 001
/path/to/test/file.spec.ts

 FAILED    Test suite A Test 002
/path/to/test/file.spec.ts

 FAILED    Test suite B Test 001
/path/to/test/file.b.spec.ts

Config

By default you don't have to configure anything.

Key Default value Description
testResultsProcessor / used to call next results processor, for example jest-html-reporter
skip false to skip jest-regression
skipNextProcessor false to prevent running next results processor
outputDir './jest-regression' save directory for jest-regression

Configuration is done via package.json

Example - changing output dir:

{
 ...
 "jest-regression": {
    "outputDir": "./jest-regression"
  }
  ...
}

Example - passing results to jest-html-reporter package:

{
 "scripts": {
    "jest-regression": "jest-regression"
 },
    
 ...
 "jest-regression": {
    "testResultsProcessor": "./node_modules/jest-html-reporter",
    "skipNextProcessor": false,
  }
  ...
}

Example - skip report creation:

{
 ...
 "jest-regression": {
    "skip": true
  }
  ...
}

Full example:

{
 "scripts": {
    "jest-regression": "jest-regression"
 },
    
 ...
 "jest-regression": {
    "testResultsProcessor": "./node_modules/jest-html-reporter",
    "skip": false,
    "skipNextProcessor": false,
    "outputDir": "./jest-regression"
  }
  ...
}