msw-storybook-addon
Version:
Mock APIs in Storybook using Mock Service Worker.
30 lines (29 loc) • 914 B
JavaScript
import { isCommonAssetRequest } from "msw";
//#region src/addon.ts
function isCommonStorybookRequest(request) {
return /\.eot$|\.mdx$|sb-common-assets|__webpack_hmr|iframe.html|sb-vite|@vite|@react-refresh|\/virtual:|\.stories\./.test(request.url);
}
const defaultSetup = async () => {
const { setupWorker } = await import("msw/browser");
const worker = setupWorker();
await worker.start({
quiet: true,
onUnhandledRequest(request, print) {
if (isCommonAssetRequest(request) || isCommonStorybookRequest(request)) return;
print.warning();
}
});
return worker;
};
let mswInstance;
function createPreviewAnnotations(setup = defaultSetup) {
return { async beforeEach(context) {
if (mswInstance == null) mswInstance = await setup();
context.msw = mswInstance;
return () => {
context.msw?.resetHandlers();
};
} };
}
//#endregion
export { defaultSetup as n, createPreviewAnnotations as t };