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

WebDriver BiDiとは何なのか

Avatar for nus3 nus3
January 30, 2025

WebDriver BiDiとは何なのか

Burikaigi2025発表資料

Avatar for nus3

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の実装が進んでいる