mcpField
T
test-xcode

test-xcode

github.com/everyincテスト・品質25.8k255 回インストール今日更新
リポジトリ

test-xcode について

test-xcodeは、XcodeBuildMCPを使ってiOSアプリをシミュレーターでビルド、インストール、テストするスキルです。画面とログを確認し、端末操作が必要な場合は人による確認を求めます。

主な機能

  1. 01Xcodeプロジェクトとスキームの検出
  2. 02シミュレーター起動とiOSアプリのビルド
  3. 03アプリのインストールと起動
  4. 04スクリーンショット撮影とログ確認
  5. 05操作が必要なテストで人の確認を依頼

活用シーン

  1. 01iOSアプリの主要画面の表示確認
  2. 02シミュレーターテスト失敗の再現と記録
  3. 03iOSコード変更後のビルドと実行状況のレビュー

MCP 対応

接続済みのXcodeBuildMCP MCP サーバーを必要とし、シミュレーター検出、ビルド、インストール、起動、撮影、ログ取得のツールを利用します。

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/everyinc/compound-engineering-plugin --skill test-xcode

インストール後、Claude Code で/test-xcodeを入力して読み込まれたか確認します。

詳細

Xcode Test Skill

XcodeBuildMCP を使用して、シミュレーター上で iOS アプリをビルド、インストール、テストします。スクリーンショットやログを取得し、アプリの動作を検証します。

前提条件

  • コマンドラインツールがインストールされた Xcode
  • XcodeBuildMCP MCP サーバーへの接続
  • 有効な Xcode プロジェクトまたはワークスペース
  • 少なくとも 1 台の iOS シミュレーター

ワークフロー

0. XcodeBuildMCP が利用可能であることを確認する

list_simulators ツールを呼び出して、XcodeBuildMCP MCP サーバーに接続されていることを確認します。

MCP ツール名はプラットフォームによって異なります:

  • Claude Code:mcp__xcodebuildmcp__list_simulators
  • その他のプラットフォーム:XcodeBuildMCP サーバーの list_simulators メソッドに対応する MCP ツール呼び出しを使用します

ツールが見つからない場合、またはエラーが発生した場合は、XcodeBuildMCP MCP サーバーを追加する必要があることをユーザーに伝えます:

XcodeBuildMCP not installed

Install via Homebrew:
  brew tap getsentry/xcodebuildmcp && brew install xcodebuildmcp

Or via npx (no global install needed):
  npx -y xcodebuildmcp@latest mcp

Then add "XcodeBuildMCP" as an MCP server in your agent configuration
and restart your agent.

XcodeBuildMCP が正常に動作することを確認するまで、先に進まないでください。

1. プロジェクトとスキームを確認する

XcodeBuildMCP の discover_projs ツールを呼び出して利用可能なプロジェクトを探し、次にプロジェクトのパスを指定して list_schemes を呼び出し、利用可能なスキームを取得します。

引数が指定されている場合は、そのスキーム名を使用します。「current」の場合は、デフォルトまたは最後に使用したスキームを使用します。

2. シミュレーターを起動する

list_simulators を呼び出して利用可能なシミュレーターを確認します。boot_simulator にシミュレーターの UUID を指定して、優先するシミュレーター(iPhone 15 Pro を推奨)を起動します。

先に進む前に、シミュレーターの準備が整うまで待ちます。

3. アプリをビルドする

プロジェクトのパスとスキーム名を指定して build_ios_sim_app を呼び出します。

失敗した場合:

  • ビルドエラーを記録します
  • ビルドエラーごとに P1 の ToDo を作成します
  • 具体的なエラーの詳細を添えてユーザーに報告します

成功した場合:

  • インストール用にビルドされたアプリのパスを記録します
  • 手順 4 に進みます
4. インストールして起動する
  1. ビルドされたアプリのパスとシミュレーターの UUID を指定して install_app_on_simulator を呼び出します
  2. バンドル ID とシミュレーターの UUID を指定して launch_app_on_simulator を呼び出します
  3. シミュレーターの UUID とバンドル ID を指定して capture_sim_logs を呼び出し、ログの取得を開始します
5. 主要な画面をテストする

アプリの主要な画面ごとに、次の手順を行います。

スクリーンショットを撮る: シミュレーターの UUID と、わかりやすいファイル名(例:screen-home.png)を指定して take_screenshot を呼び出します。

スクリーンショットで次の点を確認します:

  • UI 要素が正しく描画されている
  • エラーメッセージが表示されていない
  • 想定されるコンテンツが表示されている
  • レイアウトが適切である

ログでエラーを確認する: シミュレーターの UUID を指定して get_sim_logs を呼び出します。次の項目を確認します:

  • クラッシュ
  • 例外
  • エラーレベルのログメッセージ
  • 失敗したネットワークリクエスト

既知の自動化の制限 — SwiftUI の Text リンク: シミュレートされたタップ(XcodeBuildMCP またはその他のシミュレーター自動化ツール経由)は、インラインの AttributedString リンクを含む SwiftUI の Text ビュー上のジェスチャー認識をトリガーしません。タップは成功したと報告されますが、効果はありません。これはプラットフォームの制限です。インラインリンクはアクセシビリティツリー内で個別の要素として公開されません。Text リンクをタップしても画面に変化がない場合は、シミュレーター上で手動でタップするようユーザーに依頼します。対象 URL がわかっている場合は、代替手段として xcrun simctl openurl <device> <URL> で直接開けます。

6. 人による確認(必要な場合)

デバイス操作が必要なタッチフローをテストする場合は、作業を一時停止して人による入力を求めます。

フローの種類確認する内容
Apple でサインイン「シミュレーターで Apple でサインインを完了してください」
プッシュ通知「テスト用プッシュ通知を送信し、表示されることを確認してください」
アプリ内購入「サンドボックス購入を完了してください」
カメラ/写真「アクセスを許可し、カメラが動作することを確認してください」
位置情報「位置情報へのアクセスを許可し、マップが更新されることを確認してください」
SwiftUI Text リンク「[要素の説明] を手動でタップしてください。自動タップではインラインテキストリンクをトリガーできません」

ユーザーに質問するには、プラットフォームの質問ツール(例:Claude Code の AskUserQuestion、Codex の request_user_input、Gemini の ask_user)を使用するか、番号付きの選択肢を提示して回答を待ちます:

Human Verification Needed

This test requires [flow type]. Please:
1. [Action to take on simulator]
2. [What to verify]

Did it work correctly?
1. Yes - continue testing
2. No - describe the issue
7. 失敗への対応

テストが失敗した場合:

  1. 失敗内容を記録します:

    • エラー状態のスクリーンショットを撮影します
    • コンソールログを取得します
    • 再現手順を記録します
  2. どのように進めるかユーザーに確認します:

    Test Failed: [screen/feature]
    
    Issue: [description]
    Logs: [relevant error messages]
    
    How to proceed?
    1. Fix now - I'll help debug and fix
    2. Create todo - Add a todo for later (using the todo-create skill)
    3. Skip - Continue testing other screens
    
  3. 「今すぐ修正」の場合: 調査し、修正案を提示して、再ビルドと再テストを行います

  4. 「TODO を作成」の場合: todo-create スキルを読み込み、優先度 p1、説明 xcode-{description} で TODO を作成して続行します

  5. 「スキップ」の場合: スキップとして記録し、続行します

8. テストの概要

すべてのテストが完了したら、概要を提示します:

## Xcode Test Results

**Project:** [project name]
**Scheme:** [scheme name]
**Simulator:** [simulator name]

### Build: Success / Failed

### Screens Tested: [count]

| Screen | Status | Notes |
|--------|--------|-------|
| Launch | Pass | |
| Home | Pass | |
| Settings | Fail | Crash on tap |
| Profile | Skip | Requires login |

### Console Errors: [count]
- [List any errors found]

### Human Verifications: [count]
- Sign in with Apple: Confirmed
- Push notifications: Confirmed

### Failures: [count]
- Settings screen - crash on navigation

### Created Todos: [count]
- `006-pending-p1-xcode-settings-crash.md`

### Result: [PASS / FAIL / PARTIAL]
9. クリーンアップ

テスト後:

  1. シミュレーターの UUID を指定して stop_log_capture を呼び出します
  2. 必要に応じて、シミュレーターの UUID を指定して shutdown_simulator を呼び出します

使用例

# Test with default scheme
/test-xcode

# Test specific scheme
/test-xcode MyApp-Debug

# Test after making changes
/test-xcode current

ce:review との統合

iOS コードに関する PR をレビューする際、ce:review ワークフローではエージェントを起動して、このスキルを実行し、シミュレーター上でビルドして、主要な画面をテストし、クラッシュがないか確認できます。

コメント