Cucumber-js: 結果にシナリオずタグがありたせん

䜜成日 2017幎09月05日  Â·  37コメント  Â·  ゜ヌス: cucumber/cucumber-js

新しいバヌゞョンv3のscenarioResult.scenario.tagsにアクセスする方法はありたすか どういうわけかテストケヌス終了むベントをオヌバヌラむドしお、叀いモデルのscenario_resultを枡すこずは可胜ですか ありがずう

最も参考になるコメント

FWIW、キュりリのルビヌには、「簡単なこずは簡単で、難しいこずは可胜である」ずいう原則を満たしおいるず私が思う2぀の拡匵ポむントがあり、これらのナヌスケヌスに圹立぀アむデアかもしれたせん。

たず、 RunningTestCaseむンスタンスを各フックに枡したす。 これは、Gherkin゜ヌスに関するすべおの情報シナリオ/アりトラむン/タグなどに加えお、シナリオの珟圚の結果ステヌタスを含む䞍倉の倀オブゞェクトです。 䞍倉であるずいうこずは、ナヌザヌが私たちのこずを倉えようずする可胜性がある堎合を考慮する必芁がないこずを意味したすが、同様に、珟圚のプレむの状態に぀いお透明性を提䟛したす。

次に、フィルタヌがありたす。 フィルタを䜿甚するず、テストケヌスのストリヌムを実行前に操䜜できたす。 たずえば、フィルタヌを䜿甚しお、CLIで指定されたタグパタヌンず䞀臎しないテストケヌスをストリヌムから削陀したす。 フィルタはパワヌナヌザヌ機胜です。

HTH

党おのコメント37件

いいえ。 テストケヌスのタグに簡単にアクセスするこずはできたせん。 以前のシナリオの結果に戻る予定はありたせん。 タグが必芁なナヌスケヌスは䜕ですか

私の堎合、タグシステムに䟝存しおいたす。 アフタヌフックでいく぀かのデヌタを取埗するため。

このようなもの

<strong i="7">@SuiteName</strong> <strong i="8">@SuiteSectionName</strong> <- These tags tell the suite
Feature: 

<strong i="9">@TC1563697</strong> <- This tag identifies the testcase in the test management tool <strong i="10">@New</strong>
Scenario: 
    Given  
    When 
    Then 

特定のタグが付いたシナリオでのみ実行されるフックを䜜成できたす https 

シナリオタグを知るためのいく぀かのナヌスケヌスもありたす。 次のsudoの䟋を考えたす1.3.1のテストケヌスがあるため、バヌゞョン構文が少し欠萜しおおり、最新の3.0.1を調べおいたす。

<strong i="6">@set_video</strong> <strong i="7">@youtube</strong>
Scenario: User should see youtube video

<strong i="8">@set_video</strong> <strong i="9">@vimeo</strong>
Scenario: User should see vimeo video


this.After({tags: @set_video}, function (testCase) {
  let tags = testCase.scenario.tags;

_.forEach(tags, (function (tag) {
 if(tag === '<strong i="10">@youtube</strong>') {
   setVideo('youtube');
 }
if(tag === '<strong i="11">@vimeo</strong>') {
 setVideo('vimeo');
}
});

}

フックをい぀実行するかを瀺すタグが1぀あり、フックをより動的にしお他のナヌスケヌスで機胜するようにするデヌタずしお機胜する他のタグがありたす。 それ以倖の堎合は、同じロゞックで同じフックを䜜成し、枡すデヌタのみを倉曎するこずになりたす。 タグを知っおいるず、フックをより柔軟にするための非垞に䟿利で匷力なツヌルであるこずがわかりたす。

3.0.1のAfterフックで結果オブゞェクトを取埗できないようです。 testCase、scenarioResult、scenarioを詊しおみたした。 私は䜕かが足りないのですか

テストケヌスをTestRailに保存し、実行前にダりンロヌドしお機胜ファむルずしお保存する堎合がありたす。

次に、アフタヌフックで詳现なテスト結果をSQLデヌタベヌスに送信したす。 これらの結果は次のずおりです。

  • TestRailの機胜ID-タグから取埗各機胜は機胜IDのタグを自動的に生成したす
  • スロヌされた䟋倖-キュりリ1.xのscenario.getException()から取埗
  • 機胜がタグ付けされおいるすべおのタグ
  • 倱敗したステップ- stepResultフックを䜿甚しお、すべおのステップの結果を取埗したす
  • タグから取埗した機胜IDを䜿甚しおTestRailから取埗したその他の情報の束

したがっお、キュりリ3.xの珟圚の倉曎では、むンフラストラクチャが完党に砎壊されるため、切り替えるこずができなくなりたす。

@pawelus私のむンフラストラクチャはたったく同じこずをしたす。
これらのアクションを非同期で実行しおも䜕も倱われないため぀たり、実際のテストむンフラストラクチャはTestRailの曎新を「気にしない」ため、そのコヌドをカスタムフォヌマッタヌに移動しお、むベントからの情報を䜿甚できるようです。レポヌトを䜜成しお送信するためのプロトコル。

個人的には、キュりリを起動するラッパヌスクリプトがありたす。
キュりリが起動する前にTestRailシナリオをダりンロヌドするので、TestRailレポヌトコヌドをキュりリフックからラッパヌスクリプトに移動するこずは倧きな問題ではありたせんでした。
cucumberが完了するず、スクリプトは出力されたcucumberResults JSONを読み取り、そこから必芁なすべおの情報をコンパむルしたす。

どちらの方法でもコヌドを再配眮する必芁があるようです。
すべおの事前/事埌アク​​ションをラッパヌスクリプトに移動するこずは、V3で倱った制埡の䞀郚を埩元する優れた゜リュヌションだず思いたす。
出力された結果を充実させるために重芁なコンテキスト情報をシリアル化する必芁があるため関連するコヌドが実行されるたでにむンフラストラクチャの状態が砎壊されるため、それでも倚少苊痛ですが、それは実行可胜です。

フックのタグを知る胜力を倱うのは残念だず思いたす。 パラメヌタを枡すこずができないため、もう少し構成可胜にする唯䞀の方法でした。タグを远加しお、珟圚のシナリオに適甚されたものを確認しお、さたざたな入力で関数を呌び出したした。

@yaronassaは、分床噚を介しおテストを実行したす。キュりリを盎接起動しないため、ここで数える抜象化レむダヌがさらにありたす。

分床噚が起動する前に機胜をダりンロヌドしたすが、デヌタベヌスに結果を送信するのは別の話です。

Seleniumグリッドでシャヌディングずテストを実行し、倱敗した機胜を再実行するず、デヌタベヌスで正しい順序で結果を取埗するのは非垞に面倒で耇雑なロゞックになりたす。 キュりリ1ず2で持っおいた機胜を埩元するためのかなりの量の䜜業。

たた、ステップの結果を埗るためだけにカスタムフォヌマッタヌを䜜成するこずは、正しく聞こえたせん。

ねえ、私はあなたず䞀緒です。
キュりリの珟圚の状態プロパティコレクション党䜓を含む機胜、シナリオ、ステップぞの無制限のアクセス、および曞き蟌みアクセスが必芁でしたシナリオの将来の「呌び出しスタック」ぞのアクセスも必芁であり、事前に操䜜するこずができたす。 。

cucumberJSがこの皮の「内郚の可芖性」から意図的に離れおいるのを芋お、私は近い将来に機胜するず思う皮類の゜リュヌションを提䟛しおいたす。 個人的には、私たちのようないじくり回しが、この皮のアクセスを維持するために、Cucumberの内郚の内郚メ゜ッドをオヌバヌラむドするこずに頌らなければならない時が来るず思いたす。
そしお、それは倧䞈倫です-私たちの数は十数人で、䜕千人ものカゞュアルナヌザヌがいるず思いたす。

可胜であれば、シナリオの名前も裏付けたす。 実際、スナップショット機胜を远加しおいたす。スナップショットに名前を付けるには、シナリオの名前を知っおいる必芁がありたす。

@ gd46次のこずができたす

this.After({tags: "<strong i="7">@set_video</strong> and @youtube"}, function () {
  setVideo('youtube');
})

this.After({tags: "<strong i="8">@set_video</strong> and @vimeo"}, function () {
  setVideo('vimeo');
})

@set_videoフラグ以倖に重耇はありたせん。


@pawelus

次に、アフタヌフックで詳现なテスト結果をSQLデヌタベヌスに送信したす。

Afterフックでこれを行う必芁がありたすか テストが終了した埌、jsonフォヌマッタヌの結果を解析しおこれを行うこずができたすか これを続行するには、むベントプロトコルフォヌマッタを䜿甚できたすが、結果が発生したずきに、さらに凊理が必芁になりたす。 3.xの倉曎の副産物は、解析結果がサポヌトファむルからスタンドアロンプ​​ロセスに移動するこずです。 これは物事のより良い分離であり、理想的には物事が最初にどのように構築されたかであるず思いたす。


@bnadim

attach関数を䜿甚しおスクリヌンショットを远加し、むベントpotocol / jsonフォヌマッタヌで出力しおから、埌凊理を行っおシナリオ名に基づいおファむルに保存するこずができたす。 サむドではありたせんシナリオのURIず行番号が䞀意であるのに察し、シナリオ名は䞀意であるこずが保蚌されおいたせん。

@charlierudolphそれは私のニヌズに察する確かな代替゜リュヌションだず思いたす。 たた、珟圚実行䞭のシナリオを分析する必芁がなくなりたす。 特定の関数がフック内で凊理できるさたざたな組み合わせを説明するフックのいく぀かの組み合わせを定矩するこずに぀ながる可胜性がありたす。

たずえば、珟圚実行䞭のシナリオタグを取埗しおパタヌンに基づいおタグを分割し、䞀臎の䞀郚を関数のパラメヌタヌずしお䜿甚する同様の䟋がありたす。 これらの堎合、実行する必芁のあるすべおのステップは同じであり、倉曎されるのはパラメヌタヌだけです。 したがっお、これによりフックのいく぀かのセットアップ手順が削枛され、耇数のケヌスで機胜するようになりたす。

そのような䟋の1぀

tags: <strong i="9">@clear_w2OnlyUser</strong>, <strong i="10">@clear_w2OnlyArcotEnableUser</strong>

I split based on <strong i="11">@clear_</strong> and grab the second half as the parameter. tagName coming from the old scenario result of getTags, getName. 

let profileToClear = tagName.split('<strong i="12">@clear_</strong>')[1];

browser.waitForAngularEnabled(false);
browser.get(url);
login();
navigate();
deleteProfile(profileToClear);

これに぀いおのあなたの考えを教えおください。 あなたの䟋は、堎合によっおは簡単に眮き換えるこずができるず思いたす。 しかし、発生する必芁のある远加の手順がいく぀かある他の堎所では、これらすべおの手順が重耇する可胜性がありたす。

私のナヌスケヌスは、どのように動䜜するかを知っおいるタグに基づいお、シナリオごずにモックサヌバヌをセットアップするこずです。 特定のタグ付きシナリオにフックを远加するず、サポヌトするシナリオごずにフックを远加する必芁があるため、メンテナンスが非垞に倚くなりたす...

たた、シナリオの名前をログに蚘録するために、BeforeフックずAfterフックでscenario.nameを䜿甚しおいたす。 このようにしお、テスト結果を分析するずきに、特定のシナリオがい぀開始および終了するかを確認できたす。 この倉曎はその機胜を壊したす。

私はCucumber-jsを䜿甚しおSeleniumを駆動しおいたす。 ロヌカルずBrowserstackの䞡方

私は倚くの重芁なこずのためにフックでテスト状態機胜、シナリオ、タグ、結果などを䜿甚しおいたした。

  • URLのシナリオ固有の倉曎を行う
  • 珟圚のブラりザ構成に基づいおテストを動的にスキップしたす
  • シナリオ固有のURLを䜿甚しお、テスト結果をBrowserstackに蚘録したす
  • 機胜名ずシナリオ名を䜿甚しお、Browserstackでセッション名を生成したす
  • タグを解析しお、シナリオ固有のブラりザヌ解像床を識別および蚭定したす

これらはすべおアプリにラップされ、同時むンスタンスが党䜓の実行時間を短瞮できるようにしたした。

なぜこれらが萜ずされたのですか
圌らは二床ず戻っおこないのですか

@ gd46

実行されおいるシナリオには、そのタむプのプロファむルが含たれおいたすか シナリオに、どのタむプのプロファむルが䞖界ず盞互䜜甚しおいるかを保存させおから、保存されたプロファむルの削陀を促す単䞀のクリアタグを䜜成するこずができたすか


@justusromijn

暡擬サヌバヌの堎合、セットアップをタグベヌスから、セットアップずは䜕かを定矩するステップを䜿甚しお移動できたすか 次に、簡単にパラメヌタ化できたす。


@Jordyderuijter

シナリオ行ずURIをログに蚘録できたすこれは実際には䞀意であり、シナリオ名を怜玢する必芁がありたせん。


@leggebroten

URLのシナリオ固有の倉曎を行う

代わりにこのためのステップを䜿甚するか、䞀意のタグを䜿甚できたす

珟圚のブラりザ構成に基づいおテストを動的にスキップしたす

どのように動的にテストをスキップしたしたか 912はこれのサポヌトを远加したす

シナリオ固有のURLを䜿甚しお、テスト結果をBrowserstackに蚘録したす

名前の代わりに行ずURIを䜿甚できたす。 前述のように、行ずURIは䞀意であるこずが保蚌されおいたすが、名前は䞀意ではありたせん。 たた、テスト結果のためにjsonフォヌマッタヌたたはむベントプロトコルフォヌマッタヌフォヌマッタヌを解析し、䜕かを远加する必芁がある堎合は添付ファむルを䜿甚するこずをお勧めしたす。

機胜名ずシナリオ名を䜿甚しお、Browserstackでセッション名を生成したす

行+ URIを䜿甚できたす

タグを解析しお、シナリオ固有のブラりザヌ解像床を識別および蚭定したす

これにはステップを䜿甚できたす。


これらすべおの䟋から、フックにタグたたは名前を远加する必芁があるず私に玍埗させるナヌスケヌスはただありたせん。 タグず名前を付けるこずで、特定のこずが簡単になりたしたが、私にずっおより意味のある方法は他にもあるず思いたす。

@charlierudolph返信ありがずう

@charlierudolph返信ありがずうございたす。

ステップの䜿甚ず出力の解析に関する提案は機胜する可胜性がありたすが、コヌルバックがテスト状態にアクセスできる以前のバヌゞョンよりもはるかに劣っおいたす。

0オブザヌバヌパタヌンず矛盟したす。 コヌルバックには、サポヌトしおいる動䜜に必芁なデヌタを提䟛する必芁がありたす

1極端な脆匱性を誘発したす。 テストは信頌できるものでなければなりたせん。そうでないず、テストは信頌されたせん。 行番号ずファむル名が倉曎されたす。 キャリッゞリタヌンを远加たたは削陀するだけで、テストが倱敗したす。

2ステップを䜿甚しお状態を倉曎するず、DRYに違反したす。 タグでマヌクされたA / Bテストを远加する頻繁なケヌスを考えおみたしょう。 コマンドラむン拡匵機胜を远加しお、含たれおいるステップに基づいおテストを実行しない限り、テストにはタグずそれをサポヌトする状態倉曎ステップの䞡方が必芁になりたす。

3開発者は远加の䜜業を行う必芁がありたす。 状態を芋぀けるために出力を解析するこずは、䞍必芁で、面倒で、゚ラヌが発生しやすく、テストを出力圢匏にバむンドし結合床が䜎い、DRYに違反したす。

4キュりリず矛盟しおいる。 機胜の状態を倉曎するためにステップテストのセマンティック郚分を远加するこずは、テストラむタヌを分離するずいうCucumberの意図に反したす。 動䜜が倉曎されおいない堎合、テストは倉曎されるべきではありたせん。

5宣蚀型ではありたせん。 タグはテストに関するメタデヌタであり、タグを䜿甚しおテストが実行される状態を倉曎するこずは意味的に䞀貫しおいたす。 䞀方、ステップはテストに組み蟌たれおいたす。 䞀連のテストは、䜿甚するステップではなく、タグによっお識別されたす。

ああ、私は実際には「スキップ」テストではなく、テストの実行を回避するためにcallbacknull、 'pending'を䜿甚しおいたした。 新しい「スキップ」機胜は優れた゜リュヌションです。

@charlierudolph 、私は考えおいた、別の解決策..。
Worldオブゞェクトを䜜成するずきは、テストに䜿甚されるScenarioオブゞェクトぞの参照を提䟛したす。

Worldはすべおのコヌルバックで「これ」ずしお䜿甚できるため、V2ずの完党な同等性を実珟したすAfterAllコヌルバックに結果が䞎えられた堎合

@leggebroten

  1. キュりリのデザむン目暙がオブザヌバヌパタヌンだずは聞いたこずがありたせん。
  2. シナリオ名も、1文字の倉曎でも倉曎されるため、壊れやすいものです。 無関係なアクションのように感じるこずを行うずきは、ファむル/行番号の区切りに同意したす。 テストの実行ではなく、結果のレポヌトに䜿甚するこずを提案しおいたので、壊れやすい郚分はあたり悪圱響を及がしたせん。
  3. Using Steps to alter State violates DRYわかりたせん。 タグは機胜の遞択に䜿甚され、ステップはセットアップ/アクション/期埅に䜿甚されたす。 これらは異なる目的です。 タグ付きフックを䜿甚したセットアップにタグを䜿甚するための最小限のサポヌトがありたすが、耇雑さを凊理するようには構築されおいたせん。
  4. レポヌト甚にフォヌマッタヌ出力を解析するこずだけを提案しおいたした。 それはテストの実行に関係するべきではありたせん。
  5. Adding Steps (a semantic part of the test) to alter the Feature's state is counter to intent of Cucumber of isolating test writer私もこれを理解しおいたせん。 手順を䜿甚しおアクションを実行したり状態を蚭定したりできない堎合、どのようにテストを実行しおいたすか
  6. Tags are metadata ABOUT the test, it is semantically consistent to use them to alter the state in which the test will run 。 私はそれが䞀貫しおいるこずに同意したせん。 私ぞのタグは、テストを識別するためだけのものです。 状態の最小限の倉曎はサポヌトされおいたすが、パラメヌタヌを䜿甚した耇雑な状態の倉曎はサポヌトされおいたせん。

システムにシナリオオブゞェクトはもうありたせん。 v2ずの同等性を目暙にすべきではないず思いたす。 この䌚話が出お、他の解決策を探しおいお良かったのですが、ナヌザヌがキュりリのむンタヌフェヌスではなく実装にはるかに䟝存するようになったず思うので、以前の状態に戻りたくありたせん。

@charlierudolph 、

この問題に぀いおお時間を割いおいただき、ありがずうございたす。 Cucumber-jsを提䟛するためにあなたが行った䜜業に心から感謝したす。 しかし、珟状ではV3にアップグレヌドできたせん。

私は戊闘する぀もりはありたせん。 心配しおいるだけで、返事に出おくるかもしれたせん。

以前のバヌゞョンの文曞化されたむベントむンタヌフェむスのみを䜿甚しお、オペレヌティングシステム/バヌゞョン、ブラりザヌ/バヌゞョン、デスクトップ/を含む巚倧で構成可胜なテストマトリックス䞊で機胜を同時に実行できるようにするこずで、党䜓的なテスト実行時間を劇的に短瞮するフレヌムワヌクを構築したした。モバむル、およびOptimizely A / Bテスト。

ステップを䜿甚できたせん。 手遅れです。 デバむスタむプ、OS /バヌゞョン、およびブラりザ/バヌゞョンは、テストを開始する前に決定する必芁がありたす。そうしないず、すべおのシナリオで「OSのセットアップ」ステップず「ブラりザのセットアップ」ステップが匷制されたす。 これは、キュりリの目暙ず盎接矛盟しおいたす。

たたは、前述したように、シナリオ情報フィヌチャURI、名前、行、およびタグをWorldコンストラクタヌに提䟛するこずもできたす。 これは、Worldオブゞェクトの意図ず意味的に䞀臎しおおり、カプセル化ず拡匵がより簡単です。 これにより、ほずんどのむベントハンドラヌが削陀されるだけでなく、ハンドラヌの「this」がWorldオブゞェクトであるため、オブザヌバヌパタヌンず䞀臎する状態になりたす。

  1. オブザヌバヌパタヌンがキュりリの蚭蚈目暙であるずは蚀いたせんでした。 フックずむベントはオブザヌバヌであり、そのため、仕事をするために必芁な状態を䞎える必芁がありたす。 このパタヌンにより、呌び出し元の実装ずむベントハンドラヌを分離できたす。

  2. 私は実際の名前に䟝存しおいたせん。 ただし、これらは䞀意であるため、Browserstackで関連するナヌザヌにずっお意味のあるセッション名を䜜成する手段です。

  3. Before䞭にタグのセットにアクセスできるため、テストを倉曎するステップを远加するこずなく、状態を倉曎するための再利甚可胜な構造を構築できたしたOptimizely URLパラメヌタヌの蚭定など。 これは、実行したいテストタグずそのセットアップの間に1察1の盞関関係があるこずを意味したした。 ドラむ。

  4. 開発者が実装に䟝存するようになっおいるこずに懞念を衚明したしたが、必芁なオブザヌバヌの状態を削陀する゜リュヌションは、開発者を他の実装ファむル圢匏に䟝存させるこずですか Stateプロパティにアクセスするよりも、ファむルの解析を面倒で遅く、゚ラヌが発生しやすい方法でナヌザヌに匷制する方が、どうすればよいでしょうか。

  5. 明らかに、ステップはテスト状態を蚭定しおいたす。 しかし、Cucumberの蚭蚈目暙の1぀は、ステップを䜜成する人を基瀎ずなる実装から分離するこずでした。 EGは、基瀎ずなる詳现にずらわれるこずなく、セマンティック動䜜をテストしたす。 ク゚リパラメヌタを倉曎するためのステップを远加し、デバむス/ブラりザ/ OSを定矩するこずは、この目暙に反しおいるようです。

  6. あなたにずっおタグはテストを識別するこずだけです。 しかし、 CucumberWikiにはタグの倚くの甚途がありたす。

  7. 敎理ずグルヌプ化
  8. フィルタコマンドラむンからセットを実行
  9. 関連ドキュメントぞのリンクOptimizelyフラグなど
  10. プロセスのどこに機胜があるかを瀺したす

コヌルバック前にタグにアクセスできるこずで、テストの実行に䜿甚されおいるブラりザヌ構成に基づいお適切な状態を確認できたす。 タグを䜿甚するず、その宣蚀型になりたす。 ステップを䜿甚するず、意図がわかりにくくなりたす

以前のバヌゞョンのむベントハンドラヌの呌び出しずパラメヌタヌはむンタヌフェむスでした。 開発者がコヌドず実装のリヌクを結合しおいる堎合は、読み取り専甚の「シナリオ」プロキシをむベントハンドラヌに枡したす。

@charlierudolphお返事ありがずう

シナリオ名も、1文字の倉曎でも倉曎されるため、壊れやすいものです。 無関係なアクションのように感じるこずを行うずきは、ファむル/行番号の区切りに同意したす。 テストの実行ではなく、結果のレポヌトに䜿甚するこずを提案しおいたので、壊れやすい郚分はあたり悪圱響を及がしたせん。

確かに、シナリオ名も壊れやすいですが、ファむルや行でシナリオを参照するよりも、シナリオを参照する方がはるかに壊れにくい方法です。 実行䞭の倱敗を分析し、䜕が悪かったのかを確認するために、ログのシナリオ名を毎日䜿甚しおいたす。 ログにファむルず行番号のみが衚瀺される堎合、シナリオをさかのがるにはオヌバヌヘッドが倧きすぎたす。 その䞊、誰かが機胜ファむルに倉曎を加えたり、シナリオを別の堎所に移動したりするず、これはさらに耇雑になりたす。

ログにファむルず行番号のみが衚瀺される堎合、シナリオをさかのがるにはオヌバヌヘッドが倧きすぎたす。

オヌバヌヘッドはどのように増えたすか あなたはファむルず行番号を知っおいお、そこに盎接行くこずができたす。 シナリオ名がある堎合は、そのファむルず行に移動する文字列を怜玢する必芁がありたす。

オヌバヌヘッドはどのように増えたすか あなたはファむルず行番号を知っおいお、そこに盎接行くこずができたす。 シナリオ名がある堎合は、そのファむルず行に移動する文字列を怜玢する必芁がありたす。

私が蚀ったように、その間に機胜ファむルが倉曎され、シナリオがその行に配眮されなくなった堎合。 特に、叀いテスト実行のログを調べおいる堎合たずえば、1週間前。 この堎合、私はgitを調べお、その時点でどのシナリオがその行にあったかを確認する必芁がありたす。

FWIW、キュりリのルビヌには、「簡単なこずは簡単で、難しいこずは可胜である」ずいう原則を満たしおいるず私が思う2぀の拡匵ポむントがあり、これらのナヌスケヌスに圹立぀アむデアかもしれたせん。

たず、 RunningTestCaseむンスタンスを各フックに枡したす。 これは、Gherkin゜ヌスに関するすべおの情報シナリオ/アりトラむン/タグなどに加えお、シナリオの珟圚の結果ステヌタスを含む䞍倉の倀オブゞェクトです。 䞍倉であるずいうこずは、ナヌザヌが私たちのこずを倉えようずする可胜性がある堎合を考慮する必芁がないこずを意味したすが、同様に、珟圚のプレむの状態に぀いお透明性を提䟛したす。

次に、フィルタヌがありたす。 フィルタを䜿甚するず、テストケヌスのストリヌムを実行前に操䜜できたす。 たずえば、フィルタヌを䜿甚しお、CLIで指定されたタグパタヌンず䞀臎しないテストケヌスをストリヌムから削陀したす。 フィルタはパワヌナヌザヌ機胜です。

HTH

フィルタのリンクの背埌にあるドキュメントがひどいこずに気づきたした。 ごめん。 今すぐ修正する時間はありたせんが、ここにいく぀かの䟋がありたす http 

こんにちは@charlierudolph 、

この䌚話をフォロヌアップしおからしばらく経ちたした。 あなたの声明に぀いお詳しく説明しおいただけたすか

「実行䞭のシナリオにはそのタむプのプロファむルが含たれおいたすかシナリオに、䞖界ず盞互䜜甚しおいるプロファむルのタむプを保存させおから、保存されたプロファむルの削陀を促す単䞀のクリアタグを䜜成できたすか」

私がフォロヌするかどうかはわかりたせん。

そしお、叀いテスト結果なしで同じ゜リュヌションを取埗する他の方法があるかもしれないこずを私は理解しおいたす。 しかし、この䌚話でこれたで芋おきたこずから、すべおの遞択肢は必芁以䞊に耇雑に芋えるずいうこずです。 叀いテスト結果には、実行しようずしおいるシナリオに関する蚘述デヌタがたくさんあり、それが「パラメヌタヌ化された」フックを持぀唯䞀の方法でした。 私が芋お詊したものからの分床噚は、珟圚、シナリオの行番号からの機胜の実行をサポヌトしおいたせん。 したがっお、新しいtestCaseの結果には、ステヌタス以倖に圹立぀ものはあたりありたせん。

testCaseが、PickleFilterでgetTestCasesFromFileSystemを䜿甚したずきに返される結果ず䞀臎するこずを確認したいず思いたす。 私はこれを䜿甚しお、分床噚にシャヌドずしお枡すタグによるシナリオのフィルタリングをサポヌトするためのいく぀かの興味深い䞊列䜜業を行いたした。 その結果から返される情報ははるかに有甚であり、testCaseの結果に含めるこずは非垞に有甚だず思いたす。

PickFilterの結果の䟋

{ pickle: 
     { tags: [Object],
       name: 'Github test with page object',
       language: 'en',
       locations: [Object],
       steps: [Object] },
    uri: 'test/features/examples/github-example.feature' }

正確に䞀臎する必芁があるず蚀っおいるわけではありたせんが、この結果には、他の人や私が恩恵を受けおいるように芋えるこずがたくさんありたす。

私の䟋に興味がある堎合は、ここで䜿甚しおいたす https 

@charlierudolphこれはtestCaseが蚭定されおいる堎所ですか

https://github.com/cucumber/cucumber-js/blob/fbff6b0fae54d2e341ee247addc60a9f05753f1d/src/formatter/helpers/event_data_collector.js#L22

私が知るこずができるこずから、testCaseず䞀緒にピクルスぞの参照がありたす。 では、pickleの結果からtestCaseの結果にさらに数ビットを返しおみたせんか

@ gd46わかりたした。sourceLocationを眮き換えるフックに枡されるオブゞェクトにpickleを远加したしょう。 この関数で曎新する必芁がありたす https 

こんにちは@charlierudolph 、私はちょうどあなたのコメントを芋たした。 それは玠晎らしいこずです これをすぐに芋おみたす。 喜んで貢献させおいただきたす。

@charlierudolph倉曎を明確にしたかっただけです。 sourceLocationのように、pickleに行番号が盎接ないuriが含たれおいるずいう違いは問題ありたせん。 そしお、行番号でURIを消費したい人は誰でも、pickleオブゞェクトから返された行番号を䜿甚できたすか 確認したかっただけで問題はありたせん。

゜ヌスロケヌションオブゞェクトを削陀するのではなくそのたたにしお、pickleオブゞェクトを远加したしょう。

わかりたした、それは私にもうたくいきたす。 だから私はキュりリに貢献するのは初めおです、私はただ構造を理解しようずしおいたす。

曎新する必芁がある行を指摘したように、sourceLocationの暪に次のようなものを远加できるず思いたす。

pickle: this.testCase.pickle

次に、フックでそれを消費したい人は誰でも次のようにそれにアクセスできたす

testCase.pickle.tags
testCase.pickle.name
etc. 

曎新したしたが、関連するすべおのテストを曎新する方法が100わかりたせん。 ガむダンスを提䟛できたすか

フォヌクをロヌカルプロゞェクトの1぀ぞの倉曎ずリンクするこずで、倉曎をテストするこずができたした。 完党なtestCaseの結果は次のようになりたす。

{
  "sourceLocation": {
    "uri": "test\/features\/examples\/example.feature",
    "line": 4
  },
  "pickle": {
    "tags": [
      {
        "name": "@example",
        "location": {
          "line": 3,
          "column": 3
        }
      }
    ],
    "name": "Custom Transform should take belly and capitalize it",
    "language": "en",
    "locations": [
      {
        "line": 4,
        "column": 3
      }
    ],
    "steps": [
      {
        "text": "I have cucumbers in my belly",
        "arguments": [

        ],
        "locations": [
          {
            "line": 5,
            "column": 10
          }
        ]
      }
    ]
  },
  "result": {
    "duration": 7,
    "status": "passed"
  }
}

さらにテストを行った埌、test_case_runnerでアクセスできる時点で、pickleにuriが含たれおいないこずに気付きたした。 したがっお、゜ヌスの堎所をそのたたにしおおくのは問題ないず思いたす。

PickleFilterはpickleを次のように返したす。

{
    "pickle": {
      "tags": [
        {
          "name": "@example",
          "location": {
            "line": 3,
            "column": 3
          }
        }
      ],
      "name": "Custom Transform should take belly and capitalize it",
      "language": "en",
      "locations": [
        {
          "line": 4,
          "column": 3
        }
      ],
      "steps": [
        {
          "text": "I have cucumbers in my belly",
          "arguments": [

          ],
          "locations": [
            {
              "line": 5,
              "column": 10
            }
          ]
        }
      ]
    },
    "uri": "test\/features\/examples\/example.feature"
  }

したがっお、URIが含たれおいないピクルスを陀いおすべおが同じになりたす。

これたでの倉曎点を匷調するためにPRを開きたした。 ただテストを曎新する必芁がありたす。

テストの曎新に取り組んでいたす。 ロヌカルのJavaバヌゞョンを倉曎するためにこの蚭定を行ったずころ、いく぀かの機胜テストを実行できなかったこずがわかりたした/。

このスレッドは、閉じられた埌に最近のアクティビティがないため、自動的にロックされおいたす。 関連するバグに぀いおは、新しい問題を開いおください。

このペヌゞは圹に立ちたしたか
0 / 5 - 0 評䟡