Skip to content

Vitest 3.0 发布

2025 年 1 月 17 日

Vitest 3 发布封面图

我们在半年前发布了 Vitest 2。我们看到了巨大的采用率,从每周 480 万 npm 下载量增长到 770 万。我们的生态系统也在迅速增长。其中包括 Storybook 新的测试功能(由我们的 VSCode 扩展和浏览器模式驱动),以及 Matt Pocock 正在 Vitest 之上构建 Evalite,这是一个用于评估 AI 驱动应用程序的工具。

下一代 Vitest 主版本来了

今天,我们很高兴地宣布 Vitest 3!这是一个大版本!

快速链接:

如果你之前没有使用过 Vitest,我们建议先阅读 入门特性 指南。

我们向 550 位 Vitest Core 贡献者 以及帮助我们开发这个新主版本的 Vitest 集成、工具和翻译的维护者和贡献者表示衷心的感谢。我们鼓励你参与进来,帮助我们为整个生态系统改进 Vitest。了解更多请访问我们的 贡献指南

为了开始,我们建议帮助 分类问题审查 PR,根据未解决的问题发送失败测试的 PR,并在 讨论区 和 Vitest Land 的 帮助论坛 中支持他人。如果你想和我们交谈,加入我们的 Discord 社区 并在 #contributing 频道 打招呼。

有关 Vitest 生态系统和 Vitest core 的最新消息,请在 BlueskyMastodon 上关注我们。

报告器更新

@AriPerkkio 重写了 Vitest 报告测试运行的方式。你应该会看到更少的闪烁和更稳定的输出!

除了这一更改外,我们还重新设计了公共报告器 API(reporters 字段),使 生命周期 更易于理解。

你可以在 #7069 PR 中关注设计过程。为了逆向工程之前的 onTaskUpdate API 以实现这个新的优雅生命周期,这是一场艰苦的战斗。

来自《It's Always Sunny》的绘图板 GIF

内联工作空间

值得高兴!不再需要单独的文件来定义你的 工作空间 - 在 vitest.config 文件中使用 workspace 字段指定项目数组:

jsx
import { defineConfig } from 'vitest/config'

export default defineConfig({
  test: {
    workspace: ['packages/*'],
  },
})

多浏览器配置

Vitest 3 引入了一种性能更高的方式,在不同的浏览器或设置中运行浏览器测试。你可以定义一个 instances 数组来在不同的设置中运行浏览器测试,而不是使用工作空间:

jsx
import { defineConfig } from 'vitest/config'

export default defineConfig({
  test: {
    browser: {
      provider: 'playwright',
      instances: [
        {
          browser: 'chromium',
          launch: { devtools: true },
        },
        {
          browser: 'firefox',
          setupFiles: ['./setup.firefox.ts'],
          provide: {
            secret: 'my-secret',
          },
        },
      ],
    }
  }
})

instances 相对于 workspace 的主要优势是更好的缓存策略 - Vitest 只创建一个 Vite 服务器来提供文件,这些文件只处理一次,与你测试多少个浏览器无关。

此版本还改进了浏览器模式功能的文档,并为 PlaywrightWebdriverIO 引入了单独的指南,希望能使配置更容易。

按位置过滤

在 Vitest 3 中,你现在可以按行号过滤测试。

$ vitest basic/foo.js:10
$ vitest ./basic/foo.js:10

特别感谢 @mzhubail 实现了这个功能。

公共 API

我们重新设计了 vitest/node 提供的公共 API,并计划在下一个次要版本中移除实验性标签。此版本还包括涵盖所有暴露方法的全新文档。

Vitest API 文档Vitest API 文档

破坏性变更

Vitest 3 有一些小的破坏性变更,不应影响大多数用户,但我们建议在升级前查看详细的 迁移指南

完整的变更列表位于 Vitest 3 更新日志

致谢

Vitest 3 是 Vitest 团队 和我们的贡献者无数小时工作的结果。我们感谢赞助 Vitest 开发的个人和公司。VladimirHiroshi 加入 VoidZero 全职从事 Vite 和 Vitest 工作,StackBlitz 雇佣了 Ari 以投入更多时间进行 Vitest 开发。特别感谢 NuxtLabsZammad,以及 Vitest 的 GitHub 赞助Vitest 的 Open Collective 上的赞助商。