コーディングエージェントで iOS アプリをテストする
英語から自動翻訳されています。
英語で読むコーディングエージェントは、人と同じ方法でアプリのサインアップをテストできます。アプリをビルドし、iOS Simulator で実行し、Proxy Mail QA のテスト用アドレスでフォームに入力してから、メールのコードを入力するかリンクを開きます。Proxy Mail QA はエージェントにアドレスとメールのコードやリンクを渡し、シミュレーターはエージェント自身のツールで操作します。
以下のどの設定も、まず Proxy Mail QA をエージェントに接続します。1 つのプロンプトで設定 を貼り付けるか、MCP server を手動で接続してください。
自分のアプリでエージェントを使う前に試すには、iOS サンプル を使います。メールによるアクティベーションがあり、サーバーのない小さなサインアップです。アクティベーションメールは自分のメールアカウントから自分で送り、エージェントは Proxy Mail QA からコードを取得します。
Claude Code Desktop の iOS Simulator ペイン
Section titled “Claude Code Desktop の iOS Simulator ペイン”Mac の Claude Code Desktop では、会話の横のシミュレーターでアプリを実行し、操作して画面を読み取れます(Anthropic のガイド)。iOS プラットフォームをインストールした Xcode が必要です。また、各シミュレーターについて一度 Claude の使用を許可します。
Proxy Mail QA を接続した Claude Code Desktop のセッションで iOS プロジェクトを開き、次のように依頼します。
アプリをビルドしてシミュレーターで実行してください。新しい Proxy Mail QA のテスト用アドレスと、発行されたパスワードでサインアップし、メールの確認コードを入力して、アプリでアカウントが確認済みと表示されることを確認してください。
Claude は次のことを行います。
- アプリをビルドし、シミュレーターで起動します。
password: trueを指定してcreate_addressを呼び出し、新しいアドレスとパスワードを取得します。- サインアップフォームをタップして入力します。
wait_for_code(またはwait_for_link)を呼び出し、メールのコードまたはリンクを取得します。- コードを入力するか、シミュレーターでリンクを開いてアプリに処理させます。リンクを開く操作は、セッションの権限モードに従います。
アプリを開くはずのリンクの場合は、そのリンクを指定して依頼します(「メールの確認リンクをアプリで開いて」)。メールに Web リンクとアプリリンク(myapp://…)の両方がある場合は、Web リンクが先に来ます。app: true(または REST API の app=true)を指定した wait_for_link でアプリのリンクを取得できます。アプリリンクで開く前に iOS が「アプリ で開きますか?」と確認し、Claude が 開く をタップします。
シミュレーターの画面は少し遅れて表示されることがあります。そのため Claude は、ボタンをタップする前に入力内容がスクリーンショットに表示されていることを確認し、ステップが失敗したと判断する前にもう一度スクリーンショットを撮ります。
シミュレーターペインのスクリーンショットは、会話のほかの内容と同じく Anthropic に送られます。そのシミュレーターではテスト用アカウントだけを使ってください。Proxy Mail QA のアドレスとパスワードは、もともとテスト用アカウントです。
Xcode のツールを使う Claude Code または Codex
Section titled “Xcode のツールを使う Claude Code または Codex”Xcode は、Xcode 自身の MCP server を通じて、外部で実行するエージェントとビルドツールやプロジェクトツールを共有できます(Apple のガイド)。
-
Xcode で Xcode → Settings → Intelligence を選び、Model Context Protocol の Allow external agents to use Xcode tools をオンにします。
-
Xcode のツールをエージェントに追加します。
claude mcp add --transport stdio xcode -- xcrun mcpbridgeCodex の場合:
codex mcp add xcode -- xcrun mcpbridge -
Xcode でプロジェクトを開き、上記と同じようにエージェントに依頼します。
両方のサーバーを接続すると、エージェントは Xcode でビルドし、Proxy Mail QA でテスト用アドレスとメールを取得します。
Xcode 内蔵のエージェント
Section titled “Xcode 内蔵のエージェント”Xcode の内蔵エージェント(Claude Agent、Codex、Gemini)は、~/Library/Developer/Xcode/CodingAssistant/ 以下の設定フォルダー(ClaudeAgentConfig、codex、gemini)から追加の MCP サーバーを読み込めます。また、Intelligence settings → Plug-ins → Add Plug-in からエージェントプラグインをインストールできます(Apple のガイド)。
Claude Code 用のプラグイン には、MCP server と、サインアップの流れを説明するスキルが含まれています。そこで URL から追加すれば、Xcode の Claude Agent でも同じツールを使えるはずです。Xcode のプラグイン対応はまだテストしていません。動作しない場合は、代わりに Xcode と併せて Claude Code または Codex を使ってください。
ほかに依頼できること
Section titled “ほかに依頼できること”どの方法で接続しても、エージェントはさらに多くの流れを確認できます。
- 複数の枠に分かれたコード。 多くのアプリは 1 桁ごとに枠を表示します。エージェントは最初の枠をタップしてコード全体を入力します。ほとんどのアプリはこれを各枠に振り分けます。その後、すべての桁が入ったことを確認してから先に進みます。一部だけのコードは誤入力として数えられるためです。
- 長いサインアップフォーム。 ルールのあるユーザー名、生年月日、国なども求めるフォームでは、
form_valuesがそのために作った新しいアドレスから各項目の値を返します。 - メールそのもの。 コードやリンクが届いた後、アプリのリンクが開くドメイン(ユニバーサルリンクのドメインなど)を
expect_hostに設定したcheck_emailで、リンクの行き先と、SPF、DKIM、DMARC、記載された有効期限を確認します。count_emailsは誤って送られた 2 通目のメールを検出します。 - Mac 上の開発サーバー。 シミュレーターは
localhostで Mac にアクセスするため、開発ビルドのlocalhost:3000へのリンクは想定どおりです。エージェントに開発環境として指定するよう依頼するか(mark_dev_host)、プロジェクト設定で追加すると、check_emailはそれらのリンクを失敗にせず合格にします。 - 次回も同じアカウント。 アカウント作成時に、使用場所(
stagingのようなenvironmentと、iosのようなタグ)を記録するようエージェントに依頼すると、list_addressesで再び見つけられます。保存済みパスワードの読み取りを許可した API キー があれば、get_sign_inは 1 回の呼び出しでアカウントとパスワードを返します。 - レポート。 実行レポートを依頼すると、エージェントは最初に
start_runを、最後にfinish_runを呼び出し、Markdown でレポートを返します。
特典とマーケティングメール
Section titled “特典とマーケティングメール”同じツールで、サインアップ後にアプリが送るものもテストできます。
- クーポン。 アプリでオファーに登録した後、エージェントは
wait_for_codeとkind: couponで待機します。クーポンが、割引と終了日、届くまでの時間(after_seconds)とともに返されます。エージェントは、コードと同じように枠に分けて、アプリのプロモーション欄にクーポンを入力します。 - チェックアウトはサンドボックスでのみ。 Xcode の StoreKit テストまたはアプリ独自のテストモードを使い、実際のカードや実際の購入は使わないでください。エージェントはアプリの動作を、アプリのメッセージとともに
record_coupon_resultで記録します(accepted、rejected、error)。同じコードをもう一度試すと、1 回限りのコードが拒否されることを確認できます。 - アプリを開くリンク形式のクーポン(
myapp://redeem?code=…など):app: trueを指定したwait_for_linkがリンクを返し、エージェントはxcrun simctl openurl bootedとそのリンクを使ってシミュレーターで開きます。 - 1 人 1 回のオファー。 同じアドレスの別表記(
get_address_variantsがname+promo1@…などを一覧表示します)で再度サインアップし、check_offersを実行すると、アプリがオファーを 2 回提供したかどうかがわかります。 - 扱いにくい名前とパスワード。
get_name_variantsとget_password_variantsはフォームのほかの欄の値(アポストロフィ、アクセント記号、他の文字体系、各記号クラス、欄の上限)を返します。エージェントはそれぞれを入力し、アプリの動作を報告します。 - 同意。 サインアップ時のトグルや通知設定について、エージェントは選んだ内容(およびトグルが最初からオンだったか)を
record_consentで記録します。check_emailは、その後のマーケティングをペルソナの居住地のルールで判定します。 - 配信停止(アプリの設定画面から、またはシミュレーターで開いたメールのリンクから):エージェントはその後
mark_unsubscribedを呼び出し、後でcheck_unsubscribeがそれ以降に届いたマーケティングメールを一覧表示します。領収書は引き続き届く必要があります。
テストとして書く
Section titled “テストとして書く”Android については、コーディングエージェントで Android アプリをテストする を参照してください。
このチェックを CI で実行する UI テストとして残すには、iOS(XCUITest) を、Android も扱う流れには Maestro を参照してください。それぞれのヘルパーは、テストの中で同じことを行います。メールの確認と件数のカウント、保存済みアカウントでのサインインや借用、各テストのプルリクエストのレポートへの追加です。
このページについて質問がありますか?
質問はどの言語でもかまいません。ドキュメントからすぐに回答を得ることも、Proxy Mail QA チームに質問を送ることもできます。チームからの返信は英語です。