浏览器 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
命令生成新的浏览器测试,并将其添加到相关的清单中(如果该目录中已存在测试)。这会自动为您创建一个使用正确模板的测试文件,并将其添加到清单中。
如果该目录中还没有测试(例如,对于全新的功能和目录),您需要
创建一个空的
browser.toml
文件从
moz.build
文件中的BROWSER_CHROME_MANIFESTS
集合中添加它。然后像以前一样运行
./mach addtest
命令。
关于测试内容,请参阅 编写新的浏览器 mochitests。
调试测试¶
./mach test
和 ./mach mochitest
命令支持 --jsdebugger
标志,它将打开浏览器工具箱。如果您在测试中添加了 debugger;
关键字,调试器将在那里暂停。
或者,您可以自己使用调试器设置断点。如果您想在运行测试之前暂停调试器,可以使用 --no-autorun
标志。或者,如果您想在失败时暂停调试器,可以使用 --debug-on-failure
。
有关更多详细信息,请参阅 避免间歇性测试。