GitHub Copilotのエージェントモードはループです。ファイルを編集し、ターミナルコマンドを実行し、その出力を読み取り、次に何をすべきかを決定します。では、なぜあなたのAPIテストはそのループに含まれないのでしょうか?それらはGUIの裏でApidogに格納されており、誰かがクリックすることを思い出したときに実行されます。Copilotがそれらに触れることはありません。
解決策は、1つの設定ファイルです。Apidog CLIは、npmパッケージであるapidog-cliで、Apidogで構築したテストシナリオをターミナルから直接実行します。CLIがインストールされ、Copilotがその存在を認識すると、エージェントモードは、ユニットテストを実行するのと同じ方法でApidogシナリオを実行します。コマンドを発行し、終了コードを読み取り、赤色(失敗)の場合はコードを修正します。
まだCLIをインストールしていない場合は、まずそれを行ってください。AIコーディングエージェントを使用してApidog CLIをインストールする方法では、エージェントがタイピングを行うnpmインストール、ログイン、および初回実行について説明しています。この記事は、apidog --versionが数値を出力し、Apidogアカウントが認証済みであることを前提としています。
この記事の対象となるCopilot
Copilotには複数の製品があり、その名称は紛らわしく重複しています。この記事は、シェルコマンドを実行できるインターフェースについて扱っています。
主なものは、VS Codeのエージェントモードです。Copilot Chatビューを開き、モードドロップダウンをエージェントに切り替えると、複数のファイルを編集したり、ターミナルコマンドを実行したり、タスクが完了するまで反復処理を行うことができます。コマンドを実行したい場合、Copilotはコマンドを表示し、実行前に確認を求めます。この確認ステップこそが、apidog runが適合する場所です。
関連する2つのインターフェースを挙げておくと、自分がどれを使っているか分かります。Copilotコーディングエージェントは、課題を割り当てた後、GitHub Actionsで非同期に実行され、エディターで作業するのではなくプルリクエストを生成します。Copilot CLIは、別のターミナルクライアントです。どちらもコマンドを実行できますが、この記事はVS Codeのエージェントモードを対象としています。なぜなら、そこがコードを記述する場所であり、編集・テスト・修正のループが最も密接だからです。以下の設定は、同じ指示ファイルを読み取るコーディングエージェントにも機能します。Copilotがエージェント的になったときに何が変わったかのより広範な説明については、GitHub Copilotの新しいコーディングエージェントを参照してください。
この区別は重要です。なぜなら、Copilotにはプロジェクトのルールを学習するための独自の方法があり、そのメカニズムによって一時的な「テストを実行して」が、Copilotが自ら実行するようになるからです。そのメカニズムは、カスタム指示ファイルです。
ステップ1:ApidogのルールをCopilotの指示ファイルに追加する
Copilotは、リポジトリのカスタム指示を1つのファイル、つまりリポジトリのルートにある.github/copilot-instructions.mdから読み込みます。リポジトリカスタム指示に関するGitHubドキュメントによると、エージェントモード、Copilot Chat、コードレビュー、およびコーディングエージェントはすべて、これを自動的に読み込みます。これは、Claude CodeのCLAUDE.mdやCodexのAGENTS.mdのようなものと考えてください。Copilotが作業を開始する前にコンテキストに取り込む、プロジェクト指示のプレーンなMarkdownファイルです。
ファイルを作成し、短いApidogブロックを追加してください。
## API testing with the Apidog CLI
APIエンドポイントを変更する際は、タスク完了を宣言する前にApidog CLIで検証してください。以下を実行します。
apidog run -t 812345 -e 671234 -r cli
- `apidog run`は、すべてのアサーションが成功した場合は終了コード0を、いずれかの失敗があった場合は0以外の終了コードを返します。
サマリーテキストが問題ないように見えても、0以外の終了コードはテスト失敗として扱ってください。
- マシンは`apidog login`経由で既に認証されています。`--access-token`フラグを追加しないでください。また、このファイルにトークンを記述しないでください。
- 「unknown option」エラーが発生した場合は、`apidog run --help`を実行し、実際のフラグを使用してください。推測で入力しないでください。
次のステップで、-tと-eの値を実際のシナリオIDと環境IDに置き換えてください。
チャットで言及するのではなく、指示ファイルに書き込むのは、チャットに入力されたシナリオIDはセッションが終了すると消えてしまうからです。.github/copilot-instructions.mdに記述されたものは、今後はすべてのチームメイト、すべてのエージェントモードセッション、およびコーディングエージェントが開くすべてのプルリクエストに対して存在します。特定のファイルにのみルールを適用したい場合、GitHubは.github/instructions/NAME.instructions.mdでパス固有の指示もサポートしていますが、ここではリポジトリ全体に適用される単一のファイルで十分です。
ステップ2:Apidogからコマンドを取得する
apidog runコマンドを手書きする必要はありません。Apidogが生成してくれます。
Apidogでテストシナリオを開き、CI/CDタブに移動してコマンドをコピーします。これにより、正しいシナリオID (-t)、環境ID (-e)、およびレポーターフラグが完全に形成された形で提供されます。
apidog run -t 812345 -e 671234 -r cli
これらの正確なIDを、.github/copilot-instructions.mdのブロックに貼り付けてください。これらのIDが真実のソースです。Copilotと指示ファイルが矛盾する場合、CI/CDタブの情報が優先されます。フラグとレポーターの完全なセットについては、apidog runコマンドリファレンスを参照してください。
ステップ3:エージェントモードでテストを実行する
VS CodeでCopilot Chatビューを開き、モードドロップダウンをAgentに切り替えます。エージェントモードは起動時に.github/copilot-instructions.mdを読み込むため、CLIが存在することを既に認識しています。APIに影響を与える変更を加えるか、直接質問してください。
Apidog APIテストシナリオを実行して結果を教えてください。
Copilotは、指示ファイルからapidog runコマンドを発行します。エージェントモードはターミナルコマンドをサイレントに実行せず、コマンドを表示し、実行前に確認を求めます。そのため、何が実行されようとしているかを正確に確認できます。承認してください。-r cliレポーターは、統合ターミナルにステップバイステップの結果と概要を直接出力し、各リクエストとアサーションが実行される様子をリアルタイムで確認できます。
あなたが確認したいのは、実行されていることと、Copilotが概要と終了コードの両方を報告していることの2点です。一度コマンドを承認すると、VS Codeはそのコマンドに対する選択をワークスペースで記憶するため、その後のapidog runの呼び出しは再プロンプトなしで実行されます。ステージングに対する読み取り専用のテストシナリオは、許可しても問題ない安全なワークスペース内コマンドの典型です。
ステップ4:Copilot内でレポートを読む
実行が失敗した場合、レポートがその原因を示します。-r cliを使用すると、Copilotはターミナルで読みやすい内訳を取得します。各リクエスト、各アサーション、そして期待値と実際値で何が失敗したかが示されます。失敗したアサーションは、正確なフィールドまたはステータスコードを特定し、これは通常、Copilotが次のイテレーションで修正を見つけるのに十分です。
ブラウザで開いたり、チームメイトに渡したりできるレポートが必要な場合は、HTMLレポーターを追加してください。
apidog run -t 812345 -e 671234 -r cli,html
htmlレポーターは、自己完結型のファイルを./apidog-reportsに書き込みます。Copilotが次のステップを決定するために読み取るインライン出力を引き続き取得できるよう、リストにcliを残しておいてください。JUnit出力を含むすべてのレポーター形式(CIダッシュボードで解析されるものも含む)については、Apidog CLI完全ガイドとApidog CLIテストレポートの読み方を参照してください。
Copilot自身のループ内でのテスト
重要なのは、あなたが要求するのをやめ、指示ファイルがそうするようにCopilotに指示したために、Copilotが独自にシナリオを実行したときに何が起こるかです。
エージェントモードが、チェックアウト応答を構築するハンドラを編集している状況を想像してください。そのループは変化します。コードを編集した後、成功を宣言するのではなく、ステージング環境に対してApidogシナリオを実行し、終了コードを読み取ってそれに基づいて行動します。成功(緑)すれば、次に進みます。失敗(赤)すれば、レポートを開き、どのアサーションが失敗したか(ステータスコード、欠落フィールド、誤った値)を読み取り、修正を試み、再実行します。APIテストは、Copilotが既にユニットテストを実行しているのと同じ編集・テスト・修正ループの一部となります。あなたは1つの指示を記述しただけで、Copilotはそのコマンドを既存の動作に組み込みました。
これは、あらゆるエージェントワークフローを安全にする「委任と検証」モデルです。Copilotがコマンドを実行して結果を読み取り、あなたはApidogで引き続きシナリオを視覚的に作成し、エージェントが終了コードを正直に読み取っていることを随時確認します。より広範なパターンについては、APIテストにAIエージェントを使用する方法とApidog AIテストハーネスを参照してください。
Copilotが実際にCLIを実行していることを確認する
エージェントは、実際には達成していない成功を報告することがあり、Copilotも例外ではありません。問題を検出する頻度が高い順に3つのチェックを行います。
まず、コマンドが実際に実行されたかどうかを確認します。エージェントモードは、実行したコマンドとその出力をターミナルにインラインで表示します。文字通りのapidog run ...という行と、その下の結果を探してください。Copilotがテストを実行したと言っても、コマンドが見当たらない場合、それは実行していないことを要約したにすぎません。もう一度実行して、生の出力を表示するように依頼してください。
次に、重要な終了コードを確認します。
そのapidog runコマンドの終了コードは何でしたか?
apidog runは、すべてのアサーションが成功した場合は0で終了し、何か失敗した場合は0以外の値で終了します。この単一の動作により、Copilotやパイプラインは実行を明確なゲートとして扱うことができます。Copilotの文章が「テストに合格した」と述べていても終了コードが0以外の場合、終了コードが正しいです。
第三に、実際のシナリオが使用されたことを確認します。「scenario not found」で実行が失敗した場合、CopilotがIDをでっち上げたか、間違って記憶した可能性があります。指示ファイルとApidogがCI/CDタブで生成したコマンドに対して、-tと-eの値を再確認してください。ApidogからのIDが真実です。
オプション:Apidog MCPサーバーを接続する
指示ファイルからapidog runを実行するだけで、必要なことのほとんどはカバーされます。さらに一歩進めるには、Apidog MCPサーバーを接続します。
VS Codeのエージェントモードは、MCPでCopilotを拡張するGitHubドキュメントに従い、リポジトリルートにあるワークスペースの.vscode/mcp.jsonファイルからMCPサーバーを読み込みます。Apidog MCPサーバーは、MCPを介してAPI仕様を公開するため、Copilotはコードを書いている最中にスキーマを読み取ることができ、事後に確認するだけではありません。役割分担は明確です。CLIがテストを実行し、MCPがエージェントに仕様を提供します。
代わりにGitHub ActionsでCopilotコーディングエージェントを実行する場合、そのMCP設定は別の場所にあります。リポジトリの「Settings」の「Copilot」セクションの「Cloud agent」の下にJSONとして追加し、秘密情報があればCOPILOT_MCP_というプレフィックスを付けたActionsシークレットとして保存します。.vscode/mcp.jsonファイルは、エディターでのエージェントモード用です。
Copilotが間違った場合
セットアップ中にいくつかの失敗が頻繁に発生します。
指示ファイルを無視する。Copilotが汎用コマンドを実行したり、何も実行しなかったりする場合、ファイルが読み込まれていない可能性があります。ファイル名が正確に.github/copilot-instructions.mdであること、リポジトリルートの.githubディレクトリにあること、VS Codeの設定でカスタム指示が有効になっていることを確認してください。パスが間違っていると、Copilotは決してそれを読み込みません。
アクセストークンを渡してしまう。Copilotが--access-tokenを追加しようとする場合、それは公開されている例から推測しているだけです。マシンはapidog login経由で認証済みであるため、ブロックにはそうしないよう既に指示されています。その行を強調し、指示ファイルに実際のトークンを絶対に入れないでください。認証モデルについては、Apidog CLIの認証を参照してください。
フラグをでっち上げる。「unknown option」エラーは、Copilotがあなたのバージョンには存在しないフラグを推測したことを意味します。apidog run --helpを実行させ、そこから正確なフラグをコピーするよう指示してください。これは、インストールされているバージョンに対して常に正しいです。
失敗した実行を成功として報告する。これが最もコストのかかる問題であり、終了コードのルールが指示ファイルと検証ステップの両方に含まれている理由です。概要と終了コードが一致しない場合、終了コードが優先されます。
日常的なエージェントからテスト済みのループへ
これが設定です。インストールガイドに従って一度apidog-cliをインストールし、リポジトリの.github/copilot-instructions.mdに短いApidogブロックを追加すると、Copilotは、コードを編集するために既に使っているのと同じループ内で、APIテストを実行し、その結果を読み取る方法を認識します。壊れたエンドポイントは、Copilotが変更作業中に捕捉され、デプロイ後に発見されることはありません。
GUIの裏にあるテストは、人間がクリックしたときに実行されます。一方、一行コマンドはCopilotが決定したときにいつでも実行されます。あなたはApidogでシナリオを視覚的に構築し続け、あなたのエージェントはあなたが監視していない場所でそれらを実行します。Apidogをダウンロードし、1つのシナリオを構築し、そのapidog runコマンドを.github/copilot-instructions.mdに記述して、次の変更でCopilotがそれを認識するのを見てください。Copilotがいないパイプラインで同じコマンドを実行する準備が整ったら、GitHub ActionsでのApidog CLIがシークレット、レポーター、および終了コードによるゲート処理について説明しています。
