コンテンツにスキップ

モバイルの UI テストでも、Web テストと同じように Proxy Mail QA を使います。テスト用アドレスを作成し、アプリのサインアップ画面に入力して、メールのコードやリンクを待ちます。これらのページのヘルパーはテストコード専用です。リリースするアプリには何も含まれません。

各ヘルパーは、それぞれの言語で同じことを行います。

  • テスト用アドレスを作成します。 フォーム用のパスワード付きで、指定すれば生年月日、国、環境も付けます。
  • コードやリンクを待ちます。 アプリを開くリンクも含み、使用済みのコードはスキップします。
  • メールを確認します。 届いた数を数える(2通ではなく1通だけ)、内容を確認する(SPF、DKIM、DMARC、ローカルや http のリンク、リンク先)、または何も届かないことを確認します。
  • 保存済みアカウントでサインインします。 または、テストを並列実行している間、他のテストが使っていないアカウントを借ります。
  • プルリクエストで報告します。 GitHub Action を使うと、各呼び出しがジョブの実行に加わり、テスト名で表示されます。
お使いのテスト ガイド
Maestro(ネイティブの iOS と Android、React Native、Flutter) Maestro
Xcode の XCUITest(Swift) iOS (XCUITest)
Android Studio の Espresso または UI Automator(Kotlin) Android (Espresso)
Flutter integration_test(Dart) Flutter
Detox または Appium(JavaScript) Detox と Appium
iOS Simulator を操作するコーディングエージェント コーディングエージェントによる iOS アプリ
Android Emulator を操作するコーディングエージェント コーディングエージェントによる Android アプリ

各プラットフォームで確認すべき点(コールドスタート時のリンク、Chrome を開く App Links、exp:// リンク、Firebase のメールリンクによるサインイン)については、モバイルアプリのガイドをご覧ください。

どのガイドも、API キー をテスト実行から読み取ります。環境変数、インストルメンテーション引数、または --dart-define を使います。CI のシークレットに保存してください。アプリの設定や Info.plist には絶対に追加しないでください。アプリを持つ誰もが読めてしまいます。

--dart-define は渡されたビルドにコンパイルされるため、Flutter のテストビルドにはキーが含まれます。そのビルドを TestFlight、Firebase App Distribution、ストアなどで誰にも渡さないでください。共有するビルドはキーなしでビルドしてください。

認証リンクやマジックリンクをアプリで開く

Section titled “認証リンクやマジックリンクをアプリで開く”

メール内のリンクは、通常アプリを開く https リンクです。iOS では Universal Link、Android では App Link です。デスクトップのブラウザではなく、デバイスで開いてください。

利用環境 方法
XCUITest XCUIApplication().open(url)
Espresso ACTION_VIEW インテントを使った startActivity(ガイドを参照)
Maestro - openLink: ${output.link}
Detox device.openURL({ url })
Appium driver.execute('mobile: deepLink', { url, package })(Android)または { url, bundleId }(iOS)
手動、iOS シミュレーター xcrun simctl openurl booted '<link>'
手動、Android エミュレーター adb shell "am start -W -a android.intent.action.VIEW -d '<link>'"

myapp://verify?token=… や Expo の exp://…/--/verify のようにアプリ独自のスキームを使うリンクも抽出され、同じ方法で分類されます。リンクを待つと、これらも返されます。同じ目的の Web リンクとアプリリンクが両方あるメールでは、Web リンクが先になります。アプリのリンクは app=true で指定してください(各ヘルパーに app オプションがあります)。GET /v1/addresses/{address}/messages は各メールのすべてのリンクを一覧表示します。Proxy Mail QA はリンクを開きません。アプリと Chrome 拡張機能ではアプリリンクのコピーのみ可能で、受信トレイではその横にシミュレーターとエミュレーターのコマンドが表示されます。

多くのアプリは、コードの1桁ごとに1つの枠を表示します。コード全体を最初の枠に入力してください。このような入力欄の多くは、1桁入力するごとに次の枠に移動します。移動しない場合は、各枠に1桁ずつ入力してください。送信する前に、すべての枠に数字が入っていることを確認してください。一部だけのコードは誤った試行とみなされ、多くのアプリは数回でアカウントをロックします。

コードだけでなくメールもチェックする

Section titled “コードだけでなくメールもチェックする”

コードやリンクが届いたら、メールも確認してください。アプリのリンクが開くドメイン(Universal Link や App Link のドメイン)を指定した checkEmail は、不合格のチェックを返します。countEmails は誤って送られた2通目のメールを検出します。各ガイドでそれぞれの言語での使い方を示しています。各チェックの意味は REST API をご覧ください。

お使いのコンピューター上のサーバーに対してテストする

Section titled “お使いのコンピューター上のサーバーに対してテストする”

iOS シミュレーターは localhost でお使いのコンピューターに接続できます。Android エミュレーターはできません。10.0.2.2 でコンピューターに接続します。アプリが localhost への認証リンクを送る場合、エミュレーターでは開けません。localhost を指すリンクのテストをご覧ください。

実際のユーザーは開けないため、localhost やプライベートアドレスへのリンクはメールのチェックで不合格になります。ご自身のコンピューターに対してテストする間は、そのホスト(localhost:3000 や 10.0.2.2:3000 など)を Project settings または POST /v1/project/dev-hosts でプロジェクトの開発環境に追加してください。そうすると、そのホストへのリンクは合格します。

Proxy Mail QA はメールのみを扱います。SMS で送られるコードには別のツールが必要です。

このページについて質問がありますか?

質問はどの言語でもかまいません。ドキュメントからすぐに回答を得ることも、Proxy Mail QA チームに質問を送ることもできます。チームからの返信は英語です。