モバイルアプリ
英語から自動翻訳されています。
英語で読むモバイルの 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 キー をアプリに含めない
Section titled “API キー をアプリに含めない”どのガイドも、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 拡張機能ではアプリリンクのコピーのみ可能で、受信トレイではその横にシミュレーターとエミュレーターのコマンドが表示されます。
枠に分かれたコード
Section titled “枠に分かれたコード”多くのアプリは、コードの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 でプロジェクトの開発環境に追加してください。そうすると、そのホストへのリンクは合格します。
テキストメッセージ
Section titled “テキストメッセージ”Proxy Mail QA はメールのみを扱います。SMS で送られるコードには別のツールが必要です。
このページについて質問がありますか?
質問はどの言語でもかまいません。ドキュメントからすぐに回答を得ることも、Proxy Mail QA チームに質問を送ることもできます。チームからの返信は英語です。