問題タブ [cucumberjs]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
javascript - Reloading cucumber.js steps with gulp-watch and gulp-develop-server
I'm trying to use the following gulpfile.js in order to watch for changes, restart my server, and re-run my tests (cucumber.js). Changing a cucumber spec, or a file in my application both successfully trigger the process. However, the updated content of the specs is ignored! It's like the spec is cached. How can I ensure the latest specs are executed?
File content:
protractor - 分度器キュウリ: フックで待機する方法 (後)
これで問題が解決するかどうかはわかりませんが、最も可能性が高いようです。
現在のコードは、after フックで、browser.get を介して角度のあるページから角度のないページにリダイレクトします。
残念ながら、次のシナリオに進む前にリダイレクトが発生し、ページで角度を見つけようとし、エラーを出力して意図したとおりに続行する前にそれをブロックします。
私の考えは、browser.driver.getを使用して単にURLの変更を待つことでしたが、フックでbrowser.waitを使用する方法がわかりません。
ありがとうございました
selenium - cucumber でのシナリオのグループ化
シナリオをグループ化し、テスト ランナーを使用して実行するにはどうすればよいでしょうか? 私はキュウリのセレンを使用しており、シナリオをグループ化する必要があります。
chai - chai-as-promised でカウント値を確認するにはどうすればよいですか?
アサーション ライブラリとしてキュウリと chai-as-promised を使用します。カウント値を確認する正しい方法は何ですか。equal を使用していますが、文字列を整数に変換した後にのみ機能します。整数値を直接アサートする方法はありますか?
javascript - cucumber-js と Chai 指定されたセレクターを持つ要素が DOM に存在するかどうかを期待する方法
私はcucumberjsに問題があります。指定されたセレクターを持つ要素が DOM に表示されるようにする方法が見つかりません。Chaiでcucumberjsを使用しています。 https://github.com/cucumber/cucumber-js isPresent は、要素が存在するかどうかに関係なく、オブジェクトを返します。問題は、要素がDOMに存在するかどうかを確認する方法です。
質問を編集して、学んだ教訓を共有します。Nathan Thompson のおかげでドキュメントも読みました。isPresent() は、要素がページに存在するかどうかを解決する promise を返します。
http://angular.github.io/protractor/#/api?view=Protractor.prototype.isElementPresent
コード例は少し誤解を招きます。したがって、特定のセレクターを持つ要素がDOMに存在するかどうかを期待したい場合は、次のようなものを使用する必要があります:
または、約束でチャイを使用します。
しかし、「やがて」という言葉は不快に聞こえます。最終的には確実ではありません。:)
この質問に関する記事は、私の個人的なブログで見ることができます。
ruby-on-rails - 単一ページ Web アプリケーションとそのバックエンドのフルスタック テスト用のテスト データの設定
私の質問の短いバージョン:
Angular シングル ページ Web アプリケーション用に記述された Cucumber テストでは、シナリオの「指定された」セクションで通常実行されるタスク (テスト データの設定、データベース レコードの関連付けの定義、テスト間のクリーンなデータベース状態の確保など) をどのように達成するのですか? ) フルスタックをテストするとき、フロントエンド アプリケーションとそのバックエンドの両方? アプリケーションのソース コードは、フロントエンド アプリケーション用とバックエンド用の 2 つの個別の Git リポジトリに格納されます。バックエンドは、Rails API gem を使用して Ruby で記述されています。このアプリケーションのフルスタックをテストする際の課題は、シングル ページ アプリケーションとして実装されていない従来の Ruby on Rails アプリケーションとは対照的に、実際には 2 つのアプリケーションであるという事実から生じます。
私の質問の完全版:
Web アプリケーション用の一連の Cucumber テストを作成しようとしています。このアプリケーションは、Angular で記述されたフロントエンドの単一ページ アプリケーションと、Rails API を使用して記述されたバックエンド API で構成されています。フロントエンドのソース コードとバックエンドのソース コードはそれぞれ独自の Git リポジトリに存在するため、2 つのコードベースが明確に分離されています。さらに、アプリケーションは MySQL と Elasticsearch を使用します。
以前の Ruby on Rails プロジェクトで Cucumber を使用したことがあります。これらのプロジェクトは、単一ページのアプリケーションとして開発されたものではありません。これらのプロジェクトでは、Ruby オブジェクトを Cucumber ステップ定義のテスト データとして簡単に作成できました。たとえば、シングル ページ アプリケーションではない Rails プロジェクトの次の機能ファイルについて考えてみましょう。
この機能ファイルのステップは、次のステップ定義を使用して実装できます。
シングル ページ アプリケーションとして開発されていない Ruby on Rails プロジェクトでは、テスト ツールを Ruby gem としてプロジェクトに含めることができます。私にとって、これらのツールには次のものが含まれます。
ご覧のとおり、これには、Ruby オブジェクトをテスト データとして設定し、データベース レコードの関連付けを定義するために使用される Factory Girl と、テスト間でクリーンなデータベース状態を確保するために使用される Database Cleaner が含まれます。JavaScript を使用する Cucumber シナリオでは、Selenium WebDriver を含める必要があります。
私のシングルページアプリケーションの場合は状況が異なります。前述のように、アプリケーションは 2 つの別個のコード ベースに分割されます。1 つは Angular フロントエンド シングル ページ アプリケーション用で、もう 1 つは Rails API バックエンド インターフェイス用です。
ただし、私のプロジェクトのようなシングル ページ アプリケーションには、シングル ページ アプリケーションとして構築されていない従来の Rails アプリケーションと同じテスト要件がまだあります。アプリケーションのフルスタックをテストして、フロントエンドとバックエンドの両方の各コンポーネントが期待どおりに連携することを確認する必要があります。テストの前に「与えられた」前提条件を作成する Cucumber ステップを定義する必要があり、テスト間でクリーンなデータベースを確保する必要があります。
このような 2 つのコード ベースを持ち、単一ページ アプリケーションとして実装されたアプリケーションを Cucumber でテストするにはどうすればよいですか? CucumberJS と呼ばれる JavaScript で利用できる Cucumber のバージョンがあります。ただし、CucumberJS を使用して、フィクスチャを作成し、関連付けを記録し、テスト間でクリーンなデータベースを確保する方法がわかりません。Protractor と呼ばれる、Angular で記述された JavaScript をテストするためのツールもあります。このツールが Selenium WebDriver の代わりになると思います。
selenium - ブラウザ スイッチ ハンドル Phantomjs の問題
私はきゅうりで分度器を使用していますが、phantomjs でブラウザーのタブを切り替える必要があるときはいつでも、エラー メッセージが表示されずにハングします。ただし、Chrome ブラウザでも同じ手順で問題なく動作します。何故ですか?私のステップは次のとおりです