关于 test-xcode
test-xcode 是使用 XcodeBuildMCP 在 iOS 模拟器上构建、安装和测试应用的技能,适用于 iOS 开发与审查流程。它结合屏幕截图和模拟器日志检查界面及运行状况,并在需要设备交互时请求人工验证。
主要功能
- 01发现 Xcode 项目和构建方案
- 02启动模拟器并构建 iOS 应用
- 03安装并启动应用
- 04截取屏幕并检查模拟器日志
- 05请求人工验证需交互的流程
适用场景
- 01检查 iOS 应用关键界面的显示情况
- 02在模拟器中复现并记录测试失败
- 03审查 iOS 代码变更后的构建与运行状况
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 项目或工作区
- 至少有一台可用的 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. 发现项目和 Scheme
调用 XcodeBuildMCP 的 discover_projs 工具查找可用项目,然后使用项目路径调用 list_schemes,获取可用的 Scheme。
如果提供了参数,请使用该 Scheme 名称。如果参数为 “current”,请使用默认或上次使用的 Scheme。
2. 启动模拟器
调用 list_simulators 查找可用的模拟器。使用模拟器的 UUID,通过 boot_simulator 启动首选模拟器(推荐 iPhone 15 Pro)。
继续之前,请等待模拟器就绪。
3. 构建应用
使用项目路径和 Scheme 名称调用 build_ios_sim_app。
失败时:
- 收集构建错误
- 为每个构建错误创建一个 P1 待办事项
- 向用户报告具体错误详情
成功时:
- 记下已构建应用的路径,以便安装
- 继续步骤 4
4. 安装并启动
- 使用已构建应用的路径和模拟器 UUID 调用
install_app_on_simulator - 使用 Bundle ID 和模拟器 UUID 调用
launch_app_on_simulator - 使用模拟器 UUID 和 Bundle ID 调用
capture_sim_logs,开始捕获日志
5. 测试关键界面
针对应用中的每个关键界面:
截取屏幕截图:
使用模拟器 UUID 和描述性文件名(例如 screen-home.png)调用 take_screenshot。
检查屏幕截图:
- UI 元素是否正确渲染
- 是否没有显示错误消息
- 是否显示预期内容
- 布局是否正确
检查日志中的错误:
使用模拟器 UUID 调用 get_sim_logs。检查以下内容:
- 崩溃
- 异常
- 错误级别的日志消息
- 失败的网络请求
已知自动化限制 — SwiftUI Text 链接:
通过 XcodeBuildMCP 或任何模拟器自动化工具模拟点击时,不会触发 SwiftUI Text 视图中内联 AttributedString 链接的手势识别器。点击会报告成功,但不会产生任何效果。这是平台限制:内联链接不会作为独立元素暴露在无障碍树中。点击 Text 链接后若没有明显效果,请提示用户在模拟器中手动点击。如果已知目标 URL,可以使用 xcrun simctl openurl <device> <URL> 直接打开该链接作为备用方案。
6. 人工验证(必要时)
测试需要设备交互的触控流程时,请暂停并等待人工输入。
| 流程类型 | 要求用户执行的操作 |
|---|---|
| 使用 Apple 登录 | “请在模拟器上完成使用 Apple 登录” |
| 推送通知 | “发送一条测试推送,并确认它已显示” |
| App 内购买 | “完成一次沙盒购买” |
| 相机/照片 | “授予权限并确认相机正常工作” |
| 位置 | “允许访问位置并确认地图已更新” |
| 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. 处理失败情况
测试失败时:
-
记录失败情况:
- 截取错误状态的屏幕截图
- 捕获控制台日志
- 记录复现步骤
-
询问用户如何继续:
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 -
如果选择“立即修复”: 调查问题、提出修复方案、重新构建并再次测试
-
如果选择“创建待办”: 加载
todo-create技能,并创建优先级为 p1、描述为xcode-{description}的待办事项,然后继续 -
如果选择“跳过”: 记录为已跳过,然后继续
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. 清理
测试后:
- 使用模拟器 UUID 调用
stop_log_capture - 可选择使用模拟器 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 工作流可以启动 Agent 来运行此技能、在模拟器上构建、测试关键屏幕并检查是否发生崩溃。