fail-on-console 1.1.1 → 1.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +7 -0
- package/README.md +10 -0
- package/index.js +32 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,12 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [1.1.2](https://github.com/benquarmby/fail-on-console/compare/v1.1.1...v1.1.2) (2026-07-22)
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
### Bug Fixes
|
|
7
|
+
|
|
8
|
+
* guard against invalid and unsupported console methods ([504fa30](https://github.com/benquarmby/fail-on-console/commit/504fa301e245d0965afdfaf3c31d2d3b9a0cb10c))
|
|
9
|
+
|
|
3
10
|
## [1.1.1](https://github.com/benquarmby/fail-on-console/compare/v1.1.0...v1.1.1) (2026-07-08)
|
|
4
11
|
|
|
5
12
|
|
package/README.md
CHANGED
|
@@ -112,8 +112,18 @@ Registers a temporary or global allowlist rule for a monitored console method.
|
|
|
112
112
|
|
|
113
113
|
## Limitations
|
|
114
114
|
|
|
115
|
+
### Concurrency
|
|
116
|
+
|
|
115
117
|
`fail-on-console` is not compatible with concurrent asynchronous tests (e.g., `test.concurrent`). Because concurrent tests execute simultaneously within the same environment context, console logs cannot be isolated reliably per individual test. For suites requiring specific log suppression, tests must be run sequentially.
|
|
116
118
|
|
|
119
|
+
### Assert
|
|
120
|
+
|
|
121
|
+
Monitoring `console.assert` is currently unsupported. It has a distinct signature and unique assertion mechanics compared to standard logging methods.
|
|
122
|
+
|
|
123
|
+
### Mocha
|
|
124
|
+
|
|
125
|
+
Mocha is unsupported due to API incompatibilities related to test context. There are no clean or reliable workarounds for integration.
|
|
126
|
+
|
|
117
127
|
## Credits & Prior Art
|
|
118
128
|
|
|
119
129
|
This package is inspired by and builds on the excellent foundation laid by:
|
package/index.js
CHANGED
|
@@ -1,9 +1,36 @@
|
|
|
1
1
|
let testApi;
|
|
2
|
-
const
|
|
2
|
+
const supportedMethods = ["error", "warn", "info", "log", "debug"];
|
|
3
|
+
// Everything but console.debug is monitored by default. Debug logging in tests
|
|
4
|
+
// is usually intentional.
|
|
5
|
+
const defaultMethods = supportedMethods.slice(0, -1);
|
|
3
6
|
const allowed = new Map();
|
|
4
7
|
// %s string, %d/%i integer, %o object, %f float
|
|
5
8
|
const printfPattern = /%[sdiof]/g;
|
|
6
9
|
|
|
10
|
+
function quoteString(value) {
|
|
11
|
+
return `"${value}"`;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
function assertSupportedMethods(methods) {
|
|
15
|
+
if (!Array.isArray(methods)) {
|
|
16
|
+
throw new Error("fail-on-console: Expected an array of console methods.");
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
const unsupported = methods.filter((method) => !supportedMethods.includes(method));
|
|
20
|
+
|
|
21
|
+
if (!unsupported.length) {
|
|
22
|
+
return;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
const method = unsupported.length === 1 ? "method" : "methods";
|
|
26
|
+
const invalidList = unsupported.map(quoteString).join(", ");
|
|
27
|
+
const validList = supportedMethods.map(quoteString).join(", ");
|
|
28
|
+
|
|
29
|
+
throw new Error(
|
|
30
|
+
`fail-on-console: Unsupported console ${method} provided: ${invalidList}. Supported methods are: ${validList}.`
|
|
31
|
+
);
|
|
32
|
+
}
|
|
33
|
+
|
|
7
34
|
/**
|
|
8
35
|
* Basic implementation of node:util/format for console message formatting.
|
|
9
36
|
* Covers only the most common uses. Does not handle all specifiers (such as
|
|
@@ -51,6 +78,8 @@ function setupConsole({beforeEach, afterEach, expect, methods = defaultMethods})
|
|
|
51
78
|
throw new Error("fail-on-console: Call setupConsole() only once.");
|
|
52
79
|
}
|
|
53
80
|
|
|
81
|
+
assertSupportedMethods(methods);
|
|
82
|
+
|
|
54
83
|
testApi = {beforeEach, afterEach, expect};
|
|
55
84
|
|
|
56
85
|
beforeEach(() => allowed.clear());
|
|
@@ -98,6 +127,8 @@ function allowConsole(method, rules) {
|
|
|
98
127
|
throw new Error("fail-on-console: Call setupConsole() before using allowConsole().");
|
|
99
128
|
}
|
|
100
129
|
|
|
130
|
+
assertSupportedMethods([method]);
|
|
131
|
+
|
|
101
132
|
const normalized = Array.isArray(rules) ? rules : [rules];
|
|
102
133
|
const isInsideTest = !!testApi.expect.getState().currentTestName;
|
|
103
134
|
|