Skip to content

Commit

Permalink
support Storybook 7 (#102)
Browse files Browse the repository at this point in the history
* support both Storybook 6 and Storybook 7

* fix release workflow

* upgrade example
  • Loading branch information
yannbf committed Mar 8, 2023
1 parent 0c1ab91 commit dcb12d5
Show file tree
Hide file tree
Showing 8 changed files with 6,360 additions and 4,478 deletions.
3 changes: 1 addition & 2 deletions .github/workflows/release.yml
Expand Up @@ -31,5 +31,4 @@ jobs:
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
with:
working_directory: ./packages/msw-addon
working-directory: ./packages/msw-addon
13 changes: 12 additions & 1 deletion packages/docs/.storybook/main.js
Expand Up @@ -7,4 +7,15 @@ module.exports = {
'@storybook/preset-create-react-app',
'@storybook/addon-storysource',
],
};
webpackFinal: async (config) => {
config.resolve = config.resolve || {}
config.resolve.alias = {
...config.resolve.alias,
'msw-storybook-addon': require.resolve('../../msw-addon/dist'),
}
return config
},
core: {
builder: 'webpack5',
},
}
24 changes: 13 additions & 11 deletions packages/docs/package.json
Expand Up @@ -46,27 +46,29 @@
"@testing-library/user-event": "^12.1.10",
"axios": "^0.21.1",
"graphql": "^15.4.0",
"msw-storybook-addon": "link:../msw-addon",
"react": "^17.0.1",
"react-dom": "^17.0.1",
"react-query": "^3.5.5",
"react-router": "^5.2.0",
"react-router-dom": "^5.2.0",
"react-scripts": "4.0.1",
"react-scripts": "^5.0.1",
"urql": "^1.11.4",
"web-vitals": "^0.2.4"
},
"devDependencies": {
"@storybook/addon-a11y": "^6.1.11",
"@storybook/addon-actions": "^6.1.11",
"@storybook/addon-essentials": "^6.1.11",
"@storybook/addon-links": "^6.1.11",
"@storybook/addon-storysource": "^6.1.11",
"@storybook/node-logger": "^6.1.11",
"@storybook/preset-create-react-app": "^3.1.5",
"@storybook/react": "^6.1.11",
"@storybook/addon-a11y": "^6.5.16",
"@storybook/addon-actions": "^6.5.16",
"@storybook/addon-essentials": "^6.5.16",
"@storybook/addon-links": "^6.5.16",
"@storybook/addon-storysource": "^6.5.16",
"@storybook/builder-webpack5": "^6.5.16",
"@storybook/manager-webpack5": "^6.5.16",
"@storybook/node-logger": "^6.5.16",
"@storybook/preset-create-react-app": "^4.1.2",
"@storybook/react": "^6.5.16",
"chromatic": "^5.5.0",
"msw": "^0.35.0"
"msw": "^0.35.0",
"webpack": "5"
},
"msw": {
"workerDirectory": "public"
Expand Down
1 change: 0 additions & 1 deletion packages/msw-addon/package.json
Expand Up @@ -34,7 +34,6 @@
"homepage": "https://msw-sb.vercel.app/",
"license": "MIT",
"dependencies": {
"@storybook/addons": "^6.0.0",
"is-node-process": "^1.0.1"
},
"devDependencies": {
Expand Down
3 changes: 0 additions & 3 deletions packages/msw-addon/release.config.js

This file was deleted.

35 changes: 14 additions & 21 deletions packages/msw-addon/src/mswDecorator.ts
@@ -1,9 +1,4 @@
import { isNodeProcess } from 'is-node-process'
import type {
DecoratorFunction,
LoaderFunction,
StoryContext,
} from '@storybook/addons'
import type { SetupWorkerApi, RequestHandler } from 'msw'
import type { SetupServerApi } from 'msw/node'

Expand All @@ -18,17 +13,13 @@ export type MswParameters = {
| { handlers: RequestHandler[] | Record<string, RequestHandler> }
}

export interface DecoratorContext extends StoryContext {
parameters: StoryContext['parameters'] & MswParameters
}

export interface LoaderContext extends StoryContext {
parameters: StoryContext['parameters'] & MswParameters
type Context = {
parameters: MswParameters
}

const IS_BROWSER = !isNodeProcess()
let api: SetupApi
let workerPromise: Promise<unknown>;
let workerPromise: Promise<unknown>

export function initialize(options?: InitializeOptions): SetupApi {
if (IS_BROWSER) {
Expand All @@ -47,13 +38,13 @@ export function initialize(options?: InitializeOptions): SetupApi {
* to globalThis so it works correctly when running in node.
* @see https://github.com/webpack/webpack/issues/8826#issuecomment-660594260
*/
const nodeVer = typeof process !== "undefined" && process.versions?.node;
const nodeVer = typeof process !== 'undefined' && process.versions?.node
const nodeRequire = nodeVer
? typeof __webpack_require__ === "function"
? typeof __webpack_require__ === 'function'
? __non_webpack_require__
: require
: undefined;
: undefined

const { setupServer } = nodeRequire('msw/node')
const server = setupServer()
workerPromise = server.listen(options)
Expand All @@ -80,9 +71,9 @@ export function getWorker(): SetupApi {
return api
}

export const mswDecorator: DecoratorFunction = (
storyFn,
context: DecoratorContext
export const mswDecorator = <Story extends (...args: any[]) => any>(
storyFn: Story,
context: Context
) => {
const {
parameters: { msw },
Expand Down Expand Up @@ -115,7 +106,7 @@ export const mswDecorator: DecoratorFunction = (
return storyFn()
}

export const mswLoader: LoaderFunction = async (context: LoaderContext) => {
export const mswLoader = async (context: Context) => {
const {
parameters: { msw },
} = context
Expand Down Expand Up @@ -144,7 +135,9 @@ export const mswLoader: LoaderFunction = async (context: LoaderContext) => {
}
}

await (workerPromise || Promise.resolve());
if (workerPromise) {
await workerPromise
}

return {}
}
1 change: 1 addition & 0 deletions packages/msw-addon/tsconfig.json
Expand Up @@ -3,6 +3,7 @@
"outDir": "./dist/",
"noImplicitAny": true,
"module": "CommonJS",
"skipLibCheck": true,
"target": "es5",
"strict": true,
"allowJs": true,
Expand Down

1 comment on commit dcb12d5

@vercel
Copy link

@vercel vercel bot commented on dcb12d5 Mar 8, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Successfully deployed to the following URLs:

msw-storybook-addon – ./

msw-storybook-addon-git-main-mswjs.vercel.app
msw-storybook-addon-mswjs.vercel.app
msw-sb.vercel.app

Please sign in to comment.