Gently fails test runs if the console was used during them. π’
npm install console-fail-test
Gently fails test runs if the console was used during them.
π’
Logging to the console during tests can be a sign of:
- π« warnings from third-party libraries such as React for improper usage
- π€ temporary code that shouldn't be checked into your project
- π’ unnecessary spam in your tests window
This little library throws an error after each test if a console method was called during it.
It's got some nifty features:
- π Summary of which methods are called with calling arguments
- π« Failures are thrown _after_ tests finish, so your tests will fail normally if they should
``plaintext
stdout | src/index.test.ts > index > example test that console.logs
Whoops!
β― src/index.test.ts (4)
β― index (4)
Γ example test that console.logs
β [ afterEach ]
β example test that does not console.log
β―β―β―β―β―β―β―β―β―β―β―β―β―β―β―- Failed Tests 1 β―β―β―β―β―β―β―β―β―β―β―β―β―β―β―-
FAIL src/index.test.ts > index > example test that console.logs
Error: Oh no! Your test called the following console method:
* log (1 call)
> Call 0: "Whoops!"
`
console-fail-test is meant to support any _(test framework)_ & _(spy library)_ combination.
It will auto-detect your combination if possible and use the most appropriate environment hooks and function spies it can find.
For example, in a Jest config:
`js`
// jest.config.js
module.exports = {
setupFilesAfterEnv: ["console-fail-test/setup"],
};
> Prior to console-fail-test@0.6.0, this was setup.cjs or setup.mjs.
See the _Documentation_ link for each supported framework for how to set up console-fail-test with that framework.
| Framework | Support? | API Request | Documentation |
| Ava | β οΈ | require("ava") | Ava.md |
| Mocha | β οΈ β¨ | "mocha" | Mocha.md |
| Jasmine | β οΈ β¨ | "jasmine" | Jasmine.md |
| Jest | β οΈ β¨ | "jest" | Jest.md |
| lab | β | exports.lab | Lab.md |
| node-tap | β οΈ | require("node-tap") | NodeTap.md |
| Vitest | β οΈ β¨ | "vitest" | Vitest.md |
| Cypress | βοΈ | /issues/199 | |
| QUnit | βοΈ | /issues/19 | |
| Playwright | βοΈ | /issues/198 | |
| tape | βοΈ | /issues/17 | |
| TestCafe | βοΈ | /issues/15 |
If your test framework provides its own spy library, console-fail-test will by default use that library.
If a supported spy library isn't detected, an internal fallback will be used to spy on console methods.
You can request a specific test library using the Node API with its API request:
`js`
require("console-fail-test").cft({
spyLibrary: "sinon",
});
| Library | Support? | API Request | Spy | Documentation |
| Jasmine | β οΈ | "jasmine" | jasmine.createSpy() | Jasmine.md#spies |
| Jest | β οΈ | "jest" | jest.fn() | Jest.md#spies |
| Sinon | β οΈ | require("sinon") | sinon.spy() | Sinon.md#spies |
| Vitest | β οΈ | "vitest" | vi.fn() | Vitest.md#spies |
methodsBy default, console-fail-test will error on _any_ called console method.console
If you'd like allow certain methods, pass a object to the cft API when you set it up:
`js`
require("console-fail-test").cft({
console: {
warn: true, // won't error on any instance of console.warn
},
});
See .github/CONTRIBUTING.md, then .github/DEVELOPMENT.md.
Thanks! π’
Colin MacKenzie π» π€ | Dimitri Kopriwa π» | Faraz Patankar π | Joel π€ π» | Josh Goldberg π§ π» π§ π π€ π β οΈ π π π | SUZUKI Sosuke π» |
> π This package was templated with create-typescript-app` using the Bingo framework.