ランナー
WebdriverIOのランナーは、テストランナーを使用する際にテストがどこでどのように実行されるかを調整します。WebdriverIOは現在、ローカルランナーとブラウザランナーという2つの異なるタイプのランナーをサポートしています。
ローカルランナー
ローカルランナーは、フレームワーク(例:Mocha、JasmineまたはCucumber)をワーカープロセス内で起動し、Node.js環境内ですべてのテストファイルを実行します。各テストファイルは、機能ごとに別々のワーカープロセスで実行され、最大の並行性を可能にします。各ワーカープロセスは単一のブラウザインスタンスを使用し、そのため独自のブラウザセッションを実行して最大の分離を確保します。
すべてのテストが独自の分離されたプロセスで実行されるため、テストファイル間でデータを共有することはできません。これを回避するには2つの方法があります:
@wdio/shared-store-service
を使用してすべてのワーカー間でデータを共有する- specファイルをグループ化する(詳細はテストスイートの整理を参照)
wdio.conf.js
で他に何も定義されていない場合、ローカルランナーはWebdriverIOのデフォルトランナーです。
インストール
ローカルランナーを使用するには、次のようにインストールできます:
npm install --save-dev @wdio/local-runner
セットアップ
ローカルランナーはWebdriverIOのデフォルトランナーであるため、wdio.conf.js
内で定義する必要はありません。明示的に設定したい場合は、次のように定義できます:
// wdio.conf.js
export const {
// ...
runner: 'local',
// ...
}
ブラウザランナー
ローカルランナーとは対照的に、ブラウザランナーは ブラウザ内でフレームワークを初期化して実行します。これにより、多くの他のテストフレームワークのようにJSDOMではなく、実際のブラウザでユニットテストやコンポーネントテストを実行できます。
JSDOMはテスト目的で広く使用されていますが、結局は実際のブラウザではなく、モバイル環境もエミュレートできません。このランナーを使用することで、WebdriverIOはブラウザでテストを簡単に実行し、WebDriverコマンドを使用してページにレンダリングされた要素と対話することができます。
以下はJSDOMとWebdriverIOブラウザランナーでのテスト実行の比較です:
JSDOM | WebdriverIO ブラウザランナー | |
---|---|---|
1. | Web標準、特にWHATWG DOMとHTML標準の再実装を使用してNode.js内でテストを実行 | 実際のブラウザでテストを実行し、ユーザーが使用する環境でコードを実行 |
2. | コンポーネントとの対話はJavaScriptでのみ模倣可能 | WebdriverIO APIを使用してWebDriverプロトコルを介して要素と対話可能 |
3. | Canvas対応には追加の依存関係が必要で制限があります | 実際のCanvas APIにアクセス可能 |
4. | JSDOMには注意点とサポートさ れていないWeb APIがある | テストは実際のブラウザで実行されるため、すべてのWeb APIがサポートされている |
5. | クロスブラウザのエラー検出が不可能 | モバイルブラウザを含むすべてのブラウザをサポート |
6. | 要素の疑似状態をテスト__できない__ | :hover や:active などの疑似状態をサポート |
このランナーはViteを使用してテストコードをコンパイルし、ブラウザにロードします。以下のコンポーネントフレームワーク用のプリセットが用意されています:
- React
- Preact
- Vue.js
- Svelte
- SolidJS
- Stencil
各テストファイル/テストファイルグループは単一のページ内で実行され、テスト間でページがリロードされ、テスト間の分離が保証されます。
インストール
ブラウザランナーを使用するには、次のようにインストールできます:
npm install --save-dev @wdio/browser-runner