0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Claude Code で Chrome DevTools MCP と Playwright MCP を同時に使ってフロントエンドを品質チェックする

0
Last updated at Posted at 2026-04-15

はじめに

Claude Code には MCP(Model Context Protocol)でブラウザを操作・分析するサーバーを接続できる。今回は Chrome DevTools MCPPlaywright MCP の2つを 同時に 使って、フロントエンドの品質チェックを一発で終わらせるワークフローを試した。

📌 この記事で扱うこと:

  • Chrome DevTools MCP と Playwright MCP の役割分担
  • 2つの MCP を並列で叩く実践例
  • 実際に取得できたパフォーマンスデータと Lighthouse スコア

環境

項目 バージョン
Claude Code claude-opus-4-6
Chrome DevTools MCP 0.21.0
Playwright MCP latest
対象サイト Kotlin Compose for Web + Rust GraphQL

実装

2つの MCP の役割

役割 MCP 担当
🏎️ Driving Playwright MCP ナビゲーション、クリック、スクリーンショット
🔍 Debugging Chrome DevTools MCP Performance Trace、Lighthouse、ネットワーク監視

Step 1: 両方のブラウザでサイトを開く

# Playwright — ユーザー操作用
Playwright → browser_navigate("https://nba-iso-flow.com")

# Chrome DevTools — 分析用
Chrome DevTools → navigate_page(url: "https://nba-iso-flow.com")

Step 2: パフォーマンストレースとスナップショットを同時実行

Claude Code はツールの並列呼び出しをサポートしている。以下の2つが 1ターンで同時に 実行される:

Chrome DevTools → performance_start_trace(reload: true, autoStop: true)
Playwright → browser_snapshot()

Chrome DevTools からは Core Web Vitals が返ってくる:

LCP: 339ms
  TTFB: 61ms (17.9%)
  Render Delay: 279ms (82.1%)
CLS: 0.09

Playwright からはページの DOM 構造が取れる:

- button "すべて" [ref=e9]
- button "Trade" [ref=e10]
- button "Signing" [ref=e11]
- button "Other" [ref=e12]
- article [ref=e20]  # ニュースカード x N

Step 3: ユーザー操作 + ネットワーク監視

Playwright でカテゴリフィルターをクリックした後、Chrome DevTools でネットワークリクエストを確認する:

# Playwright でフィルタークリック
Playwright → browser_click(ref=e10)  // "Trade" ボタン

# Chrome DevTools でネットワーク確認
Chrome DevTools → list_network_requests(resourceTypes: ["fetch", "xhr"])

結果:

GET  /health   → 200 ✅
POST /graphql  → 200 ✅(カテゴリ別 GraphQL クエリ)

コンソールエラーもゼロ:

Chrome DevTools → list_console_messages(types: ["error", "warn"])
→ <no console messages found>

Step 4: Lighthouse 監査 + スクリーンショット同時撮影

最後の仕上げ。Lighthouse 監査とスクリーンショットを同時に叩く:

Chrome DevTools → lighthouse_audit(device: "mobile", mode: "navigation")
Playwright → browser_take_screenshot()

Lighthouse 結果:

カテゴリ スコア
Best Practices 100
Accessibility 83
SEO 82

ハマったポイント

Chrome DevTools MCP のブラウザプロファイル競合

Chrome DevTools MCP は --user-data-dir でブラウザプロファイルを管理している。別のセッションで既にブラウザが起動していると、以下のエラーが出る:

The browser is already running for /Users/.../.cache/chrome-devtools-mcp/chrome-profile.
Use --isolated to run multiple browser instances.

解決策: 既存の Chrome プロセスを ps aux | grep chrome-devtools-mcp で特定して kill する。または list_pages で既存ページを再利用する。重複プロセスが立っている場合は新しい方を kill すると MCP サーバーとの接続が維持される。

Playwright と Chrome DevTools は別ブラウザインスタンス

2つの MCP はそれぞれ 独立したブラウザ を起動する。同じブラウザを共有するわけではない。したがって:

  • Playwright でクリックした結果は Chrome DevTools 側には反映されない
  • それぞれのブラウザで同じ URL を開いて、独立して操作・分析する
  • 「Playwright でクリック → Chrome DevTools でネットワーク確認」は、Chrome DevTools 側でもリロードして同じ操作を再現する必要がある

これを理解していないと「Playwright でクリックしたのに Chrome DevTools のネットワークに出てこない」と混乱する。操作と分析は並行するが、ブラウザは独立 というのがポイントだ。

スナップショットのサイズ制限

Playwright の browser_snapshot() は DOM 全体のアクセシビリティツリーを返す。ニュース記事が 100 件近く表示されているページでは 69,687 文字 になり、Claude Code のツール結果サイズ上限を超えた。

解決策: browser_snapshot(depth: 3) で深さを制限する。ボタンの ref だけ取れれば操作には十分だ。

まとめ

Chrome DevTools MCP と Playwright MCP の二刀流で得られたもの:

  • パフォーマンス: LCP 339ms、CLS 0.09、TTFB 61ms — 全て Good 基準
  • 品質: Best Practices 100、コンソールエラーゼロ
  • 改善点: A11y と SEO に5件の指摘(コントラスト比、meta description 等)

ユニットテストや mutation testing では見つからない「ブラウザでしかわからない問題」を、Claude Code の会話の中で自然に検出できるのが強みだ。MCP を複数組み合わせることで、1つでは届かない領域までカバーできる。


🏀 NBA Trade Tracker: https://www.nba-iso-flow.com/

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?