WebDriver BiDi - クロスブラウザ自動化の未来

前回の記事では、既存の自動化プロトコル(WebDriver の「従来版」と Chrome DevTools プロトコル(CDP))と、それぞれの利点と制約について説明しました。

ブラウザ自動化の未来、WebDriver BiDi をご紹介します。これは現在開発中の新しい標準ブラウザ自動化プロトコルで、WebDriver の「従来版」と CDP の両方の長所を組み合わせることを目的としています。WebDriver BiDi は、双方向通信を約束し、デフォルトで高速で、低レベルの制御が組み込まれています。

WebDriver BiDi
WebDriver クラシック Chrome DevTools Protocol(CDP)
クロスブラウザ サポートの優位性 高速な双方向メッセージ
W3C 標準 低レベルの制御を提供
テスト用に構築

WebDriver BiDi のビジョンは、お気に入りのツールを使用してテストを作成したり、任意のブラウザまたはドライバでテストを自動化したりすることで、柔軟性を最大限に高めることです。

WebDriver BiDi のビジョン。
WebDriver BiDi のビジョン

標準化

WebDriver BiDi ワーキング グループは、さまざまなブラウザ ベンダー、オープンソースのブラウザ自動化プロジェクト、ブラウザ自動化ソリューションを提供する企業で構成されています。このコラボレーションにより、ブラウザの自動化の未来は明るいと期待されます。

WebDriver BiDi ワーキング グループ
WebDriver BiDi ワーキング グループ

作業のほとんどは こちらの GitHub リポジトリで行われています。すべての主要なブラウザ ベンダーが参加する月次ミーティングでは、実際の進捗状況の報告や、議論の余地のある不明な詳細について話し合っています。企業間のワーキング グループは、意思決定がすべての関係者と整合するようにします。

新しいプロトコルを策定して実装することは、簡単なことではありません。そのためには、さまざまなベンダーが連携して協力する必要があります。このプロセスには以下の操作が含まれます。

  • 仕様: 提案に関するフィードバックを集めるためのリクエスト フォー コメント(RFC)プロセス。
  • 検証: プラットフォーム間で実行可能な一連のテスト。すべての実装の信頼できる情報源として機能します。
  • 実装: ブラウザは仕様に従ってプロトコルを実装し、検証テストに合格します。

課題

このセクションでは、WebDriver BiDi の実装の課題について詳しく説明します。WebDriver BiDi は、互換性、ユーザビリティ、実装可能性のバランスをとることを目的としています。

CDP クローンの枠を超えて: クロスブラウザの互換性を重視

Chrome と DevTools 固有の要素を含む CDP は、WebDriver BiDi 仕様で直接複製することはできません。CDP をそのまま実装することは他のブラウザでは不可能です。そのため、実装方法を記述するだけの仕様書は意味がありません。

低レイテンシの確保

WebDriver BiDi は、パフォーマンスを犠牲にすることなく高いレイテンシを処理するように設計する必要があります。CDP では、クライアントとサーバーがほとんどの場合同じ物理マシンで実行されるため、レイテンシは低くなりますが、WebDriver BiDi ではそうではありません。そのため、WebDriver BiDi では、クライアントとサーバー間で必要なラウンドトリップの数を最小限に抑える必要があります。

左右反転でのエルゴノミクスを優先する

デベロッパーが WebDriver BiDi クライアントをゼロから構築することは想定されていませんが、プロトコルを過度に複雑にしないようにすることが重要です。複雑すぎる BiDi は、実装が困難なだけでなく、扱いづらく、採用と使用を妨げます。

左右反転の実装可能性を確保する

WebDriver BiDi は、さまざまなブラウザの制限を考慮して、現実的に実装できるものでなければなりません。たとえば、BiDi によってクライアントに公開されたすべての JavaScript オブジェクトを保持すると、メモリリークが発生する可能性があります。一方、何も保持しないと、ページの JavaScript のデバッグや操作が妨げられます。パフォーマンスを損なうことなく、効果的なブラウザ自動化を実現するためのバランスを取ることが重要です。

課題の克服

このセクションでは、WebDriver BiDi の実装に関する課題に対処するために使用される戦略について説明します。

迅速なプロトタイピング

実装の課題に対処することは、BiDi の成功にとって重要です。仕様とテストの進捗を加速させるため、NodeJS を使用した迅速なプロトタイピング アプローチを採用しました。これにより、さまざまなソリューションをテストできるだけでなく、ウェブ プラットフォーム テストの開発も容易になります。

パフォーマンスを考慮した設計

この設計上の決定は、WebDriver BiDi でレイテンシが高くなる場合があるため、パフォーマンスに基づいています。たとえば、ブラウザからオブジェクト ID と値を取得する場合、WebDriver BiDi では 1 回のラウンドトリップのみが必要ですが、CDP では 2 回必要です。これは、WebDriver BiDi では ID と値の両方を 1 つのレスポンスで返すことができるのに対し(結果は JSON シリアル化可能である必要はありません)、CDP では別々に返す必要があるためです。

ウェブ プラットフォーム テスト(WPT)に重点を置く

ウェブ プラットフォーム テストは、BiDi の動作において重要な役割を果たします。現在、WebDriver「クラシック」と WebDriver BiDi を対象としている WPT は、すべての実装の信頼できるリファレンスとして機能します。これらのテストは、さまざまな実装で実行され、合格するように設計されています。これにより、WebDriver BiDi の成功に不可欠な、クロスブラウザ プロトコルの一貫した実行が保証されます。ダッシュボードで最新の WPT の結果を確認する。

計画と現在の進捗状況

プロジェクトの方向性については、WebDriver BiDi ロードマップをご覧ください。ロードマップは現在も開発中であり、絶えず進化しています。

ブラウザごとの実装状況については、最新の ウェブ プラットフォーム テストを参照してください。これは信頼できる情報源です。

プロジェクトのマイルストーンを確認して、進捗状況をモニタリングします。

2023 年の成果を確認し、最新の開発状況をご確認ください。

WebDriver BiDi のサポート: ご協力いただける方法

WebDriver BiDi によるブラウザ自動化の将来に期待していますか?支援を示す方法は次のとおりです。

  • 早期テスターと早期導入者として、WebDriver BiDi の未来を形作ってください。
  • ぜひお友だちにご紹介ください。ハッシュタグ #WebDriverBiDi を使用して、プロジェクトをソーシャル メディアで共有します。
  • サポートを依頼する。機能リクエストを送信するか、お気に入りのツールで WebDriverBiDi の導入計画を確認してください。
  • RFC に参加して、API に関するフィードバックを送信します。

よくある質問

WebDriver BiDi は Chrome DevTools Protocol(CDP)に置き換えられますか?

いいえ。Chromium ベースのブラウザでは、デバッグ目的で引き続き CDP が使用されますが、WebDriver BiDi は、より人間工学的な API でテストのニーズに対応するための新しい仕様です。

Puppeteer は CDP を使用しているため、Puppeteer は非推奨になるのでしょうか?

いいえ。ただし、WebDriver BiDi により、Puppeteer をクロスブラウザ自動化ツールにすることができます。

公開ロードマップはありますか?

はい。GitHub のロードマップをご覧ください。