-
Notifications
You must be signed in to change notification settings - Fork 7
/
storybook.test.js
39 lines (36 loc) · 1 KB
/
storybook.test.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
import initStoryshots, { renderOnly } from "@storybook/addon-storyshots";
// eslint-disable-next-line no-console
const originalErrorFn = console.error;
/** Ensure that no console.error() calls are made when the target function runs.
*
* Stubs out the console.error() function and throws an exception if the test
* attempts to call console.error();
*/
const ensureNoConsoleErrors = (fn) => {
const errors = [];
try {
// eslint-disable-next-line no-console
console.error = (...args) => {
errors.push(args);
};
fn();
} finally {
// eslint-disable-next-line no-console
console.error = originalErrorFn;
}
if (errors.length !== 0) {
for (const error of errors) {
originalErrorFn(...error);
}
throw new Error(
"Test failed due to calls made to console.error. Please correct all errors that appear in the Storybook console log."
);
}
};
initStoryshots({
test: (options) => {
ensureNoConsoleErrors(() => {
renderOnly(options);
});
},
});