Slide 1

Slide 1 text

WebDriver BiDiと最新の実装状況 2024/12/04 Nihonbashi Test Talk #3 岸 健

Slide 2

Slide 2 text

新橋から来ました 対戦よろしくお願いします 2

Slide 3

Slide 3 text

⾃⼰紹介 岸 健(kishiken) ◆現在の所属 株式会社タイミー エンジニアリング本部 ◆GitHub https://github.com/takeyaqa ◆経歴 メーカー系SIer → 第三者検証   → 消費者向けアプリの⼀⼈⽬QA → 現職 ◆資格 Full Advanced Level Professional:テスト技術者資格Advanced Level 完全上級テスト技術者 ◆コミュニティ活動 テスト⾃動化研究会 (12/7にソフトウェアテスト⾃動化カンファレンスやるよ!) ◆趣味 ←机の整理整頓 3

Slide 4

Slide 4 text

⽬次 1. WebDriver BiDiとは? 2. ブラウザの実装状況 3. ⾃動化ライブラリの実装状況 4

Slide 5

Slide 5 text

WebDriver BiDiとは? 5

Slide 6

Slide 6 text

WebDriver BiDiとは? 従来のWebDriverとChrome DevTools Protcol の ⻑所を組み合わせた ブラウザ⾃動化の新しい標準プロトコル 6

Slide 7

Slide 7 text

WebDriver BiDiとは? 従来のWebDriver (WebDriver “Classic”) は…… ● 通信にHTTPを使⽤ ○ 起点は⾃動化ツール側になり、ブラウザ側から処理を開始することができない ● ⾼レベルのAPIを提供 ○ ⾃動テスト⽤の操作(クリック、⼊⼒)などが中⼼ ● W3Cで標準化されている ○ 各ブラウザで同じ実装となるように仕様が定義されている 7

Slide 8

Slide 8 text

WebDriver BiDiとは? ⼀⽅、Chrome DevTools Protocol (CDP) は…… ● 通信にWebSocketを使⽤ ○ 双⽅向通信なので、ブラウザ側のイベントで処理を開始することができる ● 低レベルのAPIを提供 ○ デバッグ⽤の機能を含む(通信の監視‧位置情報の設定など) ● Chromeの独⾃仕様である ○ 原則chromiumベースのブラウザにしか実装されていない。仕様も独⾃に変わっていく 8

Slide 9

Slide 9 text

WebDriver BiDiとは? WebDriver “Classic”とCDPのいいとこ取りをしようというのがWebDriver BiDi ● 通信にWebSocketを使⽤ ○ 双⽅向通信なので、ブラウザ側のイベントで処理を開始することができる ● 低レベルのAPIを提供 ○ デバッグ⽤の機能を含む(通信の監視‧位置情報の設定など) ● W3Cで標準化されている ○ 各ブラウザで同じ実装となるように仕様が定義されている 9

Slide 10

Slide 10 text

WebDriver BiDiとは? まとめると…… WebDriver “Classic” CDP WebDriver BiDi 通信 HTTP WebSocket WebSocket API 高レベル 低レベル 低レベル 標準化 クロスブラウザ Chromiumのみ クロスブラウザ 10

Slide 11

Slide 11 text

ブラウザの実装状況 11

Slide 12

Slide 12 text

出典:web-platform-tests dashboard https://wpt.fyi/results/webdriver/tests/bidi?run_id=5109476388765696&run_id=5155131622686720&run_id=6231859120046080&run_id=5153975269851136 ブラウザの実装状況 12

Slide 13

Slide 13 text

出典:web-platform-tests dashboard https://wpt.fyi/results/webdriver/tests/bidi?run_id=5109476388765696&run_id=5155131622686720&run_id=6231859120046080&run_id=5153975269851136 ブラウザの実装状況 13 Safariがんばれ……!

Slide 14

Slide 14 text

⾃動化ライブラリの実装状況 14

Slide 15

Slide 15 text

⾃動化ライブラリの実装状況 Puppeteer 2023-12-06 v21.6.0 WebDriver BiDiでの接続をオプションとしてサポート開始 https://github.com/puppeteer/puppeteer/releases/tag/puppeteer-core-v21.6.0 2024-08-07 v23.0.0 FirefoxはデフォルトでWebDriver BiDiでの接続になる(Chromeは引き続きオプション) https://github.com/puppeteer/puppeteer/releases/tag/puppeteer-core-v23.0.0 ただし⼀部のAPIは未実装 (補⾜) 開発⾃体は2022年9⽉ごろからスタートしている https://github.com/puppeteer/puppeteer/pull/8932 15

Slide 16

Slide 16 text

⾃動化ライブラリの実装状況 Playwright 今年の9⽉頃から開発がスタートしている。 現在は内部で実装を試しながらテストをしており、通常利⽤は できない。 現在課題を管理しているissueには未解決の課題が列挙されて いる。 Current limitation blocking Playwright’s WebDriver BiDi adoption https://github.com/microsoft/playwright/issues/32577 16

Slide 17

Slide 17 text

⾃動化ライブラリの実装状況 Selenium CDPのコマンドを置き換える実装が進んでいる。起動 時のオプション設定でWebDriver BiDiが選択されるよ うになる。 https://www.selenium.dev/documentation/webdriver/bidi/ 同時にWebDriver Classicのコマンドも置き換える POCが進んでいる(Java)。 POC: Porting WebDriver classic command to BiDi https://github.com/SeleniumHQ/selenium/pull/13190 現在これらはSelenium 5をマイルストーンとして開発が進んで いる。 https://github.com/SeleniumHQ/selenium/milestone/16 17

Slide 18

Slide 18 text

まとめ ● WebDriver BiDiとは新しいブラウザ⾃動化の標準化プロ トコルである ● ブラウザの実装は順調に進んでいる(Safari除く) ● ⾃動化ライブラリの実装も順調に進んでいる 18

Slide 19

Slide 19 text

参考⽂献 次世代のブラウザテスト⾃動化プロトコルWebDriver BiDi https://zenn.dev/togami2864/articles/65af759b4a34f6 WebDriver BiDi Specification (Editor’s Draft) https://w3c.github.io/webdriver-bidi/ A look book in time: the evolution of test automation https://developer.chrome.com/blog/test-automation-evolution WebDriver BiDi - The future of cross-browser automation https://developer.chrome.com/blog/webdriver-bidi WebDriver BiDi: 2023 status update https://developer.chrome.com/blog/webdriver-bidi-2023 Puppeteer Support for the Cross-Browser WebDriver BiDi Standard https://hacks.mozilla.org/2023/12/puppeteer-webdriver-bidi/ 19

Slide 20

Slide 20 text

ご清聴ありがとうございました! 20