Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
WebDriver BiDi 2025年のふりかえり
Search
nus3
January 08, 2026
Technology
1
52
WebDriver BiDi 2025年のふりかえり
nus3
January 08, 2026
Tweet
Share
More Decks by nus3
See All by nus3
Playwrightはどのようにクロスブラウザをサポートしているのか
yotahada3
8
2.7k
DenoでOpenTelemetryに入門する
yotahada3
2
560
WebDriver BiDiとは何なのか
yotahada3
1
710
コンポーネントテストの手法と その効果を考える
yotahada3
8
1.9k
フロントエンドクイズ大会
yotahada3
0
130
Node.jsのWorker threadsの話
yotahada3
1
1.4k
ワタシとPodcast
yotahada3
2
1.7k
Do you like Storybook?
yotahada3
2
4.5k
10年以上続くプロダクトの フロントエンド刷新プロジェクトのふりかえり
yotahada3
3
870
Other Decks in Technology
See All in Technology
自己管理型チームと個人のセルフマネジメント 〜モチベーション編〜
kakehashi
PRO
5
1k
スクラムを一度諦めたチームにアジャイルコーチが入ってどう変化したか
kyamashiro73
0
120
Oracle Cloud Infrastructure:2025年12月度サービス・アップデート
oracle4engineer
PRO
0
180
Introduction to Bill One Development Engineer
sansan33
PRO
0
340
Next.js 16の新機能 Cache Components について
sutetotanuki
0
210
Sansan Engineering Unit 紹介資料
sansan33
PRO
1
3.6k
TED_modeki_共創ラボ_20251203.pdf
iotcomjpadmin
0
190
Bill One 開発エンジニア 紹介資料
sansan33
PRO
4
17k
AWS re:Inventre:cap ~AmazonNova 2 Omniのワークショップを体験してきた~
nrinetcom
PRO
0
120
チームで安全にClaude Codeを利用するためのプラクティス / team-claude-code-practices
tomoki10
4
1.7k
Introduction to Sansan for Engineers / エンジニア向け会社紹介
sansan33
PRO
5
59k
テストセンター受験、オンライン受験、どっちなんだい?
yama3133
0
200
Featured
See All Featured
Navigating the moral maze — ethical principles for Al-driven product design
skipperchong
1
210
Public Speaking Without Barfing On Your Shoes - THAT 2023
reverentgeek
1
280
Efficient Content Optimization with Google Search Console & Apps Script
katarinadahlin
PRO
0
270
Exploring anti-patterns in Rails
aemeredith
2
220
Bash Introduction
62gerente
615
210k
Noah Learner - AI + Me: how we built a GSC Bulk Export data pipeline
techseoconnect
PRO
0
77
Jess Joyce - The Pitfalls of Following Frameworks
techseoconnect
PRO
1
41
Agile that works and the tools we love
rasmusluckow
331
21k
技術選定の審美眼(2025年版) / Understanding the Spiral of Technologies 2025 edition
twada
PRO
115
100k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
47
7.9k
Design of three-dimensional binary manipulators for pick-and-place task avoiding obstacles (IECON2024)
konakalab
0
330
Abbi's Birthday
coloredviolet
0
4.1k
Transcript
2026/01/09 BuriKaigi 2026 WebDriver BiDi 2025年のふりかえり
nus3(なすさん)
去年もBuriKaigi 参加させてもらいました!
去年話したこと WebDriver BiDiとはそもそも何なのか話しました
あれから1年経ち
WebDriver BiDiは どうなったのか
今日話したいこと WebDriver BiDiおさらい 仕様の更新 ブラウザの実装状況
今日話したいこと WebDriver BiDiおさらい 仕様の更新 ブラウザの実装状況
そもそもWebDriverとは WebDriver Bidiおさらい https://www.w3.org/TR/webdriver1/ 別プロセスからブラウザ操作するための標準仕様 2018年に勧告(Recommendation) クライアントとDriver間は でやり取り HTTP
WebDriver BiDiとは WebDriverを拡張したブラウザ操作のための 双方向プロトコル Bidirectional WebDriver Protocol クライアントとDriver間は を介した 双方向通信
Browser Testing and Tools Working Groupで仕様策定 が進められる consoleへの直接のアクセスや ネットワークのインターセプトが可能 WebSocket WebDriver Bidiおさらい
WebDriver Bidiおさらい https://people.igalia.com/lmoura/wkcm-2024/webdriver-bidi-webkit.html#/2/2 https://people.igalia.com/lmoura/wkcm-2024/webdriver-bidi-webkit.html#/3/2
WebDriver Bidiおさらい https://people.igalia.com/lmoura/wkcm-2024/webdriver-bidi-webkit.html#/2/2 https://people.igalia.com/lmoura/wkcm-2024/webdriver-bidi-webkit.html#/3/2 WebSocketによる双方向通信で リアルタイムでブラウザのイベントを 受け取れるように WebDriver Bidiおさらい
それ以外にも WebDriver Bidiおさらい
WebDriver BiDiで拡張されたモジュール WebDriver Bidiおさらい network ブラウザで発生するリクエストとレスポンスへの介入 script Window作成時に実行できるPreload Script 指定した関数の実行
log ブラウザで発生するログ(console.logやエラーなど)を リアルタイムで取得 storage, input, webExtension, emulationなどなど
WebDriver BiDiのステータス 2024年11月にWorking Draftで公開 去年のBuriKaigi(2025年2月)でEditor’s Draftと紹介 してたが、実はWorking Draftだった WebDriver Bidiおさらい
https://www.w3.org/standards/history/webdriver-bidi/
WebDriver BiDiのステータス WebDriver Bidiおさらい https://www.w3.org/standards/types/#x1-summary Web標準化のプロセスに 入ったが まだまだ策定中の状態
WebDriver BiDiの現状って? Working Draftってことは、仕様も更新されてるの? 仕様の策定に合わせて、ブラウザの実装状況って どうなっとる? WebDriver Bidiおさらい
ということで2025年に 仕様、ブラウザに どんな変化があったか 追ってみよう
今日話したいこと WebDriver BiDiとは 仕様の更新 ブラウザの実装状況
仕様の更新を見る前に 仕様の更新
WebDriver BiDiの仕様について Commands クライアントからブラウザへのリクエスト Events ブラウザからクライアントへ送信される通知 Modules 関連するcommandsとeventsをまとめた機能単位 仕様の更新
Modules Claudeさんに作ってもらった、Modulesのざっくり図 仕様の更新
Commands 仕様の更新 クライアントからブラウザへリクエストされる非同期操作 https://www.w3.org/TR/webdriver-bidi/#protocol-definition 例:
Events 仕様の更新 ブラウザからクライアントへ送信される非同期通知 https://www.w3.org/TR/webdriver-bidi/#protocol-definition 例:
さて本題 2025年、仕様には どんな更新があったか 仕様の更新
W3Cのリポジトリを見てみる 仕様の更新 https://github.com/w3c/webdriver-bidi/pulls?page=1&q=is%3Apr+is%3Amerged+merged%3A2025-01-01..2025-12-31 110件のプルリクがマージ
余談 仕様の更新 ClaudeさんにChrome DevTool MCP使って、プルリクをまとめてもらった
2025年に追加されたもの 仕様の更新 ブラウザAPIをエミュレートする 位置情報、userAgent、JSの有効/無効などを オーバーライド emulationモジュールとして最初に追加されたプルリク ユーザーからのよくある要望として geolocationをシミュレートしたいというissueから emulation.setGeolocationOverrideコマンドが 追加された
https://github.com/w3c/webdriver-bidi/pull/888 emulationモジュールが追加
2025年に追加されたもの 仕様の更新 ダウンロード時の動作を制御するコマンド 指定したフォルダかdefaultか ダウンロードできないようにするかを選択できる PuppeteerとCDPにはあった機能 browser.setDownloadBehaviorコマンドの追加 https://github.com/w3c/webdriver-bidi/pull/970
2025年に追加されたもの 仕様の更新 ナビゲーションによってドキュメントが ロードされた時に発火するイベント Playwrightからのリクエスト browsingContext.navigationCommittedイベントの追加 https://github.com/w3c/webdriver-bidi/pull/855
従来のWebDriverにはなく CDPや他ツールにある機能や 要望がある機能が 仕様に追加されていた 仕様の更新
続いて ブラウザの実装状況を 追いかける
今日話したいこと WebDriver BiDiとは 仕様の更新 ブラウザの実装状況
web-platform-testsから 各ブラウザの現状を知る ブラウザの実装状況
web-platform-tests(wpt)とは Webプラットフォームにおけるテストケースのまとまり WHATWGやW3Cで策定された仕様をカバー web-platform-testsにあるテストケースの結果を wtp.fyiでダッシュボードとして公開 Chrome, Edge, Firefox, Safariなどを対象に定期的に テストを実行
ブラウザの実装状況
wptのダッシュボード https://wpt.fyi/results テスト結果がわかるダッシュボード ブラウザの実装状況
wpt その他 ブラウザの実装状況 https://wpt.fyi/runs https://wpt.fyi/interop-2025 定期的にテストが実行 Interopの結果とかも見れる
wptのテストの種類 wptのテストにはいくつかのアプローチがある ブラウザの実装状況 https://web-platform-tests.org/test-suite-design.html#test-types Rendering testharness.js JSが期待通りに動作するか wdspec WebDriver系のテスト manual
wpt: wdspec ブラウザの実装状況 https://web-platform-tests.org/writing-tests/wdspec.html WebDriver、WebDriver BiDiを対象にしたテスト Pythonとpytestを採用 wptリポジトリ内にWebDriverクライアント(tools/webdriver)がある このクライアントがBiDiにも対応
wptにあるWebDriver BiDiの テストケースを実際にみてみよう ブラウザの実装状況
WebDriver BiDiのテストケース ブラウザの実装状況 wptリポジトリのwebdriver/tests/bidi にBiDi用のテストケースがある でディレクトリが作られている webdriver/tests/bidi/{MODULE}/{METHOD} https://github.com/web-platform-tests/wpt/tree/master/webdriver/tests/bidi
WebDriver BiDiのテストケース BiDiでは機能のまとまりがModule、その中に関連するCommandsとEventsがある ブラウザの実装状況
WebDriver BiDiのテストケース ブラウザの実装状況 script.evaluate コマンドの場合 指定された実行環境で、指定したスクリプトを実行するコマンド webdriver/tests/bidi/script/evaluate にテストケースがある https://github.com/web-platform-tests/wpt/blob/master/webdriver/tests/bidi/script/evaluate/evaluate.py pythonやpytestがわからなくても
どんなテストしてるか 大体わかる
WebDriver BiDiの wptのテスト結果や如何に ブラウザの実装状況
WebDriver BiDiのテスト結果 ブラウザの実装状況 https://wpt.fyi/results/webdriver/tests/bidi
WebDriver BiDiのテスト結果 ブラウザの実装状況 https://wpt.fyi/results/webdriver/tests/bidi Chrome、Firefoxでは多くのテストケースにパスしてる Safariでは、テストケースがほとんどパスしていない
ということで 各ブラウザの事情を 追ってみる ブラウザの実装状況
Firefox fxdx.devでWebDriver Newsletterを定期的に公開 WebDriver NewsletterからBiDiのアップデート情報を キャッチアップできる ブラウザの実装状況 https://fxdx.dev/
Firefox 2024年に追加されたwebExtensionモジュールのコマンドに対応 2025年に追加されたemulationモジュールのコマンドである emulation.setGeolocationOverrideの対応 2025年に追加されたbrowsingContext.navigationCommittedイベントの対応 https://fxdx.dev/firefox-webdriver-newsletter-137/ https://fxdx.dev/firefox-webdriver-newsletter-139/ https://fxdx.dev/firefox-webdriver-newsletter-140/ ブラウザの実装状況 新しく追加、更新された仕様の実装を進めている印象
Firefox 2024年からChrome Devtools Protocol(CDP)のサポートを廃止することは アナウンスされていた 2025年になってFirefox 141で完全に廃止 Firefoxで CDPを使っているツールはWebDriver BiDiへの移行を強く推奨
ブラウザの実装状況 FirefoxでのChrome Devtools Protocol(CDP)サポートを 完全に廃止 https://fxdx.dev/deprecating-cdp-support-in-firefox-embracing-the-future-with-webdriver-bidi/ Firefoxでは今後も積極的にBiDi対応をしていきそう
FirefoxのCDPサポートについて ちょっと寄り道 ブラウザの実装状況 そして、去年のBurikaigiでした内容と被る話
ブラウザテストの自動化のこれまで ブラウザの実装状況 https://developer.chrome.com/blog/test-automation-evolution 外部プロセスからブラウザ操作するにはWebDriverとCDPの選択肢があった CDPはChrome DevToolsとデバッグ用に設計 がPuppeteerはCDPを採用 CDPはデバッグに対応するため、WebDriverよりも低レベルな制御をサポート
FirefoxのCDPサポートについて ブラウザの実装状況 2019年、FirefoxでPuppeteerの試験的なサポート この時に、MozillaはFirefoxにCDPのサブセットを実装 し、これまで運用してきた
FirefoxのCDPサポートについて ブラウザの実装状況 当時の議論をしっかりとは追えてないのですが FirefoxでのCDPサポートにChromeチームもMozillaも課題を感じてた Chrome Devtoolsの要件に依存する CDPは標準仕様ではないので、ChromeチームとMozillaで都度コミュニ ケーションが必要 これがWebDriver BiDiができるきっかけ
ということが記事には記載されてる https://developer.chrome.com/blog/firefox-support-in-puppeteer-with-webdriver-bidi
寄り道から戻って Chromeへ ブラウザの実装状況
Chrome そもそもChromiumではBiDiとCDP間を変換する JSレイヤーがある ブラウザの実装状況 https://docs.google.com/document/d/1VfQ9tv0wPSnb5TI-MOobjoQ5CXLnJJx9F_PxOMQc8kY/edit?tab=t.0 https://github.com/GoogleChromeLabs/chromium-bidi?tab=readme-ov-file#how-does-it-work
Chrome ChromiumでのBiDi実装はchromium-bidiリポジトリに ある ブラウザの実装状況 https://github.com/GoogleChromeLabs/chromium-bidi
Chrome ブラウザの実装状況 2024年に追加されたwebExtensionモジュールのコマンドに対応 2025年に追加されたemulationモジュールのコマンドである emulation.setGeolocationOverrideの対応 2025年に追加されたbrowsingContext.navigationCommittedの対応 https://github.com/GoogleChromeLabs/chromium-bidi/pull/3012 https://github.com/GoogleChromeLabs/chromium-bidi/pull/3311 https://github.com/GoogleChromeLabs/chromium-bidi/pull/3057 Firefox同様、新しく追加、更新された仕様の実装を
進めている印象
Chrome 例えばemulation.setGeolocationOverrideの場合 CDPに全く同じコマンド(methods)がある コマンドの引数も一緒 CDPにも同様の機能がある場合、新しい仕様への対応コストは低そう? ブラウザの実装状況 https://www.w3.org/TR/webdriver-bidi/#command-emulation-setGeolocationOverride https://chromedevtools.github.io/devtools-protocol/tot/Emulation/#method-setGeolocationOverride
最後に気になる Safari ブラウザの実装状況
wptを見てみると ブラウザの実装状況 現状、Safariでは1つしかWebDriver BiDiのテストケースは 成功していない... https://wpt.fyi/results/webdriver/tests/bidi
Safariではそう、ただ、WebKitでは ブラウザの実装状況 何も対応してないわけではなさそう WebKitのリポジトリにはBiDi関連のプルリクがマージされてる https://github.com/WebKit/WebKit/pulls?page=2&q=is%3Apr+is%3Amerged+WebDriver+Bidi+in%3Atitle
WebKit ブラウザの実装状況 Selenium Conference 2025でIgaliaのLauroさんのセッションで WebKitでのWebDriver BiDiの実装状況に言及 https://www.slideshare.net/slideshow/advancing-webdriver-bidi-support-in-webkit/281229125#1
このセッションの内容 からWebKitでの実装状況を 見てみる ブラウザの実装状況
WebKit WebKitはクロスプラットフォームに対応した OSSのレンダリングエンジン プラットフォームやOS固有の処理に対応したportがある WebKit公式のportが以下 ブラウザの実装状況 https://docs.webkit.org/Ports/Introduction.html
WebKit Igaliaは以下二つのLinux向けのPortをメンテンナンス している WebKitGTK GNOMEと呼ばれるGUIのデスクトップ環境で採用 WPE WebKit: 組み込みデバイス向け IgaliaのチームがWebKitGTK/WPE WebKitを対象に
2024年からWebDriver BiDiの実装を開始 ブラウザの実装状況
WebKit wptを見てもWebKitGTKであればパスしている テストケースも増えている ブラウザの実装状況 https://wpt.fyi/results/webdriver/tests/bidi?label=master&label=experimental&product=safari&product=webkitgtk&aligned
WebKit Safariはというと... 10月に行われたWebKit Contributors Meetingの議事録が slackに残っていた safaridriverでのBiDiがまだ利用できない safaridriverがSafariと通信するために独自の server/networkライブラリを使っていることに起因 ブラウザの実装状況
まとめ
2025年のふりかえり emulationという新しいモジュールが仕様に追加 新しいコマンドやイベントも仕様に追加 Chrome、Firefoxでは追加、更新があった仕様の 実装が進む IgaliaによってWebKitでもBiDiの実装が開始 (2024年から) 現時点ではSafariではまだBiDiが利用できない
2026年の予想 Roadmapに記載されているE2Eシナリオの大部分の仕様は詰められてそう https://github.com/w3c/webdriver-bidi/blob/main/roadmap.md emulationモジュールはこのシナリオには記載されていない 今後も需要がありそうなシナリオをカバーする仕様が追加されそう? 2026年中には、完全ではなくても部分的にSafariでBiDiを 試せるようになるのでは? Special Thanks togami2864さん
(WebKitの動向教えてくれて、ありがとうございました)
力尽きた話 ツールの対応状況 CypressでFirefoxを操作する時、デフォルトでBiDiを使用 Puppeteer、Selenium、WebDriverIO、CypressでBiDi試してみる PlaywrightのBiDi対応が表に出ない理由 BiDiの仕様を読んで面白そうな話(2025年関係ないけど) Sandboxed Script Execution script.evaluateコマンドなどで、sandbox引数を指定すると、
sandbox用のRealmでスクリプトが実行できる?