mcpField
T
testa

testa

ローカル
github.com開発ツール33 週間前に更新

testa について

Testaは、iOS SimulatorでアプリをテストするMCPサーバー兼コマンドラインツールです。AIエージェントや開発者向けに画面の読み取りと実際のタッチ操作を提供し、エージェントの実行をフローとして記録して、モデルなしでCIから再生できます。

主な機能

  1. 01画面を簡潔なテキストで読み取り
  2. 02タップ、入力、スワイプ、ジェスチャー操作
  3. 03シミュレーターのデバイス機能を制御
  4. 04フローファイルの記録と再生
  5. 05JUnit出力付きでCIから再生

活用シーン

  1. 01エージェントによるアプリの初期画面確認
  2. 02testIDを追加せずに画面をテスト
  3. 03フローを記録してCIで再生

MCP 対応

TestaはiOS Simulatorの画面観察と操作をMCPクライアントに提供します。`testa setup` はClaude Codeにサーバーを登録し、ほかのクライアントでは `testa mcp` を設定できます。

設定

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

mcp.json · 共通設定
{
"mcpServers": {
"valewnrt-testa": {
"command": "npx",
"args": [
"-y",
"@valewnrt/testa-mcp"
],
"env": {
"TESTA_MCP_FULL": "<TESTA_MCP_FULL>",
"TESTA_UDID": "<TESTA_UDID>"
}
}
}
}
起動コマンドnpx -y @valewnrt/testa-mcp
設定が必要な環境変数
TESTA_MCP_FULLSet to 1 to expose all 40 tools instead of the 13-tool token-lean default.
TESTA_UDIDTarget a specific simulator UDID instead of the booted one.

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

パッケージ
npm@valewnrt/testa-mcp0.2.2

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

Testa

AI エージェントに iOS アプリをテストさせましょう。

CI Xcode beta Release License: MIT

Testa を使うと、Claude Code、Codex、Cursor、その他の MCP クライアントから iOS Simulator を操作できます。画面を簡潔なテキストとして読み取り、実際のタッチイベントでタップ、入力、スワイプを行い、その結果を確認します。React Native、Expo、SwiftUI のアプリで動作し、testID を追加する必要はありません。エージェントの作業が終わったら、実行内容をフローファイルとして保存し、モデルを使わずに CI で再生できます。

iOS Simulator の横で testa tap、pinch、rotate、dragdrop、typein、tapocr、assert を実行するターミナル。各コマンドに応じてシミュレーターが動作します

インストール

Xcode 26(iOS 26 シミュレーター)を搭載した macOS が必要です。

brew tap valewnrt/testa
brew install testa
testa setup        # installs the Claude Code skill and registers the MCP server

または、ソースからビルドします:git clone https://github.com/valewnrt/testa && cd testa && ./install.sh。

エージェントを接続する

testa setup で Claude Code はすでに設定されます。その他のエージェントの場合:

codex mcp add testa -- testa mcp      # Codex
{ "mcpServers": { "testa": { "command": "testa", "args": ["mcp"] } } }

この JSON を Cursor の .cursor/mcp.json またはその他の MCP クライアント設定に追加します。 その後、エージェントに 「シミュレーターでアプリを起動し、テスト用アカウントで登録して、ウェルカム画面が表示されることを確認して」 のように依頼します。 詳しくは docs/agents.md をご覧ください。

自分で試す

Testa はシンプルな CLI なので、手動でも操作できます。

$ testa boot "iPhone 17 Pro"
$ testa install ./MyApp.app && testa launch com.example.myapp

$ testa ui
19 elements (on screen)
e2 StaticText "ready" #status @201,89
e5 Button "Tap me" #tapButton @102,171
e18 TextField #textInput =type here @201,601
…

$ testa tap "Tap me"
tapped e5 Button Tap me
-- ui changes --
~ e2 StaticText "tap:1" #status @201,89
~ e6 StaticText "count: 1" #tapCount @41,208

$ testa assert "#status" label=tap:1
PASS label tap:1

最初のコマンドでバックグラウンドデーモンが起動します(初回のみ、数秒かかります)。その後、各コマンドは約 60 ms で実行されます。

特長

  • アプリの変更は不要です。 Testa はアクセシビリティツリーを読み取り、ツリーに含まれないものはデバイス上の OCR(Apple Vision)で補います。対象にはシステムシート、キャンバス描画の画面、ゲーム、WebView が含まれます。詳細 →
  • トークン予算を考慮した設計です。 画面は要素ごとに 1 行で表され、スクリーンショットの約 1,500 トークンに対して約 200 トークンです。また、各操作の応答には変更内容だけが含まれます。ベンチマーク →
  • 一度記録すれば、CI で再生できます。 testa flow record はエージェントの操作をプレーンテキストのフローファイルに変換します。testa flow run は JUnit 出力と失敗時のアーティファクトを含めて再生します。GitHub Action も用意されています。詳細 →
  • 実際のジェスチャーとデバイス操作に対応します。 タップ、長押し、スワイプ、ドラッグ&ドロップ、ピンチ、回転、マルチタッチ、ハードウェアボタンに加え、プッシュ通知、位置情報、Face ID、ダークモード、Dynamic Type などを利用できます。
  • ローカルバイナリ 1 つで、依存関係はありません。 Testa は Apple のシミュレーターフレームワークと直接通信するため、Node、Python、WebDriver サーバーは不要です。ネットワーク通信もテレメトリーもありません。仕組み →

ステータス

Testa は 1.0 より前のバージョンで、実際の本番アプリを対象に使用されています。Apple のプライベートフレームワークに依存しているため、新しい Xcode で動作しなくなる可能性があります。そこで、週次ジョブで Xcode ベータ版に対してテストスイートを実行し、問題を早期に検出しています。Xcode 26.4 と iOS 26.4 シミュレーターで動作確認済みです。対象は iOS Simulator のみで、実機と Android には対応していません(理由)。

ドキュメント

貢献

バグ報告、Xcode 互換性に関する報告、プルリクエストを歓迎します。まず CONTRIBUTING.mdをご確認ください。質問やアイデアは Discussionsへお寄せください。変更内容は CHANGELOGに記載しています。

謝辞

Testa の HID とアクセシビリティに関する取り組みは、Meta の idb(MIT)を調査して得た知見を参考にしています。idb のコードはリンクもバンドルもしていません。 貢献してくださった皆様に感謝します。

ライセンス

MIT

コメント

MCP は初めてですか?

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

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