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