jest-fail-on-console
    TypeScript icon, indicating that this package has built-in type declarations

    2.4.2 • Public • Published

    jest-fail-on-console

    Utility to make jest tests fail when console.error(), console.warn(), etc. are used

    version Monthly downloads MIT License PRs Welcome

    What problem is this solving?

    Jest doesn't fail the tests when there is a console.error. In large codebase, we can end up with the test output overloaded by a lot of errors, warnings, etc.. To prevent this, we want to fail each test that is logging to the console. We also want to conserve a clear output of the original error.

    This is what this utility is doing.

    image

    Install

    yarn add -D jest-fail-on-console

    or

    npm install -D jest-fail-on-console

    How to use

    In a file used in the setupFilesAfterEnv option of Jest, add this code:

    import failOnConsole from 'jest-fail-on-console'
    
    failOnConsole()
    
    // or with options:
    failOnConsole({
      shouldFailOnWarn: false,
    })

    But I have some expected console errors/warning

    If a console.error() is expected, then you should assert for it:

    test('should log an error', () => {
      jest.spyOn(console, 'error').mockImplementation()
      // do your logic
      expect(console.error).toHaveBeenCalledWith('your error message')
    })

    Options

    You can pass an object with options to the function:

    errorMessage

    Use this if you want to override the default error message of this library.

    // signature
    type errorMessage = (
      methodName: 'assert' | 'debug' | 'error' | 'info' | 'log' | 'warn',
      bold: (string: string) => string
    ) => string

    shouldFailOnAssert

    Use this to make a test fail when a console.assert() is logged.

    • Type: boolean
    • Default: false

    shouldFailOnDebug

    Use this to make a test fail when a console.debug() is logged.

    • Type: boolean
    • Default: false

    shouldFailOnError

    Use this to make a test fail when a console.error() is logged.

    • Type: boolean
    • Default: true

    shouldFailOnInfo

    Use this to make a test fail when a console.info() is logged.

    • Type: boolean
    • Default: false

    shouldFailOnLog

    Use this to make a test fail when a console.log() is logged.

    • Type: boolean
    • Default: false

    shouldFailOnWarn

    Use this to make a test fail when a console.warn() is logged.

    • Type: boolean
    • Default: true

    silenceMessage

    // signature
    type silenceMessage = (
      message: string,
      methodName: 'assert' | 'debug' | 'error' | 'info' | 'log' | 'warn'
    ) => boolean

    This function is called for every console method supported by this utility. If true is returned, the message will not show in the console and the test won't fail.

    Example:

    failOnConsole({
      silenceMessage: (errorMessage) => {
        if (/Not implemented: navigation/.test(errorMessage)) {
          return true
        }
        return false
      },
    })

    License

    MIT

    Maintainers

    This project is maintained by Valentin Hervieu.

    This project was originally part of @ricardo-ch organisation because I (Valentin) was working at Ricardo. After leaving this company, they gracefully accepted to transfer the project to me. ❤️

    Credits

    Most of the logic is taken from React's setupTests file.

    Install

    npm i jest-fail-on-console

    DownloadsWeekly Downloads

    170,880

    Version

    2.4.2

    License

    MIT

    Unpacked Size

    10.2 kB

    Total Files

    6

    Last publish

    Collaborators

    • valentinhervieu