Cucumber-js: 並列オプションはイベントプロトコルでどのように機能しますか?

作成日 2018年02月05日  ·  9コメント  ·  ソース: cucumber/cucumber-js

JSONフォーマッターのようにtest-run-finishedのみをフックするカスタムフォーマッターは、並列化すると意図したとおりに機能しますが、 test-(step|case)-startedような以前のイベントを使用して順序付けられたフォーマッターでは、出力が順番どおりにログアウトされ、出力ドキュメント構造が無効になります。 それに対処するために計画されているものはありますか? ワーカーベースごとに出力をバッファリングし、完了したらマスターに一度にログに記録することができますか?

最も参考になるコメント

この機能がとても必要です!!!

全てのコメント9件

各イベントには、バッファリングではなく、前のイベントにリンクできる十分な情報が含まれている必要があると思います。

'end'イベントのみがフックされた場合、テストの出力の開始を見逃すため、これがどのように機能するかはわかりません。 かなりのフォーマッターとIntelliJベースのエディターのテストランナーを例として使用するには、次のように機能します。

  1. 開始イベントの「冒頭陳述」をログに記録します。かなりの場合- Scenario: Foo 、IntelliJの場合-TeamCity形式のコメント#teamcity[testStarted]
  2. フォーマッタの初期出力後に独自のログを出力するテストを実行します
  3. 終了イベントの終了ステートメント、 pass/fail要約または##teamcity[testFinished]ログに記録します

テストがログに記録するものの前に開始ステートメントがあり、後で終了ステートメントがあり、他のテストがそれと並行して何かをログに記録しないようにするため、順序は重要です。そうしないと、どの出力がどのテストに属するかが混同されます。 各出力は分離され、アトミック操作でマスターにログオンするため、バッファリングはそれを処理しているように見えます。

isParallelオプションをカスタムフォーマッターに渡して、テストケース開始/テストステップイベントでの出力が混乱するため、テストケース終了イベントでのみ出力する必要があることを通知できます。

この問題についてもっと議論する必要があります。 現在、フォーマッタを使用すると、端末への書き込み中にI / Oの競合が発生し、キュウリランナーがクラッシュするリスクがあります。 プログレスバーフォーマッターは、バーを動かして最後に要約を報告するだけであれば、パラレルランナーにとって理想的です。

計画は、キュウリからのメッセージのストリームを消費するスタンドアロンのフォーマッターに移行することです。

モノレポのロードマップdots-formatterおよびpretty-formatter (WIP)を参照してください

この機能がとても必要です!!!

こんにちは! アリュールレポーターと並行してキュウリjsを実行する機会はありますか? cucumber-js --parallel 2 -t @debug --format reporter.js:./ dummy.txtで実行しようとすると、TypeErrorが発生しました:undefinedのプロパティ 'sourceLocation'を読み取れません
前もって感謝します!

@ yevgen-getaloと同じ問題がここにあります。

v7.0.0として終了すると、上記の新しいメッセージプロトコルが使用されます。このプロトコルでは、 $THING_started $THING_finishedイベントとeventDataCollector.queryオブジェクト( @cucumber/queryインスタンス)は、これの一部に役立ちます。

このページは役に立ちましたか?
0 / 5 - 0 評価