セットアップタイプ
WebdriverIOはさまざまな目的で使用できます。WebDriverプロトコルAPIを実装し、ブラウザを自動化された方法で実行できます。このフレームワークは任意の環境でどのような作業にも使用できるように設計されています。サードパーティのフレームワークに依存せず、実行にはNode.jsのみが必要で す。
プロトコルバインディング
WebDriverや他の自動化プロトコルとの基本的な対話のために、WebdriverIOはwebdriver
NPMパッケージに基づいた独自のプロトコルバインディングを使用しています:
- WebDriver
- Chrome DevTools
loading...
loading...
すべてのプロトコルコマンドは、自動化ドライバーからの生のレスポンスを返します。このパッケージは非常に軽量で、プロトコルの使用との対話を簡素化するための自動待機などのスマートロジックは__ありません__。
インスタンスに適用されるプロトコルコマンドは、ドライバーの初期セッションレスポンスに依存します。例えば、レスポンスがモバイルセッションが開始されたことを示している場合、パッケージはすべてのAppiumおよびモバイルJSON Wireプロトコルコマンドをインスタンスのプロトタイプに適用します。
devtools
NPMパッケージをインポートすると、Chrome DevToolsプロトコルを使用して同じコマンドセット(モバイル関連のものを除く)を実行できます。これはwebdriver
パッケージと同じインターフェースを持ちますが、自動化はPuppeteerに基づいて実行されます。
これらのパッケージインターフェースの詳細については、モジュールAPIを参照してください。
スタンドアロンモード
WebDriverプロトコルとの対話を簡素化するために、webdriverio
パッケージはプロトコル上に様々なコマンド(例えばdragAndDrop
コマンド)やスマートセレクタや自動待機などのコア概念を実装しています。上記の例は次のように簡素化できます:
loading...
スタンドアロンモードでWebdriverIOを使用すると、すべてのプロトコルコマンドにアクセ スできますが、ブラウザとの対話をより高いレベルで提供する追加コマンドのスーパーセットも提供します。これにより、新しい自動化ライブラリを作成するために、この自動化ツールを独自の(テスト)プロジェクトに統合することができます。人気のある例にはOxygenやCodeceptJSがあります。また、Webからコンテンツをスクレイピングするための単純なNodeスクリプトを書くこともできます(または実行中のブラウザを必要とする他の何かでも)。
特定のオプションが設定されていない場合、WebdriverIOは常に機能のうちbrowserName
プロパティに一致するブラウザドライバーをダウンロードしてセットアップしようとします。ChromeとFirefoxの場合、マシン上に対応するブラウザが見つからない場合はインストールすることもあります。
webdriverio
パッケージインターフェースの詳細については、モジュールAPIを参照してください。
WDIOテストランナー
しかし、WebdriverIOの主な目的は大規模なエンドツーエンドテストです。そのため、読みやすく保守が容易な信頼性の高いテストスイートを構築するのに役立つテストランナーを実装しました。
テストランナーは、プレーンな自動化ライブラリを使用する際に一般的な多くの問題を解決します。まず 、テスト実行を整理し、テスト仕様を分割して、テストが最大の並行性で実行できるようにします。また、セッション管理も行い、問題のデバッグやテストのエラーを見つけるのに役立つ多くの機能を提供します。
以下は、上記と同じ例をテスト仕様として記述し、WDIOで実行したものです:
loading...
テストランナーは、MochaやJasmine、Cucumberなどの人気のあるテストフレームワークの抽象化です。WDIOテストランナーを使用してテストを実行するには、詳細についてははじめにセクションをご覧ください。
@wdio/cli
テストランナーパッケージインターフェースの詳細については、モジュールAPIを参照してください。