mcpField
C
cherry-pr-test

cherry-pr-test

github.com/cherryhq测试与质量53.1k36 次安装今天更新
代码仓库

关于 cherry-pr-test

cherry-pr-test 是 Cherry Studio 的有限范围 PR 测试技能,供开发者检查指定 PR 的代码和界面行为。它结合静态分析、Electron 交互测试及受控清理,并要求先展示报告再决定是否发布。

主要功能

  1. 01检查 PR 变更和相关说明
  2. 02运行 pnpm typecheck 静态分析
  3. 03通过 CDP 进行界面交互测试
  4. 04隔离并记录临时 Electron 实例
  5. 05恢复分支并生成测试报告

适用场景

  1. 01验证 PR 中修改的界面行为
  2. 02检查类型和代码规范问题
  3. 03测试交互状态及持久化结果
  4. 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:

  1. 使用共享参考文档验证现有实例。
  2. 仅复用来自此工作区且记录的启动 HEAD 等于 已检出 PR HEAD 的实例。
  3. 复用一个实例时,将其标记为借用,并保留其现有策略和 归属。绝不要将持久实例重新分类为 ephemeral。
  4. 否则,仅优雅地替换已验证的同一工作区实例。
  5. 启动一个 ephemeral、Agent 拥有的实例,使用隔离的 CS_DEV_USER_DATA_SUFFIX,例如 PR-<NUMBER>。
  6. 将其托管的终端/会话、PID、端口、日志、确切目标和 pr-test:<NUMBER> 启动用途保存在 instance.json 中。

不要使用宽泛的进程或端口清理。

3. 运行交互测试

将控制器绑定到共享参考文档返回的确切目标。 绝不要导航到猜测的根 URL 或按索引选择目标。

根据 PR 描述和更改的文件构建测试用例:

  1. 捕获初始状态。
  2. 使用可用的 CDP 控制器检查交互元素。
  3. 演练更改后的行为。
  4. 捕获结果并验证相关的持久化状态。
  5. 重复该更改所证明合理的边界情况。

仅在范围内时考虑 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>

![screenshot](<filename>.png)

## Findings

<findings or none>

## Conclusion

- Total findings: N
- Recommendation: APPROVE / REQUEST_CHANGES / COMMENT

除非用户明确要求,否则不要发布报告或提交 GitHub 审查。

评论

支持 Markdown