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 的環境。