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)
作业。