关于 testa
Testa 是用于 iOS Simulator 应用测试的 MCP 服务和命令行工具,面向 AI Agent 与开发者。它提供屏幕读取和真实触控操作,还能将 Agent 测试过程录制为流程文件,在 CI 中无需模型即可重放。
主要功能
- 01以精简文本读取屏幕
- 02点击、输入、滑动及手势操作
- 03控制模拟器设备功能
- 04录制并重放流程文件
- 05在 CI 中重放并生成 JUnit 输出
适用场景
- 01让 Agent 检查应用欢迎界面
- 02无需添加 testID 即可测试界面
- 03录制流程并在 CI 中重放
MCP 相关
Testa 向 MCP 客户端提供 iOS Simulator 屏幕观察和交互能力。`testa setup` 会为 Claude Code 注册服务,其他客户端可配置 `testa mcp`。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
npx -y @valewnrt/testa-mcpTESTA_MCP_FULLSet to 1 to expose all 40 tools instead of the 13-tool token-lean default.TESTA_UDIDTarget a specific simulator UDID instead of the booted one.本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
Testa 让 Claude Code、Codex、Cursor 或任何 MCP 客户端都能在 iOS Simulator 中看见并操作应用。它会将屏幕内容读取为精简文本,通过真实触摸事件进行点击、输入和滑动,并检查结果。它适用于 React Native、Expo 和 SwiftUI 应用,无需添加任何 testID。Agent 完成后,可将运行过程保存为流程文件,并在 CI 中无需模型即可重放。
安装
需要运行 Xcode 26(iOS 26 模拟器)的 macOS。
brew tap valewnrt/testa
brew install testa
testa setup # installs the Claude Code skill and registers the MCP server
也可以从源代码构建:git clone https://github.com/valewnrt/testa && cd testa && ./install.sh。
连接你的 Agent
testa setup 已配置好 Claude Code。对于其他 Agent:
codex mcp add testa -- testa mcp # Codex
{ "mcpServers": { "testa": { "command": "testa", "args": ["mcp"] } } }
将 JSON 放入 Cursor 的 .cursor/mcp.json 或其他 MCP 客户端配置中。
然后向 Agent 提出类似这样的要求:“在模拟器中启动应用,使用测试账号注册,并确认欢迎界面是否显示。”
更多信息请参阅 docs/agents.md。
亲自试试
Testa 是一个简单的 CLI,因此你也可以手动操作:
$ testa boot "iPhone 17 Pro"
$ testa install ./MyApp.app && testa launch com.example.myapp
$ testa ui
19 elements (on screen)
e2 StaticText "ready" #status @201,89
e5 Button "Tap me" #tapButton @102,171
e18 TextField #textInput =type here @201,601
…
$ testa tap "Tap me"
tapped e5 Button Tap me
-- ui changes --
~ e2 StaticText "tap:1" #status @201,89
~ e6 StaticText "count: 1" #tapCount @41,208
$ testa assert "#status" label=tap:1
PASS label tap:1
第一条命令会启动后台守护进程(只需几秒,且只启动一次)。之后,每条命令大约需要 60 ms。
与众不同之处
- 无需修改应用。 Testa 会读取无障碍树;对于其中没有的内容,则使用设备端 OCR(Apple Vision)作为后备方案,包括系统弹窗、画布绘制的界面、游戏和 WebView。了解更多 →
- 专为 Token 预算设计。 每个界面元素占一行,一个屏幕约需 200 个 Token,而截图约需 1,500 个;每次操作只返回发生变化的内容。基准测试 →
- 录制一次,在 CI 中重放。
testa flow record会将 Agent 执行的操作转换为纯文本流程文件。testa flow run会重放该文件,并生成 JUnit 输出和失败产物;此外还提供 GitHub Action。了解更多 → - 真实手势与设备控制。 支持点击、长按、滑动、拖放、捏合、旋转、多点触控和硬件按钮,还支持推送通知、位置、Face ID、深色模式、动态字体等。
- 单个本地二进制文件,无依赖。 Testa 直接调用 Apple 的模拟器框架:无需 Node、Python 或 WebDriver 服务。无网络连接,无遥测数据。工作原理 →
状态
Testa 尚未达到 1.0 版本,已用于测试真实的生产应用。它依赖 Apple 的私有框架,因此新版 Xcode 可能会导致其无法正常运行;每周运行的任务会针对 Xcode 测试版运行测试套件,以便尽早发现问题。已在配备 iOS 26.4 模拟器的 Xcode 26.4 上验证。仅支持 iOS Simulator:不支持真实设备和 Android(原因)。
文档
- 命令:选择器、观察 → 操作 → 验证循环、完整参考
- 通过 AI Agent 使用 Testa:MCP 设置、工具、Token 成本
- 无需 testID 测试应用
- 流程与 CI:流程文件、录制、GitHub Action
- 工作原理 · 安全模型
- Testa 对比:Maestro、Appium、idb 和 Argent
- 故障排除与限制
贡献
欢迎提交 Bug 报告、Xcode 兼容性报告和拉取请求。请先阅读 CONTRIBUTING.md;问题和想法请前往 讨论区。更改记录见 CHANGELOG。
致谢
Testa 的 HID 和辅助功能工作借鉴了对 Meta 的 idb(MIT)的研究;未链接或捆绑任何 idb 代码。 感谢所有贡献者。
许可证
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。