TestTrout
TestTrout
AI製アプリのためのテストアシスタント。
アプリとして実行するか、MCP経由でコーディングエージェントに渡すか。 どちらの方法でも、あなたのアプリがこれまで持っていなかったテストを作成し、それらが壊れたときに知らせてくれます。
マスは指標種です。清潔で酸素が豊富な水にしか生息しません——川でマスを見つけたら、自分で水質を検査しなくても、その水が健康だとわかります。
優れたテストスイートとは、まさにそういうものです。雑務ではなく、ひと目で読み取れるシグナルなのです。
問題
コーディングエージェントは速く成果を出します。しかし、静かに物事を壊すこともあります。そして、彼らが作るアプリ——Lovable、v0、Bolt、Vercel上の手書きReact——には、ほぼ例外なくテストがありません。そのため、開発ループは、コードを書いた当の本人からの「良さそうに見える」という言葉で終わってしまいます。
TestTroutはそのループを閉じます。リポジトリを読み、実行中のデプロイメントに接続し、何が未テストで、どの順序で重要かを把握し、本物のテストを作成し、実行し、実際に行動に移せる結果を報告します。
Related MCP server: Lastest
起動方法
pip install testtrout
trout upこれだけで、ストレージ、バックグラウンドワーカー、そしてlocalhost:7411のインターフェースがすべて起動します。Dockerもデーモンも、インストールするデータベースも不要です——ストレージは~/.testtrout配下のSQLiteで、ワーカーはプロセス内で動作します。
次に、インターフェースまたはターミナルからリポジトリをリンクします:
trout link ~/code/my-app # a folder you already have
trout link --github owner/name # cloned with your GitHub tokenローカルフォルダをリンクしても、そのフォルダが変更されることは決してありません。スキャンが自動的に開始され、Setupタブにすべての設定があります: デプロイメント、Supabase、テストアカウント、モデルプロバイダー。
これを安全かつ有用にしているのは、次の2つの点です:
アプリが必要とする認証情報を教えてくれます——ソースコードを読むことで、どの変数にアクセスしているか、それぞれが何に使われる可能性が高いか、そしてそれが現れる行を発見します。コードがすでに明示していることを、改めて導出する必要はありません。
認証情報が部分的なら、テストスイートも部分的です。 URLだけあれば、APIテストをプローブして実行できます。anonキーと2つ目のアカウントを追加すれば、認可テストが可能になります。ブロックされた各機能は、次に必要な単一のものを名前で示します。「適切に設定してください」とは決して言いません。
シークレット値はgitignoreされた.envに書き込まれます。コミットされる設定にはenv:NAME参照のみが保持され、設定フィールドにリテラルのシークレットを入力すると拒否されます。
またはコーディングエージェントに任せる
アプリは1つの入り口であり、唯一の方法ではありません。アプリが行うすべてのことは、型付きMCPツールおよびCLIコマンドとして利用できるため、エディタを離れたくない人も離れる必要がありません:
pip install 'testtrout[mcp]'
trout mcp /path/to/your/projectエージェントを.claude/skills/のスキルに向けるか、次のように指示します:
TestTrout MCPサーバーを使用してください。リポジトリをスキャンし、重要度順に未テストのものを表示し、上位5件のテストをドラフトして実行してください。
1つのプロジェクトにバインドされた13のツールにより、エージェントが誤ったリポジトリに対して操作することはありません:
| コードベースを理解します。APIキーもネットワークも不要です。 |
| デプロイされたアプリが実際に何をするかを、実際のブラウザで確認します。 |
| 未テストのものをランク付けし、その理由を説明します。 |
| ドラフト、レビュー、実際のテストファイルへのコンパイル。 |
| 実行、決定性の証明、エビデンスの読み取り。 |
| 何が不足しているか、そしてそれをどう修正するか。 |
さらに、trout://surfaces、trout://intent、trout://config、trout://scenariosをリソースとして提供するため、大量の状態がエージェントのコンテキストウィンドウを圧迫することはありません。
理解できるもの
trout scanは完全に決定論的です——モデルもネットワークも不要で、クローンしたばかりのリポジトリでも安全です。典型的なSupabaseアプリでは、以下を見つけ出します:
Surface | Example |
画面 |
|
データ操作 |
|
RLSポリシー |
|
サーバーアクション |
|
ルートハンドラー |
|
サードパーティ | Stripe、Resend — 置換境界 |
スキーマ | テーブル、カラム、外部キー、RLSステータス |
また、行レベルセキュリティなしでブラウザコードからテーブルに書き込みが行われている場合も通知します——つまり、anonキーを通じて誰でも書き込める状態です。これは通常、新しい発見です。
テストが信頼に値する理由
PRごとの推測ではなく、ベースラインを構築します。 変更したばかりのコードから導出されたテストは、構造上、新しい動作が正しいことを主張するだけです——リグレッションを検出することはできません。TestTroutはまず動作しているデプロイメントに対してスイートを認定するため、失敗には意味があります。
決定論的なコア、エッジにモデル。 スキャン、ランキング、実行、失敗の分類は決してモデルを呼び出しません。モデルは、意図の解釈、文言の調整、およびアサートする観測要素の選択のみを行います。すべてのランキングは、名前付きの貢献の合計です:
critical authorization A user cannot read another user's rows in payments 100
· critical surface
· policy: exists (select 1 from orders o where o.id = payments.order_id …)すべてのアサーションには出自があります。 ポリシーからのderived、実際のブラウザでのobserved、またはモデルによるinferred——そしてinferred単独では、何かをブロックすることは決してできません。
失敗は報告される前に分類されます。 製品シグナルとなるのはassertion_failureのみです。認証失敗、到達不能なデータベース、ブロックされたサードパーティ呼び出しはハーネスに関するものであり、決定的でない実行がパスに昇格することは決してありません。
すべてターミナルから
trout scan # understand the code
trout init # connect a deployment
trout gaps # what's missing, ranked, with reasons
trout run # execute, with evidence behind every resultすべてのコマンドが--jsonをサポートしています。完全なチュートリアルはdocs/setup.mdにあります。
保存方法
テストスイートはリポジトリ内に残り、コミットされ、レビュー可能です:
.trout/scenarios/*.yaml what each test asserts, in plain language
.trout/config.yaml deployments and env: references, never secrets
tests/trout/ generated Playwright and Vitest files実行履歴、経時的なカバレッジ、ジョブキューは~/.testtrout配下のSQLiteに保存されます。この分割は意図的です: スイートはプルリクエストでレビューできるようコードの隣に置かれ、ファイルでは答えられない質問——このテストはフレーキーになっていないか、カバレッジは上がっているか——はデータベースに置かれます。
オプションのWebビュー
trout webひと目でわかるカバレッジ、ランク付けされたギャップリスト、シナリオレビュー、エビデンス付きの実行履歴、ライブログ。CLIと同じ.trout/ファイルを使用——データベースなし、ホスティングなし、ループバックのみ。完全にオプションです。CLIとMCPは単独で完結しています。
安全性
このツールはデータベース認証情報を必要とし、デプロイメントを操作できるため、保証は文書化ではなくコードで強制されています:
本番環境はデフォルトで読み取り専用です。 変更を伴うリクエストは、エントリポイントが明示的に
disposableとマークされていない限り、ネットワーク層でブロックされます。このガードはナビゲーションの下にあります。なぜなら「ページを読み込むだけが読み取り専用」というのは誤りだからです——これらのアプリの多くはマウント時に書き込みを行います。エージェントも、Webクリックも、その設定を変更できません。サードパーティはインターセプトされます。 テスト実行でカードに請求したり、顧客にメールを送信したりすることはできません。一致しない送信リクエストは明示的に失敗します。何も一致しないモックが静かに成功するのは、何もテストせずにスイートがグリーンを報告する方法です。
シークレットはコミットされたファイルに残りません。
.trout/config.yamlにはenv:参照のみが保持されます。値はgitignoreされた.envに置かれます。ホスティングはありません。 選択したモデルプロバイダーへの呼び出し以外、何もマシンから出て行きません。テレメトリもありません。
モデルプロバイダー
Anthropic、OpenAI、またはKimi——あるいはbase_urlによる任意のOpenAI互換エンドポイント。
model:
provider: anthropic
api_key: env:ANTHROPIC_API_KEY分析は決してモデルを呼び出さないため、trout scan、trout gaps、trout runはすべてキーなしで動作します。
サポート対象スタック
React + Vite (Lovable、v0、Bolt) とNext.js App Router、TypeScript、Supabaseを使用し、HTTPで到達可能な任意の場所にデプロイされています。認証はSupabase、Clerk、またはNextAuth経由。
意図的に狭くしています。1つのスタックでの深さは、多くのスタックでの浅いカバレッジに勝ります——そしてこれらのコードベースは十分に規則的であるため、静的解析がそれらに対して真に正確です。他のスタックはアダプター1つで対応できます: docs/adapters.mdを参照してください。
ロードマップ
✅ | リポジトリ分析、デプロイメントプロービング、ギャップランキング |
✅ | シナリオ作成、生成、実行、認定 |
✅ | MCPサーバー、CLI、ストレージとワーカーを備えたローカルアプリ |
✅ | 変更ベースのテスト選択、ベースブランチ差分 |
✅ | マルチリポジトリ: ローカルフォルダのリンクまたはGitHubトークンでのクローン |
✅ | インターフェースまたはCLIからの完全な設定、認証情報の検出付き |
🔜 | GitHubプルリクエストチェック |
🔜 | 観測カバレッジインデックス (現在の選択は宣言カバレッジを使用) |
コントリビューション
フレームワーク、認証プロバイダー、またはテストランナーを追加するには、1つのプロトコルを実装してエントリポイントを登録するだけです——フォークは不要です。CONTRIBUTING.mdとdocs/adapters.mdを参照してください。
完全なテストスイートはAPIキーなしでオフラインで実行されます。これは意図的であり、維持する価値があります。
ライセンス
Apache 2.0
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceAn AI-powered MCP server that automates web testing workflows by enabling recording, execution, and discovery of tests through natural language prompts.68Apache 2.0
- FlicenseNot gradedqualityAmaintenanceMCP serverr for Lastest to manage your tests, AI create them, run them, and speed up AI-development.16
- AlicenseAqualityAmaintenanceAn MCP server that brings senior-QA discipline to AI coding assistants, enabling test planning, TDD, mutation testing, and code review.486Apache 2.0
- AlicenseBqualityAmaintenanceAn MCP server for validating AI-generated code through automated browser testing, evidence collection, and intelligent diagnostics.100118MIT
Related MCP Connectors
Official MCP server for Qase — manage test cases, runs, suites, defects via AI tools.
MCP server for generating rough-draft project plans from natural-language prompts.
Conformance checker for MCP servers. Free, no key, verdicts recomputable and re-measured daily.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/DrDroidLab/TestTrout'
If you have feedback or need assistance with the MCP directory API, please join our Discord server