mcpField
T
test-xcode

test-xcode

github.com/everyinc测试与质量25.8k255 次安装今天更新
代码仓库

关于 test-xcode

test-xcode 是使用 XcodeBuildMCP 在 iOS 模拟器上构建、安装和测试应用的技能,适用于 iOS 开发与审查流程。它结合屏幕截图和模拟器日志检查界面及运行状况,并在需要设备交互时请求人工验证。

主要功能

  1. 01发现 Xcode 项目和构建方案
  2. 02启动模拟器并构建 iOS 应用
  3. 03安装并启动应用
  4. 04截取屏幕并检查模拟器日志
  5. 05请求人工验证需交互的流程

适用场景

  1. 01检查 iOS 应用关键界面的显示情况
  2. 02在模拟器中复现并记录测试失败
  3. 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. 安装并启动
  1. 使用已构建应用的路径和模拟器 UUID 调用 install_app_on_simulator
  2. 使用 Bundle ID 和模拟器 UUID 调用 launch_app_on_simulator
  3. 使用模拟器 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. 处理失败情况

测试失败时:

  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-create 技能,并创建优先级为 p1、描述为 xcode-{description} 的待办事项,然后继续

  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 工作流可以启动 Agent 来运行此技能、在模拟器上构建、测试关键屏幕并检查是否发生崩溃。

评论

支持 Markdown