Cucumber-js: require-moduleの下でキュウリプリセットモジュールを許可する

作成日 2021年04月13日  ·  4コメント  ·  ソース: cucumber/cucumber-js

キュウリテストを実行するためのプリセットを設定できる外部モジュールを作成しようとしています。
この外部モジュールには、peerDependencyとして@cucumber/cucumberがあるため、直接インストールされません。 したがって、この依存関係により、プリセットはWorldコンストラクターを設定し、 GivenWhenThenをグローバルスコープに追加できるようになります。よりクリーンなステップ定義。

ローカルファイルにcucumber-js --require ./test-preset.setup.jsとしてリンクしているcucumber-jsオプションフラグがある場合はすべて機能しますが、同じプリセットに外部モジュールに移動してcucumber-js --require-module cucumber-preset-fooとして要求すると、プロセス#1326で提示されたのと同じエラーで終了します。

これらの外部モジュールがsupportCodeRequiredModulesを介して要求された直後に、 supportCodeLibraryBuilder.resetが呼び出されているCLIソースコードで何かを見つけることができます。これにより、データがリセットされると、実行中のキュウリインスタンスとの対話が不可避になる可能性があります。直後の。

https://github.com/cucumber/cucumber-js/blob/e2fd32a4fe411484275307e2a4b59605a8ded165/src/cli/index.ts#L160 -L161

https://github.com/cucumber/cucumber-js/blob/e2fd32a4fe411484275307e2a4b59605a8ded165/src/support_code_library_builder/index.ts#L402 -L417

この設計には特定の理由があるかもしれませんが、モジュールを要求する前にリセットメソッドを呼び出すことによる影響があるかどうかを確認して、これらのポータブルプリセットを利用できるようにしますか? この種の機能は、たとえば、reacte2eなどの特定の開発環境にプリセットを使用したい一部のユーザーに役立つことがわかります。

node: v15.8.0
@cucumber/cucumber: 7.1.0
os: Linux
bug help wanted accepted

全てのコメント4件

こんにちは@zanona

あなたのモジュールは面白そうだ
その問題についてのあなたの調査も

あなたはすでに何が起こっているのか、そしてそれがどのように修正されるのかについて良い考えを持っているので、あなたはそのためのPRを開き、それに関する議論をサポートすることができると思いますか?

うーん、require-moduleの直前にリセットを移動しても問題はありません。 それは、トランスパイラー(typescript / babel)をセットアップする主なユースケースを持っていた過去にrequire-moduleが使用されていたものの産物でした。

素晴らしい人に聞こえます。
私は確かにPRを準備することができます、おそらくそれをバグではなく機能としてスコープすることができるので、カスタムプリセットを作成し、テストランナーがそれを理解できることを確認できるユーザーにスコープされたテストを準備できますか?

あるいは、単にこれらの2つの行を交換して、失敗したテストを監視することもできますか?

どのようにそれについて行きたいですか?

キュウリに関しては、通常の方法でモジュールをロードしようとしたときに予期しないエラーが発生するため、これはバグのままです。これは実際には機能するはずです。

ただし、説明したように、スコープテストを使用してPRを拡張としてスコープすることはできます。実際、このアイデアは気に入っています。これには、その問題を修正するメリットもあります。 どう思いますか?

2つのラインを交換する可能性に関しては、それが最初の良い出発点IMOになる可能性があります:)

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