真卷啊......Vitest 都出 3.0 了

在两个月前,Vite 发布了 V6 的版本,这不没多久,与之配套的 Vitest 也官宣 V3 版本正式发布了,这能说这些人啊,太卷了...

很多同学可能并不熟悉 Vitest,它其实是一个 基于 Vite 的现代化测试框架,专为 前端单元测试和集成测试 设计的,可以理解为有点类似 Jest。但是,针对 Vite 做了更好的兼容性处理。目前基于 Vite 的单元测试,大部分都推荐使用Vitest 了。

那么下面,咱们就跟着官方团队的文档,一起来看看 Vitest V3 的更新内容吧!

正文

fc0dc51b3600e1c764e26a2ec6ecea0b.jpeg
Vitest 3 Announcement Cover Image

我们在半年前发布了 Vitest 2。我们见证了它被广泛采用,每周 npm 下载量从 480 万次增长到 770 万次。我们的生态系统也在快速发展。其中包括,Storybook 新的测试功能由我们的 VS Code 扩展和浏览器模式提供支持,以及 Matt Pocock 正在基于 Vitest 开发 Evalite,这是一个用于评估 AI 驱动应用的工具。

下一个 Vitest 主要版本来了

今天,我们激动地宣布 Vitest 3 的发布!这是一个重要的版本!

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

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

如果你要开始参与,我们建议你帮助 分类问题、审查 PR、基于开放的问题发送包含失败测试的 PR,并在 Discussions 和 Vitest Land 的帮助论坛中帮助其他人。

如果你想与我们交流,请加入我们的 Discord 社区,并在 #contributing 频道 上打个招呼。

要获取关于 Vitest 生态系统和 Vitest Core 的最新消息,请在 BlueskyMastodon 上关注我们。

报告器(Reporter)更新

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

伴随此更改,我们还重新设计了公共报告器 API(reporters 字段),使生命周期更容易理解。

你可以在 [#7069] PR 中关注设计过程。为了逆向工程之前的 onTaskUpdate API 并实现这个新的优雅生命周期,我们经历了一番艰难的努力。

c02a6eb61249f1308b8a441ae1213a03.gif

内联工作区(Inline Workspace)

让我们欢呼一下,芜湖!不再需要单独的文件来定义你的工作区 - 你可以使用 vitest.config 文件中的 workspace 字段指定项目数组:

jsx

import { defineConfig } from 'vitest/config'

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

多浏览器配置

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

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',
          },
        },
      ],
    }
  }
})

实例相对于工作区的主要优势在于更好的缓存策略 - Vitest 只创建一个 Vite 服务器来服务文件,这些文件只会被处理一次,而与你测试的浏览器数量无关。

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

按位置过滤(Filtering by Location)

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

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

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

公共(Public) API

我们重新设计了从 vitest/node 可用的公共 API,并计划在下一个小版本中移除实验性标签。此版本还包含了涵盖所有公开方法的全新文档。

319416a62fcaa281ef0a167477959f19.pnge9f7909bd14352092424cf93f5d7d013.png

破坏性变更(Breaking changes)

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

完整的变更列表请见 Vitest 3 更新日志

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值