关于 cherry-pr-test
cherry-pr-test 是 Cherry Studio 的有限范围 PR 测试技能,供开发者检查指定 PR 的代码和界面行为。它结合静态分析、Electron 交互测试及受控清理,并要求先展示报告再决定是否发布。
主要功能
- 01检查 PR 变更和相关说明
- 02运行 pnpm typecheck 静态分析
- 03通过 CDP 进行界面交互测试
- 04隔离并记录临时 Electron 实例
- 05恢复分支并生成测试报告
适用场景
- 01验证 PR 中修改的界面行为
- 02检查类型和代码规范问题
- 03测试交互状态及持久化结果
- 04整理报告供后续审阅
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ cherryhq/ cherry-studio --skill cherry-pr-test安装后在 Claude Code 中输入/cherry-pr-test确认已加载。
详细介绍
Cherry Studio PR 测试
使用此工作流进行有边界的 PR 测试。对于当前检出代码中的持续实现或调试,请使用 cherry-electron-dev。
前提条件与安全
- 需要已认证的
gh、pnpm以及已安装的项目依赖。 - 使用 Playwright/CDP 或可选的
agent-browser进行 UI 控制。 - 在操作 Electron 之前,请阅读
Electron 实例管理
并选择其
ephemeral策略。 - 将该参考文档视为发现、目标选择、 启动、替换、关闭、跟踪和故障排查的唯一权威依据。
- 绝不要丢弃本地更改。如果检出会覆盖它们,请停止并询问。
- 在将报告发布到任何地方之前,先展示它。
$ARGUMENTS 可能包含 PR 编号、PR URL、latest/recent,或不包含任何内容。
工作流
1. 解析并检查 PR
如果未指定 PR,请列出最近的 PR 并让用户选择,除非他们 请求了最新的:
gh pr list --repo CherryHQ/cherry-studio --state open --limit 10 \
--json number,title,author,createdAt,headRefName,changedFiles
记录当前分支以便恢复,检查该 PR,然后检出它:
git status --short
git branch --show-current
gh pr view <NUMBER> --json title,body,author,headRefName,files
gh pr checkout <NUMBER>
阅读更改的文件及附近的说明。记录确切的已检出 HEAD。
2. 分析并启动应用
当两者可以独立进行时,在应用启动的同时运行静态分析。
对于静态分析:
pnpm typecheck
同时检查:
- 被阻止或已弃用的 v1/v2-refactor 文件
- 硬编码的用户可见字符串而非 i18n
console.log而非loggerService- 新公共接口上缺少类型
对于 Electron:
- 使用共享参考文档验证现有实例。
- 仅复用来自此工作区且记录的启动 HEAD 等于 已检出 PR HEAD 的实例。
- 复用一个实例时,将其标记为借用,并保留其现有策略和 归属。绝不要将持久实例重新分类为 ephemeral。
- 否则,仅优雅地替换已验证的同一工作区实例。
- 启动一个
ephemeral、Agent 拥有的实例,使用隔离的CS_DEV_USER_DATA_SUFFIX,例如PR-<NUMBER>。 - 将其托管的终端/会话、PID、端口、日志、确切目标和
pr-test:<NUMBER>启动用途保存在instance.json中。
不要使用宽泛的进程或端口清理。
3. 运行交互测试
将控制器绑定到共享参考文档返回的确切目标。 绝不要导航到猜测的根 URL 或按索引选择目标。
根据 PR 描述和更改的文件构建测试用例:
- 捕获初始状态。
- 使用可用的 CDP 控制器检查交互元素。
- 演练更改后的行为。
- 捕获结果并验证相关的持久化状态。
- 重复该更改所证明合理的边界情况。
仅在范围内时考虑 UI 渲染、交互、持久化、浅色/深色主题、相关的 窗口大小、i18n、空状态和快速交互。
将截图和报告存储在 /tmp/pr-<NUMBER>/ 下:
mkdir -p /tmp/pr-<NUMBER>
如果隔离的配置文件显示迁移向导或启动画面,请遵循共享的 故障排查指南和启动日志。不要重置或强制关闭数据。
4. 清理并恢复
使用共享的 ephemeral 完成流程。仅停止由
此 PR 测试工作流启动的实例,其已验证记录保持为 ephemeral、Agent 拥有
且范围为 pr-test:<NUMBER>。让每个借用的实例继续运行。不要
停止无关的工作区或打包应用。
恢复在检出之前记录的分支。如果它不再存在,请解析 仓库默认分支并在切换前报告回退:
git checkout <ORIGINAL_BRANCH>
5. 报告
保存 /tmp/pr-<NUMBER>/report.md 并向用户展示。让报告
语言与用户的语言一致;模板使用英文标签:
# PR #<NUMBER> Test Report
**Title**: <title>
**Author**: @<author>
**Branch**: <branch>
**Changed files**: <count>
## Static Analysis
| Check | Result | Notes |
| --- | --- | --- |
| TypeScript typecheck | ✅/❌ | ... |
| Blocked-file check | ✅/⚠️ | ... |
| Logging, i18n, and types | ✅/❌ | ... |
## UI Tests
### <Test Case>
<scenario, evidence, and result>

## Findings
<findings or none>
## Conclusion
- Total findings: N
- Recommendation: APPROVE / REQUEST_CHANGES / COMMENT
除非用户明确要求,否则不要发布报告或提交 GitHub 审查。