Skip to content

Introduce jest-fail-on-console

Introduce jest-fail-on-console

INFO

This document represents an architecture decision record (ADR) and has been mirrored from the ADR section in our Shopware 6 repository. You can find the original version here

Context

A jest pipeline run produced previously hundreds of errors and warnings, which made it hard to see why a test failed and if a passing test isn’t just a false positive.

Decision

To combat this, we decided to introduce the npm package jest-fail-on-console, which causes individual unit tests to fail if they log an error or a warning to the console.

Consequences

Jest-fail-on-console makes unit tests a lot more expressive because it prevents easy mistakes, which would previously lead to an error that is hard to find and notice. Like an incorrect key in a v-for loop, which could potentially lead to vue update errors, but would have not caused the test to fail.

Jest tests might be a little harder to write, because errors cannot simply be ignored anymore. All needed components have to be provided to the component being tested either by being mocked or built, all API requests need to be mocked, and all needed mixins have to be provided. Although it is a little more work, it makes the jest tests, as previously mentioned, more expressive and as a neat side benefit it keeps the console clean.