For AI agents: the complete documentation index is available at /zh/llms.txt, the full documentation bundle is available at /zh/llms-full.txt, and this page is available as Markdown at /zh/guide/start/features.md.
close
  • 简体中文
  • 功能导航

    Rstest 是基于 Rsbuild 和 Rspack 的 JavaScript 与 TypeScript 测试框架,采用 bundle 执行模型,利用 Rspack 基于 Rust 的构建流程和 SWC 转换加快测试编译。你可以复用构建配置,在 Node.js 或浏览器中测试代码,并使用同一个 runner 完成本地开发和 CI 中的测试。

    基于 bundle 的快速执行

    Rstest 使用 Rspack 根据依赖图打包测试,通过其内置的 SWC loader 转换 JavaScript 和 TypeScript,将构建期优化直接用于测试。

    lazyBarrel 等优化会跳过无副作用 barrel 文件中未使用的重导出,减少不必要的模块处理,加快依赖图复杂的大型项目的测试。

    复用现有构建配置

    通过 adapters 复用已有的 Rsbuild、Rslib 或 Rspack 配置,包括别名、代码转换和插件,减少重复配置,让测试与应用或库的构建配置保持一致。

    参阅 配置 Rstest 和 配置 SWC。

    在 Node.js 和浏览器中测试

    默认在 Node.js 环境中运行测试,也可以模拟 DOM 来测试组件,或使用真实浏览器验证浏览器行为。

    DOM 测试

    Rstest 可以通过 jsdom 或 happy-dom 模拟 DOM 与浏览器 API。它支持 React、Vue 等常见框架测试流程,并兼容 Testing Library 和 CSS Modules。

    了解更多关于 DOM 测试。

    浏览器模式(Browser Mode)

    Rstest 提供 Browser Mode,适用于需要真实浏览器、而不是 jsdom 或 happy-dom 这类模拟环境的测试。它可以帮助你验证浏览器 API、渲染行为,以及 DOM 模拟器难以覆盖的交互。

    Browser Mode 基于 Playwright 运行,可在 Chromium、Firefox 和 WebKit 中执行测试,适合跨浏览器验证。

    了解更多关于 浏览器模式。

    Playwright 驱动的 E2E 测试

    Rstest 可以通过 @rstest/playwright 对完整页面或应用运行 E2E 测试。测试会在 Node.js worker 中运行,并使用 Playwright 驱动本地 dev server、preview server 或线上 URL,同时与其他测试共享 Rstest runner、配置和报告工作流。

    了解更多关于 E2E 测试。

    测试模块联邦应用

    Rstest 可以在 Node、JSDOM 和 Browser Mode 测试中加载真实的模块联邦生产者。配合 @module-federation/rstest,测试会实际覆盖远程模块加载和共享依赖,而不是使用 mock 替换联邦边界。

    了解更多关于 模块联邦测试。

    加快测试反馈

    Watch 模式

    当你修改测试文件或其依赖模块时,Rstest 会基于模块图分析,仅重新运行受影响的测试文件。随着测试规模增长,这可以让本地反馈保持快速。

    VM 模式

    如果 worker 启动和依赖编译占用了较多测试时间,可以尝试 VM 模式提供的 vmForks 和 vmThreads pool。它们会复用子进程或 worker 线程,同时为每个测试文件创建独立的 vm.Context、模块图和测试环境。

    VM pool 可以减少重复启动和编译的开销,但 setup 文件和模块求值仍会在每个文件中执行,VM context 也不会隔离进程级状态。建议先使用默认的 forks pool,切换前确认 VM 的兼容性限制。

    参阅 选择 pool,了解配置方式、内存回收和兼容性要求。

    源码内联测试

    Rstest 支持类 Rust 的模块测试风格,可以在源码文件中直接编写测试块。对于小型工具函数和 helper,将快速检查放在实现旁边会让开发更顺手。

    了解更多关于 源码内联测试。

    在 CI 中扩展测试规模

    多项目测试

    Rstest 可以在同一个进程中运行多个测试项目,每个项目都可以保留自己的配置和环境。这适合 monorepo、多应用工作区,以及需要分别覆盖 Node、DOM 或 Browser Mode 的项目。

    了解更多关于 多项目测试。

    测试分片(Sharding)

    Rstest 可以将测试文件拆分为多个分片并行执行。你可以在 CI 中把同一套测试分发到多台机器以缩短总耗时,并在所有分片完成后通过 blob 报告器与 rstest merge-reports 合并测试结果和代码覆盖率。

    了解更多关于 测试分片。

    代码覆盖率

    使用 istanbul 或 v8 provider 收集代码覆盖率、生成报告,并在 CI 中检查覆盖率阈值。Browser Mode 也支持收集覆盖率,可用的 provider 取决于浏览器和运行模式。

    参阅 代码覆盖率,了解 provider 选择和配置方式。

    更多能力