Vitest 2.0 正式发布:Vue 团队打造的下一代测试框架


7 月 8 日,由 Vue 团队打造的下一代测试框架 Vitest 正式推出 2.0 版本!

Vitest 于 2021 年 12 月推出,至今已经过去了两年多的时间,其发展速度可谓是非常迅速,目前在 npm 下载量已经达到了每周500w,并且还在呈现快速增长的趋势。

Vitest 是一个原生支持 Vite 的测试框架。Vitest 以其快速、简洁的测试解决方案而爆火,只需要很少的配置即可上手。由于 Vitest 和 Vite 使用相同的配置文件,因此将 Vitest 集成到 Vue 应用中很简单。

Vitest 主要功能:

  • 与 Vite 通用的配置、转换器、解析器和插件。

  • 使用与你的应用程序相同的设置来运行测试!

  • 智能文件监听模式,就像是测试的 HMR!

  • 支持对 Vue、React、Svelte、Lit 等框架进行组件测试。

  • 开箱即用的 TypeScript / JSX 支持

  • ESM 优先,支持模块顶级 await

  • 通过 Tinypool 使用 Worker 线程尽可能多地并发运行

  • 使用 Tinybench 来支持基准测试

  • 套件和测试的过滤、超时、并发配置

  • 支持 Workspace

  • Jest 的快照功能

  • 内置 Chai 进行断言 + 与 Jest expect 语法兼容的 API

  • 内置用于对象模拟(Mock)的 Tinyspy

  • 使用 jsdom 或 happy-dom 用于 DOM 模拟

  • 通过 v8 或 istanbul 来输出代码测试覆盖率

  • 类似于 Rust 语言的源码内联测试

  • 通过 expect-type 进行类型测试

Vitest 2.0 更新内容

Vitest 2.0 迁移指南:https://cn.vitest.dev/guide/migration

重要变更

  • 简化模拟函数泛型类型并与 Jest 对齐

  • 移除 --segfault-retry 选项

  • 以栈的形式运行套件钩子

  • 默认启用 coverage.ignoreEmptyLines

  • 在 JSON 报告中添加正确的位置和快照字段

  • 更新依赖 chai 至版本 5

  • 移除 watchExclude 选项

  • 更改默认池为 'forks'

  • 添加 --merge-reports 以支持覆盖率

  • 添加基于 Promise 的返回断言,不自动解析返回的 Promise

  • 如果全局设置失败,不要退出进程

  • 如果配置失败,不要退出进程

  • 在 JSON 输出中添加元数据

  • 在浏览器配置中将 indexScripts 重命名为 orchestratorScripts

  • 添加 "vitest list" API 以打印收集的测试而不运行它们

  • 从运行器中移除空套件

  • 支持并发套件

新增功能

  • 美化差异输出:来自原因的 diff 输出现在更易读

  • 改进 IDE 支持:现在允许将导入语句作为 vi.mock 路径

  • 移除弃用选项:清理了不再使用的选项

  • 添加 blob 报告器:增加了新的报告器选项

  • 添加 expect.poll 实用程序:提供了一个工具来手动重试断言

  • 添加 browser.ui 选项:允许用户配置浏览器界面的选项

  • 在 --output-json 中添加中位数:增强了 JSON 输出功能

  • 允许增强 config.test.env:现在可以在配置中增强测试环境变量

  • 在浏览器模式中实现模块模拟:浏览器模式现在支持模块模拟

  • 允许在配置中配置 expect 选项:可以更灵活地配置期望行为

  • 添加打印控制台堆栈跟踪的选项:增加了一个选项来打印控制台的堆栈跟踪

  • 向 UI 添加浏览器框架:改进了用户界面,添加了浏览器框架视图

  • 图像类型添加 bmp 支持:现在支持 .bmp 图像类型

  • 添加从 page.screenshot 返回 base64 的选项:现在可以选择以 base64 格式返回截屏

  • 公开来自 Vite 的 parseAst、parseAstAsync:将这些函数公开以供外部使用

  • 浏览器模式:

    • 为 Vitest 浏览器模式的下一次迭代奠定基础

    • 添加服务器和浏览器之间通信的命令

    • 在监视模式下不重新加载页面

    • 支持更改视口

    • 添加浏览器 iframe 鼠标交互

    • 支持点击事件

    • 将 none 提供程序重命名为 preview 并设为默认值

    • 在无头模式下并行运行测试,添加 page.screenshot 方法

    • 实现多个 userEvent 方法,添加填充和拖放事件

    • 引入 expect.dom 方法,并将 jest-dom 匹配器与 @vitest/browser 打包

    • 在浏览器中公开 CDP

    • 为浏览器测试添加 "init" 命令

    • 添加如果浏览器测试失败则拍摄屏幕截图的选项

    • 向交互式 API 添加三击 (tripleClick)

    • Playwright 提供程序不允许调整浏览器视口大小

Release Notes:https://github.com/vitest-dev/vitest/releases/tag/v2.0.0

来源:https://mp.weixin.qq.com/s/CFiy_iNnvNbfhoCwoKPUtQ


相關推薦

2023-01-30

增加一些特色实用的功能,所以在新年伊始,Bootx-Platform正式步入了1.2.x的时代,创新谷站作为1号线乃至济南地铁的第二站,作为对应的版本代号,正好标志着后续的工作计划需要是创新,只有创新才能与其他脚手架做出差异化

2022-07-15

距离 v2 发布 16 个月后,Vite 3.0 现已正式发布。公告指出,去年 2 月 Vite 2 发布以来,其采用率就在不断增长;每周 npm 下载量超过 100 万次,迅速形成了庞大的生态系统。Vite 正在推动 Web 框架的新一轮创新竞赛。 “我们决定至

2022-07-25

Vitest v0.19.0 现已发布,这是一个基于 Vite 的原生快速单元测试框架。具体更新内容如下: 重大变化 将 CSS 样式添加到 DOM -  #1690 特征 添加 Playwright 示例 - #1670 将位置添加到 json 报告器 - #1656 添加 alias 选项 - #1634

2023-01-11

Vitest v0.27.0现已发布,它是一个基于 Vite 的原生快速单元测试框架。具体更新内容如下 突破性变化 弃用结果上的“error”,将错误存储在“errors”中 #2586 (e641a) 将 vitest 拆分为单独的包,但暂时将它们捆绑在一起 #2575 (c8e6f)

2022-09-20

Vitest v0.23.4 现已发布,它是一个基于 Vite 的原生快速单元测试框架。具体更新内容如下 特征 使用 vi.mock 时提供有用的信息  #2047 基准:仅模式 #2039 Bug修复 将 outputFile 移动到基准测试,允许 --reporter 进行基准测试

2022-07-05

Vitest v0.17.0 现已发布,这是一个基于 Vite 的原生快速单元测试框架。具体更新内容如下: 新特性 添加 vite 3 支持 #1561 支持 cts 和 mts 配置  #1540 支持边缘运行时 #1574 添加缓存以运行失败和更长的测试  #1541

2022-08-10

Vitest v0.21.1 现已发布,它是一个基于 Vite 的原生快速单元测试框架。具体更新内容如下: 特性 types : 更好的本地测试上下文支持  #1805 Bug 修复 模块上的 Symbol.toStringTag 不可枚举  #1808 点击报告不抛错  #

2022-07-11

Vitest v0.18.0 现已发布,这是一个基于 Vite 的原生快速单元测试框架。具体更新内容如下: TestSequencerConstructor 错字 #1618 移动ctx.log到ctx.logger.log,改善日志闪烁 #1166  缓存解析失败时显示错误消息 #1614 将缓存状态移动到

2023-09-10

新生力量是否能撼动Javascript界老牌霸主Node的地位,成为下一代前端开发标准?让我们一睹这个新星的威力。 作为Javascript社区中一个相对较新的革新者,Bun致力于解决碎片化工具过多导致的开发低效问题。它将运行时、打包

2022-11-07

m 2022.3 近日发布了 Beta 版本,带来以下更新内容: 支持 Vitest WebStorm 2022.3 将支持 Vitest,这是一个 Vite-native 单元测试框架。 你可以使用各种运行选项从 WebStorm 运行 Vitest 测试。 Vitest watch 模式直接支持所有测试方案。对

2022-07-15

,将支付相关大部分功能进行了完善和优化。同时申请了正式的商户号,可以更方便的部署出来进行演示(支付完可以从后台进行退款),通过结算台演示,可以测试支付宝和微信的各种支付方式,同时还可以测试聚合支付(一

2022-11-16

管理功能进行统一维护。 通知公告:系统通知公告信息发布维护。 操作日志:系统正常操作日志记录和查询;系统异常信息日志记录和查询。 登录日志:系统登录日志记录查询包含登录异常。 代码生成:一键生成模块 CRUD

2022-08-16

多详情在这里 蓝牙 LE 音频  低功耗 (LE) 音频是下一代无线音频,支持新的用例,例如向朋友共享和广播音频,或订阅公共广播以获得信息、娱乐。它确保用户可以在不牺牲电池寿命的情况下接收高保真音频,并在不同

2023-06-17

源社区理事会成立、上海昇思AI框架&大模型创新中心正式启动及首批22家单位入驻、全模态大模型“紫东·太初2.0”正式发布等。 本次峰会以“一起昇思 无尽创新”为主题,全面聚焦人工智能框架生态发展,推动人工智能产