調査方式: 通常 LLM (Claude Opus 4.7) + ローカル LLM (DwarfStar4, Apple M4 Max Metal バックエンド) の円卓会議 (役者 5 名: moderator + mobile_specialist + ux_designer + qa_lead + devops_engineer) を 2 周実施し、間に deep-research スキルによる Web 裏取り (107 agent / 315 tool 呼び出し / 一次ソース直接 fetch を含む) を挟んだ。
調査日: 2026-06-08
Playwright (単体) をコアフレームワークとし、BrowserStack を本番・LambdaTest を予備として端末ファームを多重化、Visual 救済は Applitools Eyes、CI は GitHub Actions で並列度 5 固定とするハイブリッド構成を推奨する。
| 項目 | 推奨内容 |
|---|---|
| 基本自動検証フレームワーク | Playwright (単体) |
| 視覚型検証 | Applitools Eyes (Visual AI) |
| 端末ファーム (本番) | BrowserStack Automate Pro ($225/月、年契)、実機 iOS Safari Playwright を活用 |
| 端末ファーム (予備) | LambdaTest Real Device Plus Live ($39/月、年契) ── フォールバック用 |
| CI/CD | GitHub Actions + BrowserStack 並列トンネル |
| CI 並列度 | 5 (固定、BrowserStack Pro のトンネル上限に適合) |
| リトライ回数 | 2 (タイムアウト 60 秒、ネットワーク起因のみ) |
| Visual AI 誤検知率目標 | 1% 未満 (strict mode + 領域マスク) |
| 手動補完頻度 | 週 1 回 (DRM / Canvas / PWA 領域) |
| WebDriver BiDi | 不採用。W3C 勧告化と Playwright stable 統合をトリガーに将来再検討 |
2026 年 6 月時点で BrowserStack が 2025-06-12 に「実機 iOS Safari 上で Playwright を動かす」業界初サービスを launch したことが、本問の結論を決定づけた最大の構造変化である 1 2 3。約 1 ヶ月後 (2025-07-09) に LambdaTest が同等機能で追随した 4。
この変化以前は、Playwright の bundled WebKit (Linux ベースの WebKitGTK / WPE 系) が 実機 iOS Mobile Safari と等価ではないことが長年のギャップだった。WebKit カーネルは共通でも JIT 制御・Touch Events 実装・viewport 挙動・PWA 関連 API が異なるため、bundled WebKit で「通った」テストが実機で fail する事例が頻発していた。
BrowserStack / LambdaTest が実機 iOS Safari 上で Playwright クライアントを bridge する仕組みを提供したことで、このギャップが商用クラウド経由で初めて解消され、Playwright を「全 OS / 全ブラウザ単一 API で操作できるツール」として実質的に採用可能となった 5 6。
| ブラウザ | 対応形態 | 実機 / エミュレータ |
|---|---|---|
| iOS Safari (iPhone / iPad) | BrowserStack / LambdaTest 経由で実機 Safari | 実機 (2025-06-12 から) |
| iPadOS Safari | 同上 | 実機 |
| Android Chrome | Playwright Chromium または BrowserStack 実機 | 両方 |
| Android Samsung Internet | BrowserStack 実機 (browserName: "samsungInternet") |
実機 (一次確認は限定的) |
| Android Firefox | Playwright Firefox または BrowserStack 実機 | 両方 |
| macOS / Windows Safari / Chrome / Edge / Firefox | Playwright 直接、または BrowserStack 並走 | 両方 |
DOM が露出しないため Playwright の locator
(page.locator() / getByRole() 等)
では到達できない。page.evaluate() 経由で Canvas の
getContext('2d').getImageData()
を読めるが、willReadFrequently: true 設定や CORS taint
がない場合に限る。WebGL は gl.readPixels()
で取得可能だが、preserveDrawingBuffer: true
でないとフレームバッファが破棄される。
EME (Encrypted Media Extensions) で保護された領域は、OS / GPU レベルでセキュア出力パスに乗るため:
<video> 要素・MediaSource
の readyState / currentTime /
buffered
は取得可能だが、映像内容そのものはピクセル取得不可これは仕様であり、Playwright や Applitools の限界ではない (一次ソースは EME 仕様および Widevine ライセンス契約に基づくが、deep-research では「公的検証可能な refute」として確証はされず本書では運用上の前提として記載)。
beforeinstallprompt / Add to Home
Screen)beforeinstallprompt イベントは Chromium 系 (Android
Chrome / Edge / Samsung Internet) で発火し、Playwright で
page.evaluate() 内のリスナー登録によって
バナー表示の検出は可能。ただし:
beforeinstallprompt
非対応。「共有 → ホーム画面に追加」の手動操作のみprompt.userChoice の選択) は brogras 側プロンプト UI
のため自動化不可このため、本構成では「バナー表示・関連イベントの発火検出」を自動化し、実機インストール操作はリリース前の手動 UAT で補完する設計とした。
| 領域 | 救済ツール | 設定指針 |
|---|---|---|
| 通常 DOM 操作 UI | Playwright auto-wait + Visual ベースライン | Applitools Eyes matchLevel: content |
| Canvas 領域 | Applitools Eyes + 領域マスク | Canvas 内座標を region で明示、strict mode
適用 |
| DRM 領域 | <video> ステート監視 + 週 1 手動レビュー |
videoElement.currentTime / buffered /
readyState を Playwright で polling |
| PWA インストールフロー | beforeinstallprompt 検出 + 手動 UAT 補完 |
バナー表示までを自動化、実機インストールは手動 |
| タッチ・スワイプ・縦横切替 | Playwright page.tap() /
page.setViewportSize() + デバイス emulation |
devices['iPhone 15 Pro'] 等のプリセットを基本 |
matchLevel 調整)、ignore
領域指定、ベースライン自動更新が成熟。商用 Visual AI のデファクト 7。なお Healenium-Appium は DOM/a11y locator 層の self-healing のみで、Canvas / DRM の視覚救済は対応外 8 (問1 と同じ知見)。
Anthropic 自身が computer use を “experimental — at times cumbersome and error-prone” と明示しており 9、本番 QA の決定論的動作・再現性要求と整合しない。研究用途・PoC 用途には有用だが、CI に組み込むのは時期尚早。
browsingContext.captureScreenshot
/ startScreencast 等の module を仕様化済みuser context configuration /
locale-geolocation-timezone-viewport emulation /
network request/response bodies 等の不足機能が GitHub issue
#32577 で公式に列挙されている 12以下が揃った時点で移行検討:
experimental から
stable に昇格 (issue #32577 のチェックリストが完了)| ファーム | プラン | 月額 (年契) | 並列 | 実機 / エミュ | 備考 |
|---|---|---|---|---|---|
| BrowserStack Live | Desktop & Mobile | $39 | 1 | 実機 | 手動探索テスト用 13 |
| BrowserStack Automate | Desktop & Mobile | $175 | 1 | 実機 | 30,000+ デバイス 14 |
| BrowserStack Automate Pro | Desktop & Mobile Pro | $225 | 1 | 実機 | 実機 iOS Safari Playwright 対応・AI Self-Healing 15 |
| Sauce Labs Live | Desktop & Mobile | $39 | 1 | 実機 | 16 |
| Sauce Labs Virtual Device Cloud | — | $149 | 1 | エミュ/シミュ中心 | 実機テスト不足のため本問では不採用 17 |
| LambdaTest Real Device Plus Live | — | $39 | 1 | 実機 (10,000+) | 予備ファームとして採用 |
| AWS Device Farm | — | (本検証では未確証) | — | 実機 | 一次価格確認が取れず |
多重化を採用する。理由:
exit code != 0 なら LambdaTest にフォールバック)
で運用負荷は最小化Virtual Device Cloud (149/月)はエミュレータ/シミュレータ中心で、 * *DRM再生・PWAインストール・ノッチ/safeareaのレイアウト * *などの実機依存テストをカバーできない。Live(39/月) は実機だが手動探索テスト向けで、Automate 系の並列実機が VDC 経由のためコストパフォーマンスで BrowserStack に劣る。
# .github/workflows/mobile-web-e2e.yml (抜粋)
strategy:
matrix:
target:
- { device: "iPhone 15 Pro", os: "iOS 17", browser: "safari" }
- { device: "iPad Pro 12.9", os: "iPadOS 17", browser: "safari" }
- { device: "Pixel 8", os: "Android 14", browser: "chrome" }
- { device: "Galaxy S24", os: "Android 14", browser: "samsung_internet" }
fail-fast: false
max-parallel: 5 # BrowserStack Pro のトンネル上限| 項目 | 値 | 理由 |
|---|---|---|
| 並列度 | 5 (固定) | BrowserStack Pro のトンネル上限 |
| リトライ回数 | 2 | ネットワーク起因のみ、テスト本体の失敗はリトライしない |
| タイムアウト | 60 秒 (アクション)、180 秒 (テスト全体) | flaky な BrowserStack セッション枯渇に対処 |
| Visual AI 設定 | matchLevel: content、ベースライン自動更新
ON、ignore 領域明示 |
誤検知率 1% 未満が目標 |
| フォールバック | BrowserStack exit code != 0 → LambdaTest 再実行 | CI スクリプトで自動化 |
| 対立項目 | 主張 | 裁定 |
|---|---|---|
| 端末ファーム多重化の是非 | devops_engineer: 単一ファーム (BrowserStack) で簡素化 / qa_lead・ux_designer: 多重化でリスク分散 / mobile_specialist: 単一でも可だが機能分割案あり | 多重化採用。新機能の初期不安定性に対するリスク分散メリットが追加コスト ($40/月) と運用負荷を上回る |
| CI 並列度の数値 | devops_engineer: 5 固定 / qa_lead: 5-8 / mobile・ux: 5 | 5 固定。BrowserStack Pro のトンネル上限を厳守 |
| 手動補完頻度 | ux_designer: 隔週 / 他: 週 1 回 | 週 1 回維持。DRM/Canvas の誤検知リスクが高い段階では安全域を確保 |
| PWA インストール完全自動化 | mobile_specialist: Appium 併用で完全自動化 / devops_engineer: 単体で十分 | 単体 (Playwright のみ)。実際のインストール操作は手動 UAT で補完。Appium 併用は CI 複雑性とコスト増に見合わない |
| WebDriver BiDi 採用時期 | (全員) 現時点で不採用、将来再検討 | 不採用。Recommendation 昇格 + Playwright stable 統合がトリガー |
本書の結論を生成した円卓会議の transcript は以下に保存されている (本プロジェクトとは別ディレクトリの ds4_roundtable プロジェクト配下):
~/Documents/Claude/Projects/EPUBアノテーション検証/ds4_roundtable/ds4_out/council/88a2f931-849b-400d-a483-e3053964b85b/transcript.md~/Documents/Claude/Projects/EPUBアノテーション検証/ds4_roundtable/ds4_out/council/69a635eb-9407-4e1b-9631-a4be22a13bbd/transcript.mdBrowserStack 公式ブログ — Industry-first Playwright Testing on Real iOS Safari (2025-06-12). https://www.browserstack.com/blog/browserstack-launches-industry-first-playwright-testing-on-real-ios-devices-with-safari/↩︎
BrowserStack 公式 press release — Becomes the First Platform to Enable Playwright Testing on Real iOS Devices. https://www.browserstack.com/press/browserstack-becomes-the-first-platform-to-enable-playwright-testing-on-real-ios-devices-with-safari↩︎
PRNewswire — BrowserStack Playwright iOS launch. https://www.prnewswire.com/in/news-releases/browserstack-becomes-the-first-platform-to-enable-playwright-testing-on-real-ios-devices-with-safari-302480159.html↩︎
BusinessWire — LambdaTest Enables Playwright Testing on iOS Real Devices (2025-07-09). https://www.businesswire.com/news/home/20250709030450/en/LambdaTest-Enables-Playwright-Testing-on-iOS-Real-Devices-to-Enhance-Mobile-Test-Accuracy↩︎
BrowserStack 公式ブログ — Industry-first Playwright Testing on Real iOS Safari (2025-06-12). https://www.browserstack.com/blog/browserstack-launches-industry-first-playwright-testing-on-real-ios-devices-with-safari/↩︎
BrowserStack docs — Playwright on iOS. https://www.browserstack.com/docs/automate/playwright/playwright-ios/nodejs↩︎
Applitools 公式 (補助参考、3-vote では具体的誤検知率は未確証): https://applitools.com/↩︎
Healenium-Appium GitHub — DOM/a11y locator のみ healing 対象、Canvas/DRM 対応外. https://github.com/healenium/healenium-appium↩︎
Anthropic — Introducing Claude 3.5 Sonnet & Computer Use (本番 QA には “experimental, cumbersome, error-prone” の caveat). https://www.anthropic.com/news/3-5-models-and-computer-use↩︎
W3C — WebDriver BiDi Editor’s Draft (2026-06-01). https://w3c.github.io/webdriver-bidi/↩︎
W3C — WebDriver BiDi Working Draft. https://www.w3.org/TR/webdriver-bidi/↩︎
Microsoft Playwright GitHub Issue #32577 — Current limitations blocking Playwright’s WebDriver BiDi adoption. https://github.com/microsoft/playwright/issues/32577↩︎
BrowserStack 公式 pricing (2026-06 直接 fetch 確認). https://www.browserstack.com/pricing↩︎
BrowserStack 公式 pricing (2026-06 直接 fetch 確認). https://www.browserstack.com/pricing↩︎
BrowserStack 公式 pricing (2026-06 直接 fetch 確認). https://www.browserstack.com/pricing↩︎
Sauce Labs 公式 pricing (2026-06 直接 fetch 確認). https://saucelabs.com/pricing↩︎
Sauce Labs 公式 pricing (2026-06 直接 fetch 確認). https://saucelabs.com/pricing↩︎