mcpField
C
cherry-pr-test

cherry-pr-test

github.com/cherryhqテスト・品質53.1k36 回インストール今日更新
リポジトリ

cherry-pr-test について

cherry-pr-test は Cherry Studio の開発者向けに、対象を限定して PR をテストするスキルです。コード確認、静的解析、Electron の操作テストを行い、インスタンスを管理してレポートを作成します。

主な機能

  1. 01PR の変更内容と指示を確認
  2. 02pnpm typecheck による静的解析
  3. 03CDP を使った UI 操作テスト
  4. 04一時 Electron インスタンスの分離と記録
  5. 05ブランチ復元とテストレポート作成

活用シーン

  1. 01PR で変更された UI 動作の検証
  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、およびインストール済みのプロジェクト依存関係が必要です。
  • UI 操作には Playwright/CDP またはオプションの agent-browser を使用します。
  • 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 ではなくハードコードされたユーザーに表示される文字列
  • loggerService ではなく console.log
  • 新しいパブリックインターフェースにおける型の欠落

Electron の場合:

  1. 共有リファレンスを使用して、既存のインスタンスを確認します。
  2. このワークスペースのインスタンスのうち、記録された起動 HEAD がチェックアウトされた PR HEAD と等しいもののみを再利用します。
  3. 再利用する場合は、それを借用としてマークし、既存のポリシーと所有権を保持します。永続インスタンスを ephemeral として再分類しないでください。
  4. それ以外の場合は、検証済みの同一ワークスペースのインスタンスのみを穏当に置き換えます。
  5. 分離された CS_DEV_USER_DATA_SUFFIX(たとえば PR-<NUMBER>)を指定して、ephemeral でエージェントが所有するインスタンスを起動します。
  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、エージェント所有、かつ 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 レビューを送信したりしないでください。

コメント