用途
test-xcode 是一个用于在 iOS 模拟器上构建、安装和测试 iOS 应用的技能,基于 XcodeBuildMCP 实现。它适用于在修改 iOS 代码后、创建 PR 前,或需要验证应用行为、检查崩溃和错误时使用。该技能能够捕获截图、日志,并验证应用在模拟器中的实际表现。
主要能力
- 通过 XcodeBuildMCP 的 MCP 工具与 Xcode 项目交互,自动发现项目、scheme 和可用模拟器。
- 在模拟器上构建、安装并启动 iOS 应用。
- 捕获模拟器截图,用于检查 UI 元素渲染、错误信息、内容显示和布局。
- 捕获并检查模拟器日志,识别崩溃、异常、错误级别日志和失败的网络请求。
- 支持对关键屏幕进行逐一测试,并记录每个屏幕的通过、失败或跳过状态。
- 在涉及设备交互的流程(如 Sign in with Apple、推送通知、应用内购买、相机/照片、定位、SwiftUI Text 链接)时,暂停并请求人工验证。
- 测试失败时,可记录失败详情、截图、日志和复现步骤,并支持立即修复、创建待办事项或跳过。
- 测试完成后生成结构化的测试摘要,包括构建结果、测试屏幕列表、控制台错误、人工验证、失败项和创建的待办事项。
- 测试结束后可停止日志捕获,并可选关闭模拟器。
使用方式
该技能通过斜杠命令或类似方式调用,支持以下用法:
/test-xcode:使用默认 scheme 进行测试。/test-xcode MyApp-Debug:测试指定的 scheme。/test-xcode current:在修改代码后测试当前默认或上次使用的 scheme。
工作流程如下:
-
验证 XcodeBuildMCP 是否可用:调用其
list_simulators工具。若未找到或报错,需先安装 XcodeBuildMCP MCP 服务器。安装方式:- 通过 Homebrew:
brew tap getsentry/xcodebuildmcp && brew install xcodebuildmcp - 或通过 npx(无需全局安装):
npx -y xcodebuildmcp@latest mcp然后在代理配置中添加 "XcodeBuildMCP" 作为 MCP 服务器并重启代理。在确认 XcodeBuildMCP 正常工作前,不要继续。
- 通过 Homebrew:
-
发现项目与 scheme:调用
discover_projs查找可用项目,再调用list_schemes获取可用 scheme。如果提供了参数,使用该 scheme 名称;如果为 "current",使用默认或上次使用的 scheme。 -
启动模拟器:调用
list_simulators查找可用模拟器,使用boot_simulator和模拟器 UUID 启动首选模拟器(推荐 iPhone 15 Pro),等待模拟器就绪。 -
构建应用:调用
build_ios_sim_app,传入项目路径和 scheme 名称。失败时捕获构建错误,为每个错误创建 P1 待办事项,并向用户报告具体错误详情;成功时记录构建产物路径,继续下一步。 -
安装并启动:调用
install_app_on_simulator安装构建产物,调用launch_app_on_simulator启动应用,调用capture_sim_logs开始捕获日志。 -
测试关键屏幕:对每个关键屏幕,调用
take_screenshot截图并检查 UI 元素、错误信息、内容和布局;调用get_sim_logs检查崩溃、异常、错误日志和失败的网络请求。注意已知自动化限制:模拟点击无法触发 SwiftUI Text 视图中内联 AttributedString 链接的手势识别器,点击会报告成功但无效果。此时应提示用户在模拟器中手动点击,或使用xcrun simctl openurl <device> <URL>作为备选。 -
人工验证(必要时):当测试涉及需要设备交互的流程时,暂停并请求人工输入。例如 Sign in with Apple、推送通知、应用内购买、相机/照片、定位、SwiftUI Text 链接等。使用平台的问题工具(如 Claude Code 的 AskUserQuestion、Codex 的 request_user_input、Gemini 的 ask_user)或提供编号选项并等待。
-
处理失败:测试失败时,记录失败详情(截图、控制台日志、复现步骤),并询问用户如何继续:立即修复、创建待办事项(使用 todo-create 技能,优先级 p1,描述为
xcode-{description})或跳过。 -
测试摘要:所有测试完成后,展示摘要,包括项目、scheme、模拟器、构建结果、测试屏幕表格、控制台错误、人工验证、失败项、创建的待办事项和最终结果(PASS/FAIL/PARTIAL)。
-
清理:调用
stop_log_capture停止日志捕获,可选调用shutdown_simulator关闭模拟器。
适用场景
- 修改 iOS 代码后,需要验证应用在模拟器上的行为。
- 创建 PR 前,对关键屏幕进行自动化测试和截图检查。
- 需要检查应用是否崩溃、是否有异常日志或网络请求失败。
- 与 ce:review 工作流集成:当审查涉及 iOS 代码的 PR 时,ce:review 可以启动代理运行此技能,在模拟器上构建、测试关键屏幕并检查崩溃。
限制
- 需要预先安装 Xcode 及命令行工具。
- 需要连接 XcodeBuildMCP MCP 服务器。
- 需要有效的 Xcode 项目或工作区。
- 需要至少一个可用的 iOS 模拟器。
- 模拟点击无法触发 SwiftUI Text 视图中内联 AttributedString 链接的手势识别器,这是平台限制,内联链接不会作为独立元素暴露在无障碍树中。
- 涉及设备交互的流程(如 Sign in with Apple、推送通知、应用内购买、相机/照片、定位)需要人工验证。
- 其他功能、收费、价格、平台、效果或使用步骤等未在资料中提供的信息,暂未提供。