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、配置和报告工作流。

    了解更多关于 Playwright

    测试 Module Federation 应用

    Rstest 可以在 Node、JSDOM 和 Browser Mode 测试中加载真实的 Module Federation remote。配合 @module-federation/rstest,测试会实际覆盖 remote 加载和共享依赖,而不是使用 mock 替换 federation 边界。

    了解更多关于 Module Federation 测试

    加快测试反馈

    Watch 模式

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

    VM 模式

    如果 worker 启动和依赖编译占用了较多测试时间,可以尝试 VM 模式提供的 vmForksvmThreads 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 合并测试结果和代码覆盖率。

    了解更多关于 测试分片

    代码覆盖率

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

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

    更多能力