diff --git a/CHANGELOG.md b/CHANGELOG.md index 3ebf5a318d8b..675ec66e5a42 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,10 @@ +## 8.5.1 + +- Addon Test: Replace `interaction test` -> `component test` - [#30333](https://github.com/storybookjs/storybook/pull/30333), thanks @kylegach! +- Addon Test: Support Vitest 3 browser.test.instances field - [#30309](https://github.com/storybookjs/storybook/pull/30309), thanks @valentinpalkovic! +- Manager: Fix escaping of single quotes in dynamic import paths - [#30278](https://github.com/storybookjs/storybook/pull/30278), thanks @valentinpalkovic! +- RNW-Vite: Support requires for images/fonts - [#30305](https://github.com/storybookjs/storybook/pull/30305), thanks @dannyhw! + ## 8.5.0 Storybook 8.5 is packed with powerful features to enhance your development workflow. This release makes it easier than ever to build accessible, well-tested UIs. Here’s what’s new: diff --git a/code/addons/test/src/components/EmptyState.tsx b/code/addons/test/src/components/EmptyState.tsx index 0768a9864946..c54a13df7d28 100644 --- a/code/addons/test/src/components/EmptyState.tsx +++ b/code/addons/test/src/components/EmptyState.tsx @@ -46,10 +46,10 @@ export const Empty = () => { return ( - Interaction tests allow you to verify the functional aspects of UIs. Write a play function + Component tests allow you to verify the functional aspects of UIs. Write a play function for your story and you'll see it run here. } diff --git a/code/core/src/builder-manager/utils/managerEntries.ts b/code/core/src/builder-manager/utils/managerEntries.ts index 787116d05c0e..9609c94f40ab 100644 --- a/code/core/src/builder-manager/utils/managerEntries.ts +++ b/code/core/src/builder-manager/utils/managerEntries.ts @@ -60,7 +60,8 @@ export async function wrapManagerEntries(entrypoints: string[], uniqueId?: strin const directory = dirname(location); await mkdir(directory, { recursive: true }); } - await writeFile(location, `import '${slash(entry)}';`); + + await writeFile(location, `import '${slash(entry).replaceAll(/'/g, "\\'")}';`); return location; }) diff --git a/code/frameworks/angular/template/cli/page.stories.ts b/code/frameworks/angular/template/cli/page.stories.ts index 74deedbfccc1..8237ee228b34 100644 --- a/code/frameworks/angular/template/cli/page.stories.ts +++ b/code/frameworks/angular/template/cli/page.stories.ts @@ -17,7 +17,7 @@ type Story = StoryObj; export const LoggedOut: Story = {}; -// More on interaction testing: https://storybook.js.org/docs/writing-tests/interaction-testing +// More on component testing: https://storybook.js.org/docs/writing-tests/component-testing export const LoggedIn: Story = { play: async ({ canvasElement }) => { const canvas = within(canvasElement); diff --git a/code/frameworks/experimental-nextjs-vite/template/cli/js/Page.stories.js b/code/frameworks/experimental-nextjs-vite/template/cli/js/Page.stories.js index 383fd1ab44e3..7b9906a73514 100644 --- a/code/frameworks/experimental-nextjs-vite/template/cli/js/Page.stories.js +++ b/code/frameworks/experimental-nextjs-vite/template/cli/js/Page.stories.js @@ -13,7 +13,7 @@ export default { export const LoggedOut = {}; -// More on interaction testing: https://storybook.js.org/docs/writing-tests/interaction-testing +// More on component testing: https://storybook.js.org/docs/writing-tests/component-testing export const LoggedIn = { play: async ({ canvasElement }) => { const canvas = within(canvasElement); diff --git a/code/frameworks/experimental-nextjs-vite/template/cli/ts-3-8/Page.stories.ts b/code/frameworks/experimental-nextjs-vite/template/cli/ts-3-8/Page.stories.ts index 7581ed2bee30..0cf1d4e00c83 100644 --- a/code/frameworks/experimental-nextjs-vite/template/cli/ts-3-8/Page.stories.ts +++ b/code/frameworks/experimental-nextjs-vite/template/cli/ts-3-8/Page.stories.ts @@ -17,7 +17,7 @@ type Story = StoryObj; export const LoggedOut: Story = {}; -// More on interaction testing: https://storybook.js.org/docs/writing-tests/interaction-testing +// More on component testing: https://storybook.js.org/docs/writing-tests/component-testing export const LoggedIn: Story = { play: async ({ canvasElement }) => { const canvas = within(canvasElement); diff --git a/code/frameworks/experimental-nextjs-vite/template/cli/ts-4-9/Page.stories.ts b/code/frameworks/experimental-nextjs-vite/template/cli/ts-4-9/Page.stories.ts index 53b9f8fdf9c9..5d2c688a978f 100644 --- a/code/frameworks/experimental-nextjs-vite/template/cli/ts-4-9/Page.stories.ts +++ b/code/frameworks/experimental-nextjs-vite/template/cli/ts-4-9/Page.stories.ts @@ -17,7 +17,7 @@ type Story = StoryObj; export const LoggedOut: Story = {}; -// More on interaction testing: https://storybook.js.org/docs/writing-tests/interaction-testing +// More on component testing: https://storybook.js.org/docs/writing-tests/component-testing export const LoggedIn: Story = { play: async ({ canvasElement }) => { const canvas = within(canvasElement); diff --git a/code/frameworks/nextjs/template/cli/js/Page.stories.js b/code/frameworks/nextjs/template/cli/js/Page.stories.js index 383fd1ab44e3..7b9906a73514 100644 --- a/code/frameworks/nextjs/template/cli/js/Page.stories.js +++ b/code/frameworks/nextjs/template/cli/js/Page.stories.js @@ -13,7 +13,7 @@ export default { export const LoggedOut = {}; -// More on interaction testing: https://storybook.js.org/docs/writing-tests/interaction-testing +// More on component testing: https://storybook.js.org/docs/writing-tests/component-testing export const LoggedIn = { play: async ({ canvasElement }) => { const canvas = within(canvasElement); diff --git a/code/frameworks/nextjs/template/cli/ts-3-8/Page.stories.ts b/code/frameworks/nextjs/template/cli/ts-3-8/Page.stories.ts index 7581ed2bee30..0cf1d4e00c83 100644 --- a/code/frameworks/nextjs/template/cli/ts-3-8/Page.stories.ts +++ b/code/frameworks/nextjs/template/cli/ts-3-8/Page.stories.ts @@ -17,7 +17,7 @@ type Story = StoryObj; export const LoggedOut: Story = {}; -// More on interaction testing: https://storybook.js.org/docs/writing-tests/interaction-testing +// More on component testing: https://storybook.js.org/docs/writing-tests/component-testing export const LoggedIn: Story = { play: async ({ canvasElement }) => { const canvas = within(canvasElement); diff --git a/code/frameworks/nextjs/template/cli/ts-4-9/Page.stories.ts b/code/frameworks/nextjs/template/cli/ts-4-9/Page.stories.ts index 53b9f8fdf9c9..5d2c688a978f 100644 --- a/code/frameworks/nextjs/template/cli/ts-4-9/Page.stories.ts +++ b/code/frameworks/nextjs/template/cli/ts-4-9/Page.stories.ts @@ -17,7 +17,7 @@ type Story = StoryObj; export const LoggedOut: Story = {}; -// More on interaction testing: https://storybook.js.org/docs/writing-tests/interaction-testing +// More on component testing: https://storybook.js.org/docs/writing-tests/component-testing export const LoggedIn: Story = { play: async ({ canvasElement }) => { const canvas = within(canvasElement); diff --git a/code/frameworks/react-native-web-vite/package.json b/code/frameworks/react-native-web-vite/package.json index f49cea37f453..25a00607fc6f 100644 --- a/code/frameworks/react-native-web-vite/package.json +++ b/code/frameworks/react-native-web-vite/package.json @@ -62,6 +62,7 @@ "@storybook/react-vite": "workspace:*", "@vitejs/plugin-react": "^4.3.2", "vite-plugin-babel": "^1.3.0", + "vite-plugin-commonjs": "^0.10.4", "vite-tsconfig-paths": "^5.1.4" }, "devDependencies": { diff --git a/code/frameworks/react-native-web-vite/src/preset.ts b/code/frameworks/react-native-web-vite/src/preset.ts index df94a85d1434..e71b045d8d24 100644 --- a/code/frameworks/react-native-web-vite/src/preset.ts +++ b/code/frameworks/react-native-web-vite/src/preset.ts @@ -4,6 +4,7 @@ import { esbuildFlowPlugin, flowPlugin } from '@bunchtogether/vite-plugin-flow'; import react from '@vitejs/plugin-react'; import type { InlineConfig, PluginOption } from 'vite'; import babel from 'vite-plugin-babel'; +import commonjs from 'vite-plugin-commonjs'; import tsconfigPaths from 'vite-tsconfig-paths'; import type { FrameworkOptions, StorybookConfig } from './types'; @@ -129,6 +130,7 @@ export const viteFinal: StorybookConfig['viteFinal'] = async (config, options) = }), ...plugins, reactNativeWeb(), + commonjs(), ], optimizeDeps: { esbuildOptions: { diff --git a/code/package.json b/code/package.json index 2535d3d823e1..7aa3548f5e39 100644 --- a/code/package.json +++ b/code/package.json @@ -294,5 +294,6 @@ "Dependency Upgrades" ] ] - } + }, + "deferredNextVersion": "8.5.1" } diff --git a/code/renderers/html/template/cli/js/Page.stories.js b/code/renderers/html/template/cli/js/Page.stories.js index aa2c710f08eb..4e98ad615cd7 100644 --- a/code/renderers/html/template/cli/js/Page.stories.js +++ b/code/renderers/html/template/cli/js/Page.stories.js @@ -13,7 +13,7 @@ export default { export const LoggedOut = {}; -// More on interaction testing: https://storybook.js.org/docs/writing-tests/interaction-testing +// More on component testing: https://storybook.js.org/docs/writing-tests/component-testing export const LoggedIn = { play: async ({ canvasElement }) => { const canvas = within(canvasElement); diff --git a/code/renderers/html/template/cli/ts-3-8/Page.stories.ts b/code/renderers/html/template/cli/ts-3-8/Page.stories.ts index bb9c2859fb6d..e20b2ac0f377 100644 --- a/code/renderers/html/template/cli/ts-3-8/Page.stories.ts +++ b/code/renderers/html/template/cli/ts-3-8/Page.stories.ts @@ -16,7 +16,7 @@ export default meta; export const LoggedOut: StoryObj = {}; -// More on interaction testing: https://storybook.js.org/docs/writing-tests/interaction-testing +// More on component testing: https://storybook.js.org/docs/writing-tests/component-testing export const LoggedIn: StoryObj = { play: async ({ canvasElement }) => { const canvas = within(canvasElement); diff --git a/code/renderers/html/template/cli/ts-4-9/Page.stories.ts b/code/renderers/html/template/cli/ts-4-9/Page.stories.ts index 9dc897a97e7c..5aa9e689913e 100644 --- a/code/renderers/html/template/cli/ts-4-9/Page.stories.ts +++ b/code/renderers/html/template/cli/ts-4-9/Page.stories.ts @@ -16,7 +16,7 @@ export default meta; export const LoggedOut: StoryObj = {}; -// More on interaction testing: https://storybook.js.org/docs/writing-tests/interaction-testing +// More on component testing: https://storybook.js.org/docs/writing-tests/component-testing export const LoggedIn: StoryObj = { play: async ({ canvasElement }) => { const canvas = within(canvasElement); diff --git a/code/renderers/preact/template/cli/Page.stories.jsx b/code/renderers/preact/template/cli/Page.stories.jsx index 89edcba5ed80..b7a417b634f0 100644 --- a/code/renderers/preact/template/cli/Page.stories.jsx +++ b/code/renderers/preact/template/cli/Page.stories.jsx @@ -13,7 +13,7 @@ export default { export const LoggedOut = {}; -// More on interaction testing: https://storybook.js.org/docs/writing-tests/interaction-testing +// More on component testing: https://storybook.js.org/docs/writing-tests/component-testing export const LoggedIn = { play: async ({ canvasElement }) => { const canvas = within(canvasElement); diff --git a/code/renderers/react/template/cli/js/Page.stories.js b/code/renderers/react/template/cli/js/Page.stories.js index 383fd1ab44e3..7b9906a73514 100644 --- a/code/renderers/react/template/cli/js/Page.stories.js +++ b/code/renderers/react/template/cli/js/Page.stories.js @@ -13,7 +13,7 @@ export default { export const LoggedOut = {}; -// More on interaction testing: https://storybook.js.org/docs/writing-tests/interaction-testing +// More on component testing: https://storybook.js.org/docs/writing-tests/component-testing export const LoggedIn = { play: async ({ canvasElement }) => { const canvas = within(canvasElement); diff --git a/code/renderers/react/template/cli/ts-3-8/Page.stories.ts b/code/renderers/react/template/cli/ts-3-8/Page.stories.ts index 6ff6f1a01dbe..b806d1aec977 100644 --- a/code/renderers/react/template/cli/ts-3-8/Page.stories.ts +++ b/code/renderers/react/template/cli/ts-3-8/Page.stories.ts @@ -17,7 +17,7 @@ type Story = StoryObj; export const LoggedOut: Story = {}; -// More on interaction testing: https://storybook.js.org/docs/writing-tests/interaction-testing +// More on component testing: https://storybook.js.org/docs/writing-tests/component-testing export const LoggedIn: Story = { play: async ({ canvasElement }) => { const canvas = within(canvasElement); diff --git a/code/renderers/react/template/cli/ts-4-9/Page.stories.ts b/code/renderers/react/template/cli/ts-4-9/Page.stories.ts index 53b9f8fdf9c9..5d2c688a978f 100644 --- a/code/renderers/react/template/cli/ts-4-9/Page.stories.ts +++ b/code/renderers/react/template/cli/ts-4-9/Page.stories.ts @@ -17,7 +17,7 @@ type Story = StoryObj; export const LoggedOut: Story = {}; -// More on interaction testing: https://storybook.js.org/docs/writing-tests/interaction-testing +// More on component testing: https://storybook.js.org/docs/writing-tests/component-testing export const LoggedIn: Story = { play: async ({ canvasElement }) => { const canvas = within(canvasElement); diff --git a/code/renderers/svelte/template/cli/js/Page.stories.js b/code/renderers/svelte/template/cli/js/Page.stories.js index 16c226c63c37..5ce7b3dac56f 100644 --- a/code/renderers/svelte/template/cli/js/Page.stories.js +++ b/code/renderers/svelte/template/cli/js/Page.stories.js @@ -13,7 +13,7 @@ export default { export const LoggedOut = {}; -// More on interaction testing: https://storybook.js.org/docs/writing-tests/interaction-testing +// More on component testing: https://storybook.js.org/docs/writing-tests/component-testing export const LoggedIn = { play: async ({ canvasElement }) => { const canvas = within(canvasElement); diff --git a/code/renderers/svelte/template/cli/ts-3-8/Page.stories.ts b/code/renderers/svelte/template/cli/ts-3-8/Page.stories.ts index b8f286bb71b5..66a89b3de89d 100644 --- a/code/renderers/svelte/template/cli/ts-3-8/Page.stories.ts +++ b/code/renderers/svelte/template/cli/ts-3-8/Page.stories.ts @@ -17,7 +17,7 @@ type Story = StoryObj; export const LoggedOut: Story = {}; -// More on interaction testing: https://storybook.js.org/docs/writing-tests/interaction-testing +// More on component testing: https://storybook.js.org/docs/writing-tests/component-testing export const LoggedIn: Story = { play: async ({ canvasElement }) => { const canvas = within(canvasElement); diff --git a/code/renderers/svelte/template/cli/ts-4-9/Page.stories.ts b/code/renderers/svelte/template/cli/ts-4-9/Page.stories.ts index d9fa059f21bf..4a43fc931213 100644 --- a/code/renderers/svelte/template/cli/ts-4-9/Page.stories.ts +++ b/code/renderers/svelte/template/cli/ts-4-9/Page.stories.ts @@ -17,7 +17,7 @@ type Story = StoryObj; export const LoggedOut: Story = {}; -// More on interaction testing: https://storybook.js.org/docs/writing-tests/interaction-testing +// More on component testing: https://storybook.js.org/docs/writing-tests/component-testing export const LoggedIn: Story = { play: async ({ canvasElement }) => { const canvas = within(canvasElement); diff --git a/code/renderers/vue3/template/cli/js/Page.stories.js b/code/renderers/vue3/template/cli/js/Page.stories.js index a2bc183ca7d1..f03db3c7f07f 100644 --- a/code/renderers/vue3/template/cli/js/Page.stories.js +++ b/code/renderers/vue3/template/cli/js/Page.stories.js @@ -13,7 +13,7 @@ export default { export const LoggedOut = {}; -// More on interaction testing: https://storybook.js.org/docs/writing-tests/interaction-testing +// More on component testing: https://storybook.js.org/docs/writing-tests/component-testing export const LoggedIn = { render: () => ({ components: { diff --git a/code/renderers/vue3/template/cli/ts-3-8/Page.stories.ts b/code/renderers/vue3/template/cli/ts-3-8/Page.stories.ts index d2a73e0d8fd8..8ef4a3f601f6 100644 --- a/code/renderers/vue3/template/cli/ts-3-8/Page.stories.ts +++ b/code/renderers/vue3/template/cli/ts-3-8/Page.stories.ts @@ -21,7 +21,7 @@ const meta: Meta = { export default meta; type Story = StoryObj; -// More on interaction testing: https://storybook.js.org/docs/writing-tests/interaction-testing +// More on component testing: https://storybook.js.org/docs/writing-tests/component-testing export const LoggedIn: Story = { play: async ({ canvasElement }: any) => { const canvas = within(canvasElement); diff --git a/code/renderers/vue3/template/cli/ts-4-9/Page.stories.ts b/code/renderers/vue3/template/cli/ts-4-9/Page.stories.ts index 525870f15307..81962281df46 100644 --- a/code/renderers/vue3/template/cli/ts-4-9/Page.stories.ts +++ b/code/renderers/vue3/template/cli/ts-4-9/Page.stories.ts @@ -21,7 +21,7 @@ const meta = { export default meta; type Story = StoryObj; -// More on interaction testing: https://storybook.js.org/docs/writing-tests/interaction-testing +// More on component testing: https://storybook.js.org/docs/writing-tests/component-testing export const LoggedIn: Story = { play: async ({ canvasElement }: any) => { const canvas = within(canvasElement); diff --git a/code/yarn.lock b/code/yarn.lock index 844bc7bfea06..5b7d8c9e949e 100644 --- a/code/yarn.lock +++ b/code/yarn.lock @@ -6974,6 +6974,7 @@ __metadata: "@vitejs/plugin-react": "npm:^4.3.2" typescript: "npm:^5.3.2" vite-plugin-babel: "npm:^1.3.0" + vite-plugin-commonjs: "npm:^0.10.4" vite-tsconfig-paths: "npm:^5.1.4" peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta @@ -29222,6 +29223,29 @@ __metadata: languageName: node linkType: hard +"vite-plugin-commonjs@npm:^0.10.4": + version: 0.10.4 + resolution: "vite-plugin-commonjs@npm:0.10.4" + dependencies: + acorn: "npm:^8.12.1" + magic-string: "npm:^0.30.11" + vite-plugin-dynamic-import: "npm:^1.6.0" + checksum: 10c0/074e0d7a1e8f20d605f1a02c53867706639ea5a9aac8657e8d90442f13cf86154a6ebc65de1f05eb62e1a98523422d5025f3b7ccaabe88c486bec12b45e5d136 + languageName: node + linkType: hard + +"vite-plugin-dynamic-import@npm:^1.6.0": + version: 1.6.0 + resolution: "vite-plugin-dynamic-import@npm:1.6.0" + dependencies: + acorn: "npm:^8.12.1" + es-module-lexer: "npm:^1.5.4" + fast-glob: "npm:^3.3.2" + magic-string: "npm:^0.30.11" + checksum: 10c0/049f953b404157346e06a729eb055bc5b3630ac990bf36d52e6c44b1b223ac8e1f22fa1c44cadea55e7621366a0666439860fd4572f09c87daa45affd5dd15b6 + languageName: node + linkType: hard + "vite-plugin-inspect@npm:^0.8.5": version: 0.8.9 resolution: "vite-plugin-inspect@npm:0.8.9" diff --git a/docs/_snippets/addon-actions-action-function.md b/docs/_snippets/addon-actions-action-function.md index ac2c1cd93a7d..6af337fe1ac9 100644 --- a/docs/_snippets/addon-actions-action-function.md +++ b/docs/_snippets/addon-actions-action-function.md @@ -4,7 +4,7 @@ import { action } from '@storybook/addon-actions'; import Button from './button.component'; -const meta: Meta