PuppeteerのFirefox公式対応は、テスト自動化をブラウザ横断へ戻す一歩

Mozilla Hacks記事紹介シリーズのアイキャッチ画像

執筆者:

カテゴリ:

Mozilla Hacksの「Announcing Official Puppeteer Support for Firefox」は、Puppeteerがバージョン23からFirefoxを公式にサポートしたことを紹介する記事です。公開日は2024年8月7日。ブラウザ自動化やE2Eテストを書いている開発者にとって、かなり実務的な意味を持つアップデートです。

これまでPuppeteerはChrome/Chromiumの自動化で広く使われてきました。記事では、起動時に browser: "firefox" を指定するだけでFirefoxを対象にでき、Chromeと同じような開発者体験でテストを実行できるようになったと説明されています。

ポイントはWebDriver BiDi

今回のFirefox対応は、Firefox専用の独自プロトコルをPuppeteerに足した話ではありません。土台になっているのは、W3Cで標準化が進むWebDriver BiDiです。記事では、GeckoとChromiumの両方に実装があるクロスブラウザのプロトコルとして紹介されています。

WebDriver BiDiによって、コンソールログの取得、デバイスエミュレーション、ネットワークインターセプト、ページ読み込み前に動くpreload scriptなど、従来はブラウザ固有のDevToolsプロトコルに寄りがちだった機能を、標準化された形で扱いやすくなります。

従来の自動化が抱えていた二択

記事の技術背景では、従来の選択肢としてW3C WebDriverとブラウザ固有のDevTools系プロトコルが整理されています。WebDriverは横断性がある一方で、HTTPベースのコマンド/レスポンスモデルなので、ログやネットワークイベントのようなリアルタイム性のある処理は扱いにくい面がありました。

一方、Chrome DevTools Protocolのようなブラウザ固有プロトコルは機能が豊富ですが、ブラウザ内部に強く結びつきます。そのため、ツール側はブラウザごとの実装差やバージョン差を追いかける必要があり、クロスブラウザ対応の負担が大きくなります。

参照リンクから見えた流れ

Puppeteer公式ドキュメントでは、PuppeteerはChromeまたはFirefoxをDevTools ProtocolまたはWebDriver BiDi経由で制御する高水準APIとして説明されています。つまり、Firefox対応は一時的な実験ではなく、Puppeteerの通常の利用モデルの中に入ってきています。

また、Chrome Developers側の記事でも、Firefox、Chrome、PuppeteerでWebDriver BiDiがproduction-readyになった流れとして扱われています。MozillaだけでなくChrome側の記事でも同じ方向性が説明されている点は重要です。

Mozilla Hacksの過去記事であるクロスブラウザテストの記事Part 1Part 2を読むと、WebDriverの横断性とCDP系ツールの機能性の間で、開発者が長く揺れていたことが分かります。今回の記事は、その流れの続きとして読むとかなり納得しやすくなります。

さらに、Firefox Developer Experienceの記事では、Firefoxの実験的CDPサポートを廃止し、WebDriver BiDiへ移行する方針が説明されています。独自互換を追いかけるのではなく、標準化された双方向プロトコルへ寄せる判断です。

気づき

この発表の面白さは、単に「PuppeteerでFirefoxも動くようになった」ことではなく、「高機能な自動化」と「ブラウザ横断性」を両立させる道筋が見えてきたことにあります。これまでのテスト自動化は、標準のWebDriverを使えば横断性はあるが機能が足りず、CDPを使えば便利だがブラウザ依存が強い、という二択になりがちでした。

WebDriver BiDiは、その二択を崩すための共通レイヤーです。ツール作者はブラウザごとの独自プロトコルを追い続ける負担を減らせますし、アプリ開発者は同じテストコードを複数ブラウザで動かしやすくなります。Web互換性を高める仕事は、ブラウザ機能そのものだけでなく、テストツールの標準化にも現れるのだと感じました。

読んでおきたい人

  • PuppeteerでE2Eテストやスクレイピング補助をしている人
  • ChromeだけでなくFirefoxでも自動テストを回したい人
  • WebDriver、CDP、WebDriver BiDiの違いを整理したい人
  • ブラウザ横断テストの運用負荷を下げたい開発チーム

参照記事

コメント

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です