testdelta について
testdeltaは、ベースとヘッドの名前付きテスト結果を比較するCLIおよびMCPサーバーです。件数だけでなく、テスト名ごとにリグレッション、修正、追加、削除などの状態変化を特定します。
主な機能
- 01名前付きのベース・ヘッド結果の比較
- 02リグレッション、修正、追加、削除の分類
- 03未変更および継続失敗テストの報告
- 04カテゴリ別の決定的な名前順ソート
- 05人間向けおよびJSONレポートの出力
活用シーン
- 01リビジョン間のテスト変更の確認
- 02CI結果ファイルからのリグレッション特定
- 03削除または新規失敗テストの名前別追跡
MCP 対応
stdioのMCPサーバーは`diff_test_results`を公開します。結果ディレクトリまたはファイルを受け取り、完全なJSONレポートを返します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
1掲載時のツール一覧 · 6 日前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| path | string | はい | 確認する対象パス |
詳細
testdelta
名前付きの2つのテスト結果セットを比較し、リグレッション、修正、追加、削除されたテストを正確に報告します。名前を示さずに件数だけを報告することはありません。人が読むレポートでは、各カテゴリに該当するテスト名がすべて記載されます。
機能
testdelta は、ベースの結果セットとヘッドの結果セットを比較します。各セットでは、テスト名に次の3つのステータスのいずれかが割り当てられています。pass、fail、skip。この2つのセットから、以下を算出します。
- リグレッション:ベースで
passまたはskip、ヘッドでfailになったテスト。 - 修正:ベースで
fail、ヘッドでpassになったテスト。 - 追加:ヘッドにのみ存在するテストと、そのヘッドでのステータス。
- 削除:ベースにのみ存在するテストと、そのベースでのステータス。
- 失敗継続:両方のセットで
failのテスト。 - 変更なし:両方に存在し、ステータスが同じテスト。ただし、両方で
failのものを除きます。 - その他の変更:両方に存在し、リグレッションにも修正にも該当しない形でステータスが変化したテスト。たとえば、
passからskipへの変更です。
各カテゴリ内のテスト名はアルファベット順に並び、出力は決定的です。タイムスタンプもランダムな順序もありません。
検出結果では、人が最初に確認すべきカテゴリが強調されます。
- リグレッションごとに
highの検出結果を1件(ルールREGRESSION、base=pass head=failなどの証拠)。 - 修正ごとに
infoの検出結果を1件(ルールFIXED)。 - 削除されたテストのうち、合格していたものごとに
mediumの検出結果を1件(ルールREMOVED-PASSING)。 - 失敗している追加テストごとに
lowの検出結果を1件(ルールADDED-FAILING)。
入力形式
base.json と head.json を含むディレクトリ
2つのファイルを含むディレクトリを testdelta に指定します。
base.json:
{
"test-login": "pass",
"test-checkout": "pass",
"test-search": "fail"
}
head.json:
{
"test-login": "fail",
"test-checkout": "pass",
"test-search": "pass"
}
この例では、test-login はリグレッション、test-search は修正です。
base と head のオブジェクトを含む単一ファイル
1つの JSON ファイルに両方のセットを含めることができます。
{
"base": {
"test-login": "pass",
"test-search": "fail"
},
"head": {
"test-login": "fail",
"test-search": "pass"
}
}
ファイルの欠落、base または head オブジェクトの欠落、不正な JSON、pass、fail、skip 以外のステータス値はエラーです。CLI はエラーを報告し、コード 2 で終了します。
インストール
npx @reneturcios/testdelta diff ./results
または、グローバルにインストールします。
npm install -g @reneturcios/testdelta
CLI の使い方
# Human readable report (default target is the current directory)
testdelta diff [path]
# Machine readable JSON report
testdelta diff [path] --json
# Run as an MCP server over stdio
testdelta mcp
# Print the version
testdelta --version
終了コード:
0:判定結果はNO-REGRESSIONです。1:判定結果はREGRESSEDです。2:入力の欠落や無効な入力を含む、使用方法のエラーです。141:読み取り側が出力パイプを早期に閉じました(シェル上で SIGPIPE と同等の動作です)。
人が読むレポートでは、各カテゴリに最大50件のテスト名が記載されます。カテゴリの件数がそれを超える場合、リストの末尾に and N more の行が明示的に追加され、残りが黙って切り捨てられることはありません。JSON レポートには、検出結果の完全なリストが常に含まれます。
MCP ツール
MCP サーバーは、次の1つのツールを公開します。
diff_test_results
- 入力:対象のディレクトリまたは単一の結果ファイルを指定する
path。 - 出力:判定結果、各カテゴリの件数、検出結果、および件数と最初のリグレッション名を示す概要を含む、完全な JSON レポート。
判定ルール
REGRESSED:リグレッションが1件以上ある場合。つまり、ベースでpassまたはskipだったテストが、ヘッドでfailになった場合です。NO-REGRESSION:リグレッションがない場合。失敗している追加テスト、削除されたテスト、ベースですでに失敗していたテストは、それだけでは判定結果に影響しません。これらは検出結果と件数として報告されるため、人が判断できます。
制限事項
- testdelta が処理するのは結果ファイルです。テストの実行や、
pass、fail、skipの値自体の生成は行いません。まずテストランナーまたは CI ジョブが結果セットを書き出す必要があります。 - テスト名の照合には、文字列の完全一致を使用します。名前が変更されたテストは変更としてではなく、削除されたテスト1件と追加されたテスト1件として扱われます。
- 対応しているステータスは
pass、fail、skipの3つだけです。差分を取る前に、その他のランナーの結果をこのいずれかに対応付けてください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。