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
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:
// jest.config.js
module.exports = {
setupFilesAfterEnv: ["console-fail-test/setup"],
};Prior to
console-fail-test@0.6.0, this wassetup.cjsorsetup.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:
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
|
By default, console-fail-test will error on any called console method.
If you'd like allow certain methods, pass a console object to the cft API when you set it up:
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-appusing the Bingo framework.