私はキュウリとルビーに不慣れです。私は要件とテストケースの作成に慣れているビジネスアナリストであり、CucumberとWatirについて読んだことがありますが、実際に機能するために必要なものを取得するのに問題があります。
IE、Firefox、Chromeで、さまざまなタイプのユーザーとして一連のWebページをテストします。私は機能を記述してタグ付けし、cucumber.ymlでプロファイルを作成しているので、-pを指定してcucumberを実行し、さまざまなユーザータイプに適切なタグ付きテストを実行できます。
Basicユーザー、Reportsユーザー、Editorユーザーなどとして簡単にログインできるように、さまざまなページオブジェクトを作成しています。機能ファイルには、ユーザーのタイプごとにわずかに異なるシナリオと合格/不合格条件があり、stepdefsはそれらのユーザータイプとしてログインするための適切なページオブジェクト。
テストを3回繰り返して、watir-webdriverで適切なブラウザーを開くのではなく、各シナリオでブラウザーを開いたり閉じたりするのではなく、env.rbまたはhooks.rbでグローバルフックを作成してブラウザーを開きたいと思いました。機能が実行される前に一度だけ、そして機能がすべて実行されたら、グローバルフックからのステートメントでそれを閉じます。ここでも、タグ付きシナリオを呼び出すプロファイルを使用して、ユーザータイプごとに実行するテストを選択しています。
私が抱えている問題は、その前のステップであり、ブラウザを開くだけです。watir-webdriverを使用して各ブラウザを開く方法を知っています。
私が望んでいたのは、テストの前にブラウザを開くためにグローバルフックを挿入することでした。したがって、env.rbに、browser = Watir::Browser.new呼び出しを配置します。
私がやりたいのは、IE、Chrome、Firefox用にそれぞれ1つずつ、3つの別々のグローバルフックを用意し、cucumber.ymlのプロファイルから渡された条件に基づいてそれらを呼び出すことですが、それを機能させることができません。それらにタグを付けてみましたが、うまくいきませんでした。グローバルフックにタグを付けることはできませんか?if / then / elseセットアップで試しましたが、それも機能しませんでした。
cucumber.ymlのプロファイルからパラメーターまたはタグを渡して、次のような1つのグローバルフックのみを呼び出すことができるようにしたいと思います。
basicuser_overviewtests_ie: --tags @basic @overview @ie
basicuser_overviewtests_ff: --tags @basic @overview @firefox
Basicuser_newpagetests_ie: --tags @basic @newpage @ie
など...最初の2つのタグはシナリオを参照し、3番目は正しいenv.rbフックを参照します。
または、プロファイルから変数を渡すことができれば、それも機能します。しかし、そこで環境変数をどのように使用できるか理解できませんでした。
私は何かが足りないのですか?これは問題を説明するのに十分な情報ですか?ありがとうございました!
更新:問題の一部は、キュウリが[features]フォルダーと同じレベルにあるときに[support]フォルダーを認識しなかったため、[features]の下にある必要があるようです。私が言ったcuke情報は、機能の内部ではなく、同じレベルで問題ないだろうと言っていました。そうではありません。
これで、ブラウザーの3つのグローバルフックを実行できるようになりましたが、タグ付けは役に立ちません。@ ieのタグが付けられた機能の前にのみ実行するようにタグ付けされていても、@ ieの実行のみにタグ付けされたプロファイルでタグ付けされていても、すべてが一度に実行されます。