Nightwatchでの並列テスト
Nightwatchは、主に2つの方法でテストの並列実行をサポートしています
- テストワーカー経由
- 複数のテスト環境を並列に実行する
テストワーカー経由
これが有効になっている場合、テストランナーは設定可能な数のチャイルドプロセスを起動し、ロードされたテストを分散して並列に実行します。
テストワーカーを有効にするには、以下のようにトップレベルのプロパティ`test_workers`を設定します
nightwatch.json
{
"test_workers": {
"enabled": true,
"workers": "auto"
}
}
または
nightwatch.json
{"test_workers": true}
`workers`オプションは、同時に実行できるチャイルドプロセスの数を設定します。
- `"auto"` - CPUの数によって決定されます。例:4つのCPUは4つのワーカーを意味します
- `{number}` - ワーカーの正確な数を指定します
もう1つの方法は、必要な並列プロセスの数を受け入れる`--workers` CLIスイッチを渡すことです。例:
nightwatch --workers=4
テストの同時実行はファイルレベルで行われます。各テストファイルはテストワーカースロットを埋めます。テストファイル内の個々のテスト/ステップは同時には実行されません。
並列でテストを実行する場合の出力を表示するためのサポートを向上させるために、テスト設定で`detailed_output`を`false`に設定することをお勧めします(また、`live_output`が有効になっていることを確認してください)。
複数環境
Nightwatchは、複数のブラウザでテストを並列に実行することをサポートしています。以下のコマンドは、`firefox`と`chrome`という名前の2つの環境を並列に実行します
nightwatch --env firefox,chrome
ターミナル出力
各環境は別々の`child_process`として実行され、出力はメインプロセスに送信されます。
出力を読みやすくするために、Nightwatchはデフォルトで各チャイルドプロセスからの出力をバッファリングし、最後に環境ごとにグループ化してすべてを表示します。
出力バッファリングを無効にして、各チャイルドプロセスからの出力がstdoutに送信されるときに表示したい場合は、`nightwatch.json`のトップレベル(`selenium`の後など)でプロパティ`"live_output" : true`を設定するだけです。
ブラウザごとに個別の環境を作成し(`desiredCapabilities`を連結することにより)、それらを並列に実行できます。さらに、`filter`および`exclude`オプションを使用すると、テストを環境ごとに分割して並列に実行できます。
ワーカー+複数環境経由
複数のブラウザに対してテストを並列に実行し、テストケースを複数のワーカーに分散できることは非常に便利です。 **v1.7**から、まさにそれができるようになりました。
nightwatch -e firefox,chrome --workers=4
上記は、`firefox`と`chrome`という名前の2つの環境を並列に実行します。