Chrome 测试

免责声明

注意:请将本文档用作现有 chrome 测试的参考,因为您不希望创建新的 chrome 测试。如果您尝试测试特权浏览器代码,请改写浏览器 mochitest;如果您正在测试 Web 平台代码,请使用 wpt 测试,或者如果您无法使用 wpt 测试,则使用“普通”mochitest。

简介

chrome 测试类似于但不等同于以 chrome 权限运行的 Mochitest。

chrome 测试套件是一个自动化测试框架,旨在允许使用 JavaScript 测试应用程序 chrome 窗口。它允许您在非电解 (e10s) 内容区域以 chrome 权限运行 JavaScript 代码,而不是直接在浏览器窗口中运行(如浏览器测试所做的那样)。这些测试使用与 Mochitest 测试框架相同的函数报告结果。chrome 测试套件依赖于 Mochitest 框架中的 runtests.py。

运行 chrome 测试

要运行 chrome 测试,您需要构建 Firefox并包含您的更改,然后找到要运行的测试或测试清单。

例如,要运行 toolkit/content 下的所有 chrome 测试,请运行以下命令

./mach test toolkit/content/test/chrome/chrome.ini

要运行单个测试,只需将测试路径传递给 mach

./mach test toolkit/content/tests/chrome/test_largemenu.html

您还可以将路径传递到包含许多测试的目录。运行 ./mach test –help 以获取完整文档。

编写 chrome 测试

chrome 测试类似于但不等同于以 chrome 权限运行的 Mochitest,即代码和 UI 通过 chrome:// URI 进行引用。一个基本的 XHTML 测试文件可能如下所示

<?xml version="1.0"?>
<?xml-stylesheet href="chrome://global/skin" type="text/css"?>
<?xml-stylesheet href="chrome://mochikit/content/tests/SimpleTest/test.css" type="text/css"?>

<window title="Demo Test"
        xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
  <title>Demo Test</title>

  <script type="application/javascript"
          src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"/>

  <script type="application/javascript">
  <![CDATA[
    add_task(async function runTest() {
       ok  (true ==  1, "this passes");
      todo(true === 1, "this fails");
    });
  ]]>
  </script>

  <body xmlns="http://www.w3.org/1999/xhtml">
    <p id="display"></p>
    <div id="content" style="display: none"></div>
    <pre id="test"></pre>
  </body>
</window>

比较函数与 Mochitests 支持的函数相同,有关详细信息,请参阅 Mochitest 文档中关于比较函数如何工作的说明。 EventUtils 辅助函数 在全局作用域中定义的“EventUtils”对象上可用。

测试套件还支持异步测试。要使用这些异步测试,请使用 add_task() 功能。

在运行测试期间抛出的任何异常都将被捕获并在测试输出中报告为失败。在测试上下文之外抛出的异常(例如,在超时、事件处理程序等中)将不会被捕获,但会导致测试超时。

测试文件名必须以 test_ 为前缀,并且必须具有 .xhtml 的文件扩展名。不符合此模式的文件将被测试工具忽略,但您仍然可以包含它们。例如,您的 test_demo.xhtml 通过 openDialog 打开的 XUL 窗口文件应命名为 window_demo.xhtml。如果您的测试验证了错误修复,建议在文件名中添加错误号,例如“test_bug123456.xhtml”。

可以包含辅助文件,例如,来自 https://example.com/chrome/dom/workers/test/serviceworkers/serviceworkermanager_iframe.html

向代码库添加新的 chrome 测试

要向代码库添加新的 chrome 测试,请使用 ./mach test addtest the_test_directory/the_test_you_want_to_create.xhtml。有关 addtest 的更多信息,请运行 ./mach test addtest –help