xcode-test について
シミュレーターでiOSおよびmacOSアプリをビルドして確認する手順を示すテストスキルです。XcodeBuildMCPでアプリをインストールして起動し、スクリーンショットやログを調べ、外部フローでは人による確認を促します。
主な機能
- 01シミュレーターでのビルドとインストール
- 02アプリ起動と画面キャプチャ
- 03コンソールログの確認
- 04外部フローの人手確認
- 05障害の記録と再テスト
活用シーン
- 01アプリ変更後の主要画面の確認
- 02シミュレーターのクラッシュやエラーの調査
- 03人手が必要なサインインや購入フローの確認
- 04障害を記録し修正後に再ビルド
MCP 対応
接続済みのXcodeBuildMCPサーバーが必要です。プロジェクト検出、シミュレーター管理、ビルド、インストール、画面キャプチャ、ログ確認にそのツールを使うようエージェントに案内します。
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ ratacat/ claude-skills --skill xcode-testインストール後、Claude Code で/xcode-testを入力して読み込まれたか確認します。
詳細
引数
[スキーム名、またはデフォルトを使用する場合は 'current']
Xcode テストコマンド
<command_purpose>XcodeBuildMCP を使用して、シミュレーター上で iOS アプリをビルド、インストール、テストします。スクリーンショットやログを取得し、アプリの動作を検証します。</command_purpose>
はじめに
シミュレーターを使ったテストを専門とする iOS QA エンジニア
このコマンドでは、iOS/macOS アプリを次の手順でテストします。
- シミュレーター向けにビルドする
- アプリをインストールして起動する
- 主要な画面のスクリーンショットを撮影する
- エラーを確認するためにコンソールログを取得する
- 外部フローの人による検証に対応する
前提条件
- コマンドラインツールを含む Xcode がインストールされていること - XcodeBuildMCP サーバーが接続されていること - 有効な Xcode プロジェクトまたはワークスペースがあること - 少なくとも 1 台の iOS シミュレーターが利用可能であること主なタスク
0. XcodeBuildMCP がインストールされていることを確認する
<check_mcp_installed>
まず、XcodeBuildMCP のツールが利用可能か確認します。
次を呼び出してみてください。
mcp__xcodebuildmcp__list_simulators({})
ツールが見つからない場合、またはエラーが発生した場合:
ユーザーに次のように伝えます。
**XcodeBuildMCP not installed**
Please install the XcodeBuildMCP server first:
\`\`\`bash
claude mcp add XcodeBuildMCP -- npx xcodebuildmcp@latest
\`\`\`
Then restart Claude Code and run `/xcode-test` again.
XcodeBuildMCP が正常に動作することを確認するまで、先に進まないでください。
</check_mcp_installed>
1. プロジェクトとスキームを確認する
<discover_project>
利用可能なプロジェクトを検索します。
mcp__xcodebuildmcp__discover_projs({})
プロジェクトのスキームを一覧表示します。
mcp__xcodebuildmcp__list_schemes({ project_path: "/path/to/Project.xcodeproj" })
引数が指定されている場合:
- 指定されたスキーム名を使用します
- または、デフォルト/最後に使用したスキームを使う場合は "current" を指定します
</discover_project>
2. シミュレーターを起動する
<boot_simulator>
利用可能なシミュレーターを一覧表示します。
mcp__xcodebuildmcp__list_simulators({})
優先するシミュレーターを起動します(iPhone 15 Pro を推奨)。
mcp__xcodebuildmcp__boot_simulator({ simulator_id: "[uuid]" })
シミュレーターの準備が整うまで待ちます。 インストールに進む前に、シミュレーターの状態を確認します。
</boot_simulator>
3. アプリをビルドする
<build_app>
iOS シミュレーター向けにビルドします。
mcp__xcodebuildmcp__build_ios_sim_app({
project_path: "/path/to/Project.xcodeproj",
scheme: "[scheme_name]"
})
ビルドに失敗した場合:
- ビルドエラーを取得します
- 各ビルドエラーについて P1 の todo を作成します
- 具体的なエラーの詳細をユーザーに報告します
成功した場合:
- インストール用にビルド済みアプリのパスを記録します
- インストールの手順に進みます
</build_app>
4. インストールして起動する
<install_launch>
シミュレーターにアプリをインストールします。
mcp__xcodebuildmcp__install_app_on_simulator({
app_path: "/path/to/built/App.app",
simulator_id: "[uuid]"
})
アプリを起動します。
mcp__xcodebuildmcp__launch_app_on_simulator({
bundle_id: "[app.bundle.id]",
simulator_id: "[uuid]"
})
ログの取得を開始します。
mcp__xcodebuildmcp__capture_sim_logs({
simulator_id: "[uuid]",
bundle_id: "[app.bundle.id]"
})
</install_launch>
5. 主要な画面をテストする
<test_screens>
アプリの主要な画面ごとに、次を行います。
スクリーンショットを撮影します。
mcp__xcodebuildmcp__take_screenshot({
simulator_id: "[uuid]",
filename: "screen-[name].png"
})
スクリーンショットで次の点を確認します。
- UI 要素が正しく描画されている
- エラーメッセージが表示されていない
- 期待されるコンテンツが表示されている
- レイアウトが適切である
ログにエラーがないか確認します。
mcp__xcodebuildmcp__get_sim_logs({ simulator_id: "[uuid]" })
次の項目を確認します。
- クラッシュ
- 例外
- エラーレベルのログメッセージ
- ネットワークリクエストの失敗
</test_screens>
6. 人による検証(必要な場合)
<human_verification>
テストに次の操作が含まれる場合は、人による入力を求めて一時停止します。
| フローの種類 | 依頼内容 |
|---|---|
| Apple でサインイン | 「シミュレーターで Apple でサインインを完了してください」 |
| プッシュ通知 | 「テスト用プッシュ通知を送信し、表示されることを確認してください」 |
| アプリ内購入 | 「サンドボックスで購入を完了してください」 |
| カメラ/写真 | 「アクセスを許可し、カメラが動作することを確認してください」 |
| 位置情報 | 「位置情報へのアクセスを許可し、マップが更新されることを確認してください」 |
AskUserQuestion を使用します。
**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
</human_verification>
7. 失敗に対処する
<failure_handling>
テストに失敗した場合:
-
失敗を記録します。
- エラー状態のスクリーンショットを撮影する
- コンソールログを取得する
- 再現手順を記録する
-
どのように進めるかをユーザーに尋ねます。
**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 to todos/ for later 3. Skip - Continue testing other screens -
「今すぐ修正」の場合:
- コードを調査して問題を特定する
- 修正案を提示する
- 再ビルドして再テストする
-
「todo を作成」の場合:
{id}-pending-p1-xcode-{description}.mdを作成する- テストを続行する
</failure_handling>
8. テストの概要
<test_summary>
すべてのテストが完了したら、概要を提示します。
## 📱 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]
</test_summary>
9. クリーンアップ
テストの後:
ログの取得を停止します。
mcp__xcodebuildmcp__stop_log_capture({ simulator_id: "[uuid]" })
必要に応じてシミュレーターを終了します。
mcp__xcodebuildmcp__shutdown_simulator({ simulator_id: "[uuid]" })
使用例
# Test with default scheme
/xcode-test
# Test specific scheme
/xcode-test MyApp-Debug
# Test after making changes
/xcode-test current
/workflows:review との連携
iOS コードに関する PR をレビューする際、/workflows:review コマンドからサブエージェントとしてこれを起動できます。
Task general-purpose("Run /xcode-test for scheme [name]. Build, install on simulator, test key screens, check for crashes.")