feat: add Android and iOS tester skills
This commit is contained in:
@@ -0,0 +1,46 @@
|
||||
# ios-tester
|
||||
|
||||
检查并执行 iOS 真机或 Xcode Simulator 测试;在 Linux 上明确报告官方 Simulator 不可本地运行,并支持远程 Mac/云设备入口。
|
||||
|
||||
## 什么时候使用
|
||||
|
||||
- 「检查 iOS 测试环境」
|
||||
- 「用 iPhone 真机跑测试」
|
||||
- 「用 iOS Simulator 跑 smoke」
|
||||
- 「在远程 Mac 上跑 iOS 测试」
|
||||
- 「报告本次 iOS 测试结果」
|
||||
|
||||
## 使用前准备
|
||||
|
||||
- 本地 Simulator 或真机测试需要 macOS、Xcode 和对应平台组件。
|
||||
- 真机还需要设备配对、Developer Mode、签名和 Provisioning Profile。
|
||||
- Linux 上不能安装 Apple 官方 Simulator;需要提供远程 Mac、macOS CI 或云真机入口。
|
||||
- 项目需要提供 Xcode scheme、workspace/project、destination 和测试命令。
|
||||
|
||||
## 使用示例
|
||||
|
||||
```text
|
||||
检查当前机器是否可以跑 iOS Simulator
|
||||
```
|
||||
|
||||
```text
|
||||
用 iPhone 15 真机跑 iOS smoke,并保留 xcodebuild 日志
|
||||
```
|
||||
|
||||
```text
|
||||
在远程 Mac 上运行 iOS 测试,最后给出 pass/fail/environment-fail 结果
|
||||
```
|
||||
|
||||
## Agent 会做什么
|
||||
|
||||
1. 先判断当前是 macOS、本地 Linux、远程 Mac 还是云设备路径。
|
||||
2. 检查 Xcode、Simulator runtime、设备配对、签名和测试命令。
|
||||
3. 环境完整后执行测试;环境不完整时停止,不将阻塞误报为产品失败。
|
||||
4. 采集测试日志、失败诊断和可用的截图或测试产物。
|
||||
5. 生成包含目标、环境、用例结果和证据路径的运行报告。
|
||||
|
||||
## 如何判断完成
|
||||
|
||||
- 有明确的目标路径和环境检查结论。
|
||||
- 每条测试都有标准结果状态。
|
||||
- macOS/远程执行有日志和产物;Linux 本地不可行时有清晰的修复建议。
|
||||
@@ -0,0 +1,45 @@
|
||||
---
|
||||
name: ios-tester
|
||||
description: >-
|
||||
检查并运行 iOS 真机或 Xcode Simulator 测试,生成可追溯结果;支持 Linux 上识别
|
||||
不可本地运行 Simulator 的边界,并通过 macOS 或远程 Mac 执行。触发词:iOS 测试、
|
||||
苹果测试、iPhone 真机、iOS Simulator、Xcode 测试、远程 Mac 测试。
|
||||
---
|
||||
|
||||
# iOS Tester
|
||||
|
||||
本 skill 负责 iOS 测试环境判定、测试执行编排和结果报告,不伪造 Linux 上不存在的
|
||||
iOS Simulator。项目根是 `git rev-parse --show-toplevel`。
|
||||
|
||||
## 模式路由
|
||||
|
||||
- 用户要求检查环境:先读 `references/environment.md`。
|
||||
- 用户要求真机测试:读 `references/device.md`。
|
||||
- 用户要求 Simulator 测试:读 `references/simulator.md`。
|
||||
- 用户要求远程 Mac 或云设备:先读取对应目标配置,再按同一环境/执行/报告闭环。
|
||||
- 用户要求结果或失败复盘:读 `references/reporting.md`。
|
||||
|
||||
## 全局硬规则
|
||||
|
||||
- 每次执行前必须检查环境;环境不完整记 `environment-fail`。
|
||||
- 真机、Simulator、远程 Mac 必须由用户明确选择,禁止自动 fallback。
|
||||
- Linux 本机不能安装或运行 Apple 官方 iOS Simulator;不能把 Android 模拟器或浏览器
|
||||
结果冒充 iOS 结果。
|
||||
- macOS/Xcode 是本地 iOS Simulator 和完整 iOS 真机开发测试的官方工具链。
|
||||
- 不自动申请 Apple Developer 账号、签名证书、Provisioning Profile 或设备授权。
|
||||
- 不清除真机数据、不重启真机、不修改 Apple 账号或钥匙串。
|
||||
- 结果使用 `pass/fail/environment-fail/skipped/not-run`,并区分环境阻塞与产品失败。
|
||||
|
||||
## 运行顺序
|
||||
|
||||
1. 明确目标:local-device、local-simulator、remote-mac 或 cloud-device。
|
||||
2. 检查 Xcode、Simulator runtime、设备配对/签名和项目测试配置。
|
||||
3. 只有环境通过后才构建、安装或运行测试。
|
||||
4. 采集 xcodebuild、设备/Simulator 日志和失败证据。
|
||||
5. 生成运行快照、成绩单和结果总结。
|
||||
|
||||
## 验证
|
||||
|
||||
- `pouch check ios-tester` 通过。
|
||||
- macOS Simulator 和物理设备各完成一条 readonly 测试,或在 Linux 上明确得到
|
||||
Simulator 不可用的 `environment-fail` 报告。
|
||||
@@ -0,0 +1,28 @@
|
||||
# iOS 真机路径
|
||||
|
||||
## 环境检查
|
||||
|
||||
在 macOS 上确认:
|
||||
|
||||
- 设备通过 USB 或网络连接。
|
||||
- 设备已在 Xcode/Device Hub 中配对。
|
||||
- Developer Mode 已开启。
|
||||
- Xcode 能看到设备并将其作为 run destination。
|
||||
- 项目签名、Team、Provisioning Profile 和设备支持版本完整。
|
||||
|
||||
Linux 上的 `libimobiledevice` 之类工具最多用于有限的设备识别或文件操作,不能替代
|
||||
Xcode 的完整构建、签名、安装和 XCTest 链路。没有远程 Mac 时,不把有限识别结果报告为
|
||||
完整 iOS 测试环境通过。
|
||||
|
||||
## 执行
|
||||
|
||||
- 使用项目明确提供的 `xcodebuild test` 或等价测试命令。
|
||||
- destination 必须绑定已检查的设备,不在多台设备中猜目标。
|
||||
- 安装、签名、修改设备设置属于有副作用的操作,必须明确授权。
|
||||
- 测试失败时保留 xcodebuild 日志、测试报告和设备诊断信息。
|
||||
|
||||
## 收尾
|
||||
|
||||
- 不重启、抹掉或清除真机数据。
|
||||
- 不移除配对、不修改钥匙串和签名配置。
|
||||
- 报告设备型号、系统版本、destination 和签名状态。
|
||||
@@ -0,0 +1,34 @@
|
||||
# iOS 通用环境检查
|
||||
|
||||
## 目标判定
|
||||
|
||||
先明确以下之一:
|
||||
|
||||
- `local-device`:当前 macOS 连接的 iPhone/iPad。
|
||||
- `local-simulator`:当前 macOS 的 Xcode Simulator。
|
||||
- `remote-mac`:用户提供的远程 Mac 执行命令或 CI 入口。
|
||||
- `cloud-device`:用户提供的云设备执行入口。
|
||||
|
||||
Linux 本机不是有效的 `local-simulator`。若用户要求在 Linux 本机跑 Simulator,应停止
|
||||
并记为 `environment-fail`,同时说明需要 Mac 或远程 Mac。
|
||||
|
||||
## macOS 检查
|
||||
|
||||
```bash
|
||||
xcode-select -p
|
||||
xcodebuild -version
|
||||
xcrun simctl list devices available
|
||||
```
|
||||
|
||||
还要确认:
|
||||
|
||||
- Xcode 版本与项目部署目标兼容。
|
||||
- 对应 iOS Simulator runtime 已安装。
|
||||
- workspace/project、scheme 和 destination 存在。
|
||||
- 测试所需的签名和开发团队配置存在。
|
||||
|
||||
## Linux 检查
|
||||
|
||||
Linux 只能作为测试编排端或远程执行端。不要安装所谓的“Linux iOS Simulator”,也不
|
||||
使用 Android Emulator 代替。若使用远程 Mac,检查用户提供的连接/执行入口,不在 skill
|
||||
中保存 SSH 密码、Apple 账号或云平台 token。
|
||||
@@ -0,0 +1,28 @@
|
||||
# iOS 结果报告
|
||||
|
||||
每次运行生成项目约定的运行快照和成绩单;如果项目已接入 `.pouch/tester/`,复用其
|
||||
`runs/<run-id>.yaml` 与 `.csv`,否则使用项目指定的报告目录,不覆盖已有结果。
|
||||
|
||||
对话报告格式:
|
||||
|
||||
```text
|
||||
## ios-tester 运行:完成 | 部分完成 | 阻塞
|
||||
|
||||
路径: local-device | local-simulator | remote-mac | cloud-device
|
||||
目标: 型号/系统版本/destination
|
||||
环境: 通过项;阻塞项
|
||||
计数: pass=N fail=N environment-fail=N skipped=N not-run=N
|
||||
失败: 用例或测试名称 + 一句证据
|
||||
产物: xcodebuild 日志、测试报告、截图或诊断包
|
||||
快照: <运行快照路径>
|
||||
成绩单: <成绩单路径>
|
||||
下一步: 一句话
|
||||
```
|
||||
|
||||
判定规则:
|
||||
|
||||
- 没有 Xcode、runtime、设备配对、签名或远程执行入口:`environment-fail`。
|
||||
- 产品断言或 XCTest 失败:`fail`。
|
||||
- 未授权的安装、签名或数据修改:`skipped`。
|
||||
- 失败即停后未执行的测试:`not-run`。
|
||||
- Linux 本地要求 Simulator 时,明确写出“官方 Simulator 不支持 Linux 本机运行”。
|
||||
@@ -0,0 +1,33 @@
|
||||
# iOS Simulator 路径
|
||||
|
||||
## 硬边界
|
||||
|
||||
Apple 官方 Simulator 随 Xcode 提供并运行在 Mac 上。Linux/Debian 不能本地安装官方
|
||||
iOS Simulator,因此 Linux 本机只能转发到远程 Mac、macOS CI 或云设备。
|
||||
|
||||
## macOS 环境检查
|
||||
|
||||
```bash
|
||||
xcode-select -p
|
||||
xcodebuild -version
|
||||
xcrun simctl list runtimes
|
||||
xcrun simctl list devices available
|
||||
```
|
||||
|
||||
必须存在:
|
||||
|
||||
- Xcode。
|
||||
- 与项目兼容的 iOS Simulator runtime。
|
||||
- 用户指定的设备类型和系统版本。
|
||||
- 可用的 workspace/project、scheme 和 destination。
|
||||
|
||||
若 runtime 缺失,可在用户明确要求安装时使用 Xcode 的 Components 设置或
|
||||
`xcodebuild -downloadPlatform iOS` 下载。该安装只能发生在 macOS,不属于 Debian 安装
|
||||
能力。
|
||||
|
||||
## 执行与收尾
|
||||
|
||||
- 启动并等待指定 Simulator 完成 boot。
|
||||
- 只执行目标 scheme 的测试,不将 Simulator 结果外推为真实设备硬件结论。
|
||||
- 失败时保留 xcodebuild 输出、Simulator 日志和截图/测试产物。
|
||||
- 只关闭本轮由 skill 启动且配置为临时会话的 Simulator。
|
||||
Reference in New Issue
Block a user