mcpField
T
testdelta

testdelta

ローカル
github.com/CloudCorpRecords開発ツール06 日前に更新

testdelta について

testdeltaは、ベースとヘッドの名前付きテスト結果を比較するCLIおよびMCPサーバーです。件数だけでなく、テスト名ごとにリグレッション、修正、追加、削除などの状態変化を特定します。

主な機能

  1. 01名前付きのベース・ヘッド結果の比較
  2. 02リグレッション、修正、追加、削除の分類
  3. 03未変更および継続失敗テストの報告
  4. 04カテゴリ別の決定的な名前順ソート
  5. 05人間向けおよびJSONレポートの出力

活用シーン

  1. 01リビジョン間のテスト変更の確認
  2. 02CI結果ファイルからのリグレッション特定
  3. 03削除または新規失敗テストの名前別追跡

MCP 対応

stdioのMCPサーバーは`diff_test_results`を公開します。結果ディレクトリまたはファイルを受け取り、完全なJSONレポートを返します。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"cloudcorprecords-testdelta": {
"command": "npx",
"args": [
"-y",
"@reneturcios/testdelta"
]
}
}
}
起動コマンドnpx -y @reneturcios/testdelta

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
npm@reneturcios/testdelta0.1.0
ocighcr.io/cloudcorprecords/testdelta:0.1.0

ツール

1

掲載時のツール一覧 · 6 日前に更新

パラメーター型必須説明
pathstringはい確認する対象パス

詳細

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つだけです。差分を取る前に、その他のランナーの結果をこのいずれかに対応付けてください。

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。