浏览器 chrome mochitests

浏览器 chrome mochitests 是在桌面 Firefox 浏览器窗口的上下文中运行的 mochitests。根据约定,测试文件命名为 browser_something.js,除了 mochitest 断言之外,还支持 CommonJS 标准断言,例如 nodejs 的 assert 模块,但它是在 Assert.sys.mjs 中实现的。

这些测试用于测试桌面版 Firefox 中与 UI 相关的行为。它们不会在 Android 上运行。如果您正在测试不直接与用户界面交互的内部代码,xpcshell 测试 可能更适合您的需求。

运行测试

您可以使用标准的 ./mach test 命令在本地运行单个测试:./mach test path/to/browser_test.js。如果文件名是唯一的,您可以省略路径。您还可以运行整个目录或特定的测试清单。

./mach test path/to/browser.toml

您也可以以相同的方式使用更具体的 ./mach mochitest 命令。使用 ./mach mochitest --help 将为您提供与运行、调试和评估测试相关的其他可用标志的详尽概述。

对于这两个命令,您可以使用 --verify 标志在 测试验证 下运行测试。这有助于消除测试的间歇性问题。

在我们的基础设施中,这些测试在 mochitest-browser-chrome 作业中运行。在那里,它们基于每个清单运行(因此对于大多数清单,浏览器保持打开状态时会运行多个测试)。

每当测试本身发生更改时,这些测试也会在 test-verify 作业中以 verify 模式运行。

请注意,这些测试使用“真实”焦点和输入,因此在运行它们时您需要不要触摸您的机器。您可以使用 --headless 标志来避免这种情况,但某些测试在这种模式下可能会中断。

添加新测试

您可以使用标准的 ./mach addtest path/to/new/browser_test.js 命令生成新的浏览器测试,并将其添加到相关的清单中(如果该目录中已存在测试)。这会自动为您创建一个使用正确模板的测试文件,并将其添加到清单中。

如果该目录中还没有测试(例如,对于全新的功能和目录),您需要

  1. 创建一个空的 browser.toml 文件

  2. moz.build 文件中的 BROWSER_CHROME_MANIFESTS 集合中添加它。

  3. 然后像以前一样运行 ./mach addtest 命令。

关于测试内容,请参阅 编写新的浏览器 mochitests

调试测试

./mach test./mach mochitest 命令支持 --jsdebugger 标志,它将打开浏览器工具箱。如果您在测试中添加了 debugger; 关键字,调试器将在那里暂停。

或者,您可以自己使用调试器设置断点。如果您想在运行测试之前暂停调试器,可以使用 --no-autorun 标志。或者,如果您想在失败时暂停调试器,可以使用 --debug-on-failure

有关更多详细信息,请参阅 避免间歇性测试

参考材料