WebRender 测试

WebRender 类别的测试用于以独立的方式测试 WebRender 模块(位于 gfx/wr 中),而无需将其引入 Gecko。WebRender 完全用 Rust 代码编写,并拥有自己的测试套件。

如果您在使用这些测试套件时遇到问题,请联系图形团队(Matrix/Element 或 Slack 上的 #gfx),他们将能够为您指明正确的方向。针对这些测试套件的错误应在 Core :: Graphics: WebRender 组件中提交。

WebRender

WebRender 套件有一个代码风格检查作业,WR(tidy),以及每个平台一个 WR(wrench) 测试作业。通常,只有在 gfx/wr 子树中的代码被修改时才会运行这些测试作业,尽管如果它们依赖的上游文件(例如 docker 镜像)被修改,也可能会运行。

WR(tidy)

tidy 代码风格检查作业基本上是在 gfx/wr 子树中的代码上运行 servo-tidy 工具。此工具检查许多代码风格和许可证方面的问题,并且在遇到问题时能够发出有用的错误消息。要在本地运行它,您可以执行以下操作:

cd gfx/wr
pip install servo-tidy
servo-tidy

要在 tryserver 上运行,请使用 ./mach try fuzzy 并选择 webrender-lint-tidy 作业。

WR(wrench)

此测试作业运行的确切命令因平台而异。通常,这些命令会执行以下操作的子集:

  • 使用启用/禁用不同功能的方式构建不同的 webrender crate,以确保它们能够成功构建。

  • 运行 cargo test 以运行内置的 Rust 测试。

  • 运行 reftests 以确保 WebRender 生成的渲染结果与预期相符。

  • 运行 rawtests(用 Rust 代码手写的情景),以确保 WebRender 表现出的行为是正确的。

本地运行 (桌面平台)

测试脚本可以在 gfx/wr/ci-scripts/ 文件夹中找到,如果您已安装必要的工具(编译器、库等),则可以直接从 gfx/wr 文件夹中运行它们。如果您构建了 mozilla-central,则应该已经拥有这些工具。在 MacOS 上,您可能需要执行 brew install cmake pkg-config 以获取构建 osmesa-src 所需的其他依赖项。

cd gfx/wr
ci-scripts/linux-debug-tests.sh # use the script for your platform as needed

请注意,在本地运行这些测试时,根据您本地的 freetype 库,您可能会在 reftests 中遇到细微的反锯齿差异。这可能会导致 reftests/text 文件夹中的少量测试失败。通常,只要它们在您的补丁前后都以相同的方式失败,就不应该成为问题,但进行 try push 会确认这一点。

本地运行 (Android 模拟器/设备)

要在 Android 平台上本地运行 wrench reftests,您必须首先为 Android 构建 wrench 工具,然后运行 mozharness 脚本,该脚本将控制模拟器/设备、安装 APK 并运行 reftests。执行此操作的步骤在 gfx/wr/wrench/android.txt 文件中进行了更详细的说明。

在 tryserver 上运行

要在 tryserver 上运行,请使用 ./mach try fuzzy 并选择相应的 webrender-<platform>-(release|debug) 作业。