
Vitest是 Vite 原生的测试框架,最近发布了 4.0 版本,带来了基于浏览器的测试、视觉回归测试能力以及开发者体验方面的多项改进。
Vitest 4.0 引入了若干重要新特性,包括浏览器模式(Browser Mode)正式进入稳定状态、内置视觉回归测试支持、Playwright Traces 集成,以及增强的调试能力。此次发布也包含一些破坏性变更,开发者在升级前需仔细查阅迁移指南。
其中一项重大更新是浏览器模式的稳定化。该功能此前一直处于实验阶段,现在允许开发者在真实浏览器中运行测试,而非使用jsdom或happy-dom等模拟环境,从而能够获得更准确的测试结果。要使用浏览器模式,开发者现在需要单独安装对应的提供商的包,例如@vitest/browser-playwright、@vitest/browser-webdriverio或@vitest/browser-preview。这一调整简化了自定义选项的配置,并移除了对 TypeScript 引用指令(reference directives)的需求。
上下文(context)的导入路径也已变更,原先从@vitest/browser/context导入,现在应直接从vitest/browser导入。为保持兼容性,旧路径在下一个主版本之前仍可继续使用。
Vitest 4.0 通过toMatchScreenshot断言实现视觉回归测试。框架会捕获 UI 组件或页面的截图,并与基准图像进行比对,以检测意外的视觉变更。同时新增了toBeInViewport匹配器,利用 IntersectionObserver API 判断某个元素是否当前处于视口内。
此外,Vitest 4.0 支持为浏览器测试生成 Playwright Traces。开发者可在 test.browser 配置中设置 trace 选项,或通过browser.trace标志启用追踪,可选值包括 on、off、on-first-retry、on-all-retries 和 retain-on-failure。生成的 traces 会作为注解出现在报告器中,并可通过 Playwright Trace Viewer 查看。
VS Code 扩展现在在运行浏览器测试时提供“Debug Test”按钮,显著改善调试体验。开发者还可结合 playwright 和 webdriverio 提供者,在启动 Vitest 时添加 inspect 标志,手动连接 DevTools 进行调试。
报告器方面也有更新:basic reporter 已被移除,可用summary: false的默认报告器替代;默认报告器现仅在运行单个测试文件时以树形格式输出测试结果,而新增的树报告器则适用于希望始终以树形结构查看测试的用户;详情报告器(verbose reporter)现在无论是否在 CI 环境中,都会在测试完成后逐条打印结果(此前仅在 CI 中如此)。
社区对 Vitest 4.0 反响很积极。有 Reddit 用户指出,原生集成视觉回归测试意味着无需再引入 Percy 或 Chromatic 等外部依赖。该开发者还称赞 Vitest 的开发者体验持续优于 Jest,如今更成为一个功能完备的测试解决方案,许多过去需借助独立工具实现的功能现已内置。
不过,部分开发者在升级过程中遇到了问题。一则近期GitHub issue报告称,当 Vitest 4.x 与 Vite 7.1.0 或更早版本搭配使用时会出现 TypeScript 错误,尽管 Vitest 4.x 声明兼容 vite ^6.0.0 或^7.0.0。错误表现为 ModuleRunnerOptions 缺少createImportMeta属性,且仅在 vitest.config.ts 被纳入 TypeScript 上下文时触发。该问题已被标记为影响特定使用场景的轻微 bug。
由于 Vitest 4.0 包含破坏性变更,可能影响现有项目,官方已发布详细的迁移指南协助开发者升级。完整变更列表可在 GitHub 上的Vitest 4 Changelog 中查阅。
据 VoidZero 博客透露,过去一年 Vitest 的周下载量已从 700 万增长至 1700 万。
Vitest 是一个开源测试框架,专为 Vite 项目打造,但也可独立使用。它提供与 Jest 兼容的 API(如 expect、快照测试和覆盖率功能),并通过 esbuild 为 ESM、TypeScript 和 JSX 提供一流支持。
原文链接:
Vitest Team Releases Version 4.0 with Stable Browser Mode and Visual Regression Testing







评论