Upgrade to Pro — share decks privately, control downloads, hide ads and more …

WebDriver BiDiとは何なのか

nus3
January 30, 2025

WebDriver BiDiとは何なのか

Burikaigi2025発表資料

nus3

January 30, 2025
Tweet

More Decks by nus3

Other Decks in Programming

Transcript

  1. WebDriver CDP " クロスブラウザのサポート @ Chromiumベースのブラウザ
 (Firefoxで一部サポート) " 標準仕様 @

    標準仕様ではない @ ツールとブラウザ間はHTTPで
 やりとり " ツールとブラウザ間はWebSocoketで やりとり " consoleのキャプチャやネットワーク のinterceptなどが可能 @ 発生するイベントをリアルタイムに
 受け取るのが困‘ @ ポーリングなどの対応が必要 " 発生するイベントをリアルタイムに
 受け取れÇ " ブラウザテストの自動化の観点
 からも信頼性、安定性がある
  2. FirefoxでのCDPの対応について D As the name suggests, the CDP is used

    by Chrome's DevTools and needs to change with DevTools requirements# D The CDP is not standardized in a shared, public specification and maintaining it in Firefox required steady communication and effort# D Since Firefox only implemented a subset of CDP, Puppeteer could never guarantee its full API to work with Firefox, creating confusion for users. https://developer.chrome.com/blog/firefox-support-in-puppeteer-with-webdriver-bidi D ChromeのDevToolsの要件に応じた対応が必“ D 公開されている標準仕様ではないので、都度コミュニケーションが必要だっ¤ D FirefoxではCDPのサブセットのみ実装していたので、
 PuppeteerはFirefoxで完全なAPIが動作することが保証できず、
 ユーザーに混乱が生じた
  3. WebDriver BiDiとは d Bidirectional WebDriver ProtocoY d WebDriverを基盤として拡張されたブラウザ自動化の
 ための双方向プロトコV d

    Browser Testing and Tools Working Groupで仕様策定 が進められ7 d Editor’s Draftの仕G d ツールとブラウザ間はWebSocketを介した双方向通' d consoleのキャプチャやネットワークのインターセプト といったシナリオをサポート
  4. ブラウザ自動化ツールの対応状況 r WebdriverIO v9でBiDiのサポーV r Seleniu) r Puppeteerのv23からFirefox上ではBiDiが使われるようp r PlaywrightではBiDiサポートの検証が進んでい$

    r https://webdriver.io/blog/2024/08/15/webdriverio-v9-releasef r https://www.selenium.dev/documentation/webdriver/bidif r https://hacks.mozilla.org/2024/08/puppeteer-support-for-firefoxf r https://github.com/microsoft/playwright/issues/3257ˆ r https://docs.google.com/document/ d/1DWUYgM3lglTuvDueX2ggSE6a68pycJtjK2QJPL-resc/edit?tab=t.0
  5. このほかにも 6 eventのサブスクライD 6 任意のJavaScriptの実) 6 preload scriptの設" 6 リクエストのインターセプ

    6 ストレージ(cookie)の操& 6 ログ(console)の監視 のようなモジュールが定義されている
  6. まとめ b WebDriver BiDiとはWebDriverを基盤として拡張された
 双方向プロトコr b 従来のWebDriverやCDPの辛みを解消したもy b 標準仕様としてクロスブラウザに対 b

    WebSocketによる双方向通信で安定性向˜ b DOMの監視や、コンソールのキャプチャ、
 ネットワークのインターセプトが可能C b 仕様策定に合わせて、ブラウザやツールで
 BiDiの実装が進んでいる