
一键在浏览器里进行组件测试
Storybook 是用来构建、测试和记录 UI 组件的行业标准工具。每周有数十万的开发者使用它,其中包括沃尔沃、Netflix 和 Chewy 的团队成员。
在 Storybook 8.4 中,我们打造了最佳的开发人员体验,用于在浏览器中测试前端代码并调试。这建立在我们与 Vitest 合作的 [组件测试] 工作基础上。
- ▶️ 一键浏览器组件测试功能
- 🫧 包体积减少50%,锁定文件大小缩减75%
- 5️⃣ 版本5的Svelte 5 和 Svelte CSF
- ⚛️ React Native Storybook 8
- 🏷️ 标签及筛选故事
- 💯 更多数百项改进
故事书测试是我们的前端测试愿景。通过测试组件而非整个应用,我们可以在端到端(E2E)测试的真实度和单元测试的速度及可靠性之间取得平衡。
这个体验的核心在于一个可以在 Storybook 中实时运行测试并显示结果的 UI。而这正是我们在 Storybook 8.4 中提供的功能。
只需轻轻一点,现在就可以在您的所有故事中运行 Vitest 组件测试了。

当测试失败的时候,你可以逐一排查并修复这些失败,使用 Storybook 的时间旅行调试器。

它也支持看守模式,所以当有问题发生时,你就会收到通知。

Chromatic的Visual Test插件也可以正常使用。想了解更多关于新测试界面的信息,请参阅官方文档。

与 8.0 版本相比,8.4 版本将 Storybook 的总体安装体积减少了超过 50%,锁文件的增加量减少了超过 75%。尽管我们在 2023 年的《JavaScript 状态》调查中表现不错,但用户最常提出的要求之一就是让 Storybook 更轻便,减少体积。
在最近的4次发布中,我们与Ecosystem Performance (e18e)项目(生态系统性能项目)合作,使Storybook变得更轻量、更快。我们的目标是为开发人员提供一个既高效又超响应式的使用体验。

我们是怎么做到的啊?
- 移除:
fs-extra#29126,handlebars#29208,file-system-cache#29256 - 替换:
lodash⇒es-toolkit#28981,express⇒polka#29230,chalk⇒picocolors#28262,qs⇒picoquery#28315 - 进行了优化: 启用生产模式下的
react#29197,可选的prettier#29223 - 预构建: Vite 构建器 #29302,React 渲染器 #29298,文档插件 #29301
除此之外,我们还为Storybook 9原型制作了一个仅使用ESM的迁移,以实现更加精简的版本。
Svelte 5 的支持功能Svelte 5 终于来了个,同时也支持 Storybook。
- ✅ 支持符文功能
- ✅ 用 Svelte CSF 写你的故事
- ✅ 超强的 Svelte TypeScript 支持
- ✅ 通过 Svelte CLI 实现零配置设置
故事书 for Svelte 诞生于 2018 年,那时 Svelte 本身也刚刚出现不久。它是某位单一贡献者的作品。多年来,它得到了社区贡献者的持续支持,但一直没有明确的所有者或维护者。这种情况在 2023 年发生了变化,当时 Jeppe Reinhold 加入了核心团队,并将改善 Svelte 集成作为自己的使命。
最大的变化是新的 Svelte 故事语法格式,它会在新的 Svelte 5 安装中出现,感谢维护者 Mateusz Kadlubowski 的贡献。下面就是它的样子:
<!-- Button.stories.svelte -->
<script module>
import { defineMeta } from '@storybook/addon-svelte-csf';
import { fn } from '@storybook/test';
import Button from './Button.svelte';
const { Story } = defineMeta({
component: Button,
tags: ['autodocs'],
args: {
label: '点我',
onclick: fn(),
},
});
</script>
<Story name="Primary" args={{ primary: true }} />
<Story name="Secondary" />
<Story name="Large" args={{ size: 'large' }} />
除了提供了一种更熟悉的编写故事的方法,Storybook 8.4 还提供了出色的 TypeScript 和 JSDoc 支持,能够自动生成高质量的 UI 控件,从而帮助您更好地使用 Svelte 组件,这要感谢 Taku Fukada 的出色贡献。

多亏了 Svelte 维护者 Ben McCann,Storybook 现在已经成为 Svelte CLI 入门体验的一部分,真是锦上添花。

这意味着在你的 SvelteKit 应用中运行 Storybook 比以往任何时候都要简单。不仅如此,随着越来越多的 Svelte 用户,我们非常兴奋地看到 Svelte 支持将提升到一个新的水平。
React Native 故事集 8
如果你还在使用 React Native 的 Storybook 并被困在 7.x 版本上,看着 8.x 版本的新特性不断发布,你肯定感到非常痛苦。为此,我们发布了 React Native Storybook 8。它的一大亮点是全新的响应式用户界面,针对手机和平板进行了优化,因为 RN 开发者大部分时间都在这些设备上工作。此外,我们还计划在未来不断更新 RN。RN 和 Web 的 Storybook 现在共享了大量代码。
详情请参阅React Native Storybook 8 发布文章。
给故事打标签和筛选故事如果你认真对待组件的文档和测试工作,你的 Storybook 可能会有数百甚至数千个故事。Storybook 的侧边栏层级结构和文本搜索功能有助于管理复杂性,但即便如此,庞大的 Storybook 也可能变得难以管理。
这就是我们创建它的原因:我们现在在Storybook 8.4中已经提供了一个灵活的标签系统,用于筛选故事内容。

为了配合这一新功能,社区成员 Steve Dodier-Lazaro 创建了一个新的插件,storybook-addon-tag-badges,用于在 Storybook 侧边栏中显示标签信息。

如需了解更多详情,请参见Storybook 的标签文档。
又有了数百项改进除了上面提到的功能外,每个 Storybook 发布都包含数百项改进和错误修复,这些改进和修复在各个层面都有体现。一些亮点如下:
- ✅ 将 Storybook for Solid 更新到 v8 版本!#10
- ✅ Storybook ESLint 插件现在支持 v9 和扁平化文件配置 #156
- ✅ Angular 源代码片段得到了重大改进 #29069
故事书 8.4 版今天已经可以使用了。试试在新项目中用用看。
使用最新的Storybook版本初始化项目:npx storybook@latest init
或者更新已有的项目。
npx storybook@latest upgrade
如果您是从 7.x 版本升级,我们有一份指南可以帮助您。我们也有一份从旧版本迁移的指南在这里。
下一步会是啥在8.5版本里,还将带来更多的改进:
- 更好的控制来运行您故事子集中一部分的测试
- 在 UI 上对所有您的故事进行 A11y 检查
- React 服务器组件 (RSC) 的模拟和测试
- 提供一个
afterEach钩子用于测试后的断言(RFC 可用)
你可以查看Storybook 的路线图以获取我们目前的工作内容,并了解最新信息。
致谢特别感谢这 38 位参与了 Storybook 8.4 的贡献者!
以下是 GitHub 上的一些用户:
@3w36zj6 — 一个 GitHub 用户名,
@43081j — 一个 GitHub 用户名,
@andrasczeh — 一个 GitHub 用户名,
@chudesnov — 一个 GitHub 用户名,
@dannyhw — 一个 GitHub 用户名,
@flexbox — 一个 GitHub 用户名,
@ghengeveld — 一个 GitHub 用户名,
@honcharenkozhenya — 一个 GitHub 用户名,
@hyeongrok7874 — 一个 GitHub 用户名,
@infinitexyy — 一个 GitHub 用户名,
@javanpoirier — 一个 GitHub 用户名,
@jonniebigodes — 一个 GitHub 用户名,
@jreinhold — 一个 GitHub 用户名,
@jsmike — 一个 GitHub 用户名,
@k35o — 一个 GitHub 用户名,
@kasperpeulen — 一个 GitHub 用户名,
@kazuyainoue0124 — 一个 GitHub 用户名,
@kylegach — 一个 GitHub 用户名,
@mahdi-hazrati — 一个 GitHub 用户名,
@ndelangen — 一个 GitHub 用户名,
@pedrosousa13 — 一个 GitHub 用户名,
@sentience — 一个 GitHub 用户名,
@shilman — 一个 GitHub 用户名,
@shreysinha02 — 一个 GitHub 用户名,
@sidnioulz — 一个 GitHub 用户名,
@stephenjason89 — 一个 GitHub 用户名,
@strozw — 一个 GitHub 用户名,
@tobiasdiez — 一个 GitHub 用户名,
@valentinpalkovic — 一个 GitHub 用户名,
@vanessayuenn — 一个 GitHub 用户名,
@vctqs1 — 一个 GitHub 用户名,
@webpro — 一个 GitHub 用户名,
@yannbf — 一个 GitHub 用户名,
@ziebam — 一个 GitHub 用户名,
随时随地看视频