Nightwatch 支持以两种主要方式并行运行测试

  • 通过测试工作者
  • 通过并行运行多个测试环境

通过测试工作者

启用此功能后,测试运行器将启动可配置数量的子进程,然后将加载的测试分发到这些进程以并行运行。

要启用测试工作者,请设置 test_workers 顶级属性,如下所示

nightwatch.json
{
  "test_workers": {
    "enabled": true,
    "workers": "auto"
  }
}

或者

nightwatch.json
{"test_workers": true}

workers 选项配置了可以同时运行的子进程数量。

  • "auto" - 由 CPU 数量决定,例如 4 个 CPU 表示 4 个工作者
  • {number} - 指定确切的工作者数量

另一种方法是传递 --workers CLI 开关,它接受所需并行进程的数量,例如
nightwatch --workers=4

测试并发在文件级别进行。每个测试文件将填充一个测试工作者插槽。测试文件中的单个测试/步骤不会并发运行。

为了更好地支持在并行运行测试时显示输出,我们建议在测试设置中将 detailed_output 设置为 false(并确保 live_output 已启用)。

多个环境

Nightwatch 支持在多个浏览器中并行运行测试。以下命令将在名为 firefoxchrome 的两个环境中并行运行

nightwatch --env firefox,chrome

终端输出

每个环境将作为单独的 child_process 运行,并且输出将发送到主进程。

为了使输出更易于阅读,Nightwatch 默认情况下会缓冲来自每个子进程的输出,并在最后显示所有内容,按环境分组。

如果您想禁用输出缓冲并查看每个子进程发送到 stdout 的输出,只需在 nightwatch.json 中的顶级(例如在 selenium 之后)设置属性 "live_output" : true
您可以为每个浏览器创建一个单独的环境(通过将 desiredCapabilities 连接起来),然后并行运行它们。此外,使用 filterexclude 选项,可以将测试按环境拆分,以便并行运行。

通过工作者 + 多个环境

能够在多个浏览器中并行运行测试以及将测试用例分发到多个工作者非常有用。从 v1.7 开始,您可以做到这一点。

nightwatch -e firefox,chrome --workers=4

以上将在名为 firefoxchrome 的两个环境中并行运行。