APIを使用することでEmailのテストを作成できます。Workspaceの契約を検討するか、MailSlurpというWebサービスをご利用ください。シークレット」を取得します。Gmailアカウント)を1つ用意してください。APIでメール内容を取得可能になってしまうため、普段使っているアカウントとは別のものを用意してください。Consoleにサインインし、画面左上のドロップダウンリストから、好きなプロジェクト名で「プロジェクト」を作成します。続いて、画面左上メニューの「APIとサービス」>「ダッシュボード」から、「APIとサービスを有効にする」を選択し、GmailのAPIを選んで有効化します。APIの認証を行うには、先にOAuthを有効にする必要があります。画面左上メニューの「APIとサービス」>「OAuth同意画面」を選択します。Type」に「内部」を選択できるので、これを選択します。「外部」でもテスト送信は可能ですが、トークンが数日で切れてしまいます。Workspaceのメールアドレスでない場合、「内部」が選択できません。Workspace以外のメールアドレスでもおそらく期限のないトークンが取得できますが、承認を受けるのは非常に困難だと思います。次の画面では、適当な「アプリケーション名」「ユーザーサポートメール」「デベロッパーの連絡先情報」を指定し、「保存して次へ」を押してください。メッセージと設定の表示」を選択して「更新」を押してください。これでOAuthが有効になりました。続いて「認証情報」を作成します。クライアントID」を選び、「アプリケーションの種類」を「デスクトップアプリ」にして「作成」を押します。シークレット」、JSONファイルのダウンロードボタンが画面に表示されるので、JSONファイルを適当なディレクトリに「credentials.json」という名前で保存します。APIの認証に必要な「リフレッシュトークン」を取得します。Pythonを使用した手順で説明します。(そのほかのAPIもこちらから参照できます)まず、Pythonがマシンにインストールされていない場合は、こちらの手順に従いインストールします。次に、Windowsの場合はコマンドプロンプト、Macの場合はターミナルを開き、以下のコマンドを実行します。libraryがダウンロードできました。次に、マシン上の適当なディレクトリにエディタを起動して空のファイルを作成します。こちらのページの「コードサンプルをコピー」ボタンを押して内容をコピーし、貼り付けます。作成したファイルを「quickstart.py」というファイル名で保存します。「quickstart.py」と同じディレクトリに先ほど保存した「credentials.json」を移動しコマンドラインから以下を実行します。quickstart.pyすると下図のようなページが表示されるので「許可」を押しウィンドウを閉じます。同じディレクトリに「token.json」というファイルが作成され、そこから「クライアントID」「クライアントシークレット」「リフレッシュトークン」を確認することができるようになります。APIを使用するための準備は完了です。PodのテストスクリプトからGmailのAPIを呼び出すことができます。APIコール」コマンドで「アクセストークン」を取得するまず、シークレット共有変数にCLIENT_ID、CLIENT_SECRET、REFRESH_TOKENの3つを定義し、それぞれに先ほど取得した値をセットします。V」)でペーストしてください。APIコールのステップが追加されます。(取得したアクセストークンは、30分以内なら何度も使い回すことができます。APIコールのステップを追加し、以下項目をセットしてください。APIコール」コマンドで「メールID」を取得する続いて手順1-3で取得したアクセストークンを使い、メールのIDを1件取得します。V」)でペーストしてください。APIコールのステップが追加されます。"0"}これを実行すると、変数「MAIL_ID」に、<検索条件>にマッチする最新のメールのIDが格納されます。APIコールのステップを追加し、以下項目をセットしてください。取得するメールの条件を指定するURLの末尾に?q=<検索条件>をつけ、「https://www.googleapis.com/gmail/v1/users/me/messages/?q=<検索条件>」とすることでTo・Fromのメールアドレスや件名など検索条件を指定し、特定のメールを取得することができます。<検索条件>の部分は、Gmailの検索条件の記法がそのまま使えます。以下のような書き方が可能です。詳しい記法はこちらを参考にしてください。(「new_user+1890537491@magic-pod.com」に送信されたメールを取得する。エイリアスのメールアドレスを使用する場合は+を「%2B」、@を「%40」とURLエンコードで指定する必要があります。APIコールの設定画面の「結果」タブのJavascript「jsonResponse["messages"][0]["id"]」の数字部分を変更することで最新ではないメールのIDを取得することが可能です。APIコール」コマンドでメールの本文を取得する最後に手順1-4で取得したメールIDを元にメール本文を取得します。V」)でペーストしてください。APIコールのステップが追加されます。"0"}これで、変数MAIL_CONTENTSにメール本文の内容が保存されます。テストケースステップの具体例をご確認ください。APIコールのステップを追加し、以下項目をセットしてください。メール本文に含まれたURLに遷移するメールに記載されたURLに遷移することで新規会員登録を行うテストを作成してみましょう。テスト対象アプリにて「登録する」ボタンを押す新規登録したメールアドレスにメールが送られるメールに記載されたURLをクリックし、会員登録を完了させるXX様ご登録ありがとうございます。受信から1時間以内に下記リンクからログインしてください。https://example.com/qwertyuiop123456789この場合、以下のテストケースステップでテストできます。上記テストではステップ11の「正規表現に一致した部分を保存」コマンドで以下の正規表現を指定することで、メール本文からURLのみを取得しています。メール本文に含まれた認証コードをアプリ内で入力するメールに記載された認証コードをテスト対象アプリに入力することで新規会員登録を行うテストを作成してみましょう。テスト対象アプリにて「登録する」ボタンを押す新規登録したメールアドレスにメールが送られるメールに記載された認証コードをアプリに入力し、会員登録を完了させるXX様ご登録ありがとうございます。受信から1時間以内にログインし、下記認証コードを入力してください。123456この場合、以下のテストケースステップでテストできます。上記テストではステップ11の「正規表現に一致した部分を保存」コマンドで以下の正規表現を指定することで、メール本文から数字6桁のみを取得しています。」の後に記載された6桁の数字を取得したい場合は、以下の正規表現を使用すると良いでしょう。エイリアスを使用することで毎回異なるメールアドレスを使用してテストを行うことができます。「new_user+20240621175024@magic-pod.com」のように「+」の後に値を追記することで元のアドレスに紐付いた新たなメールアドレスを作成できます。以下の例では「現在時刻を元に生成したユニークな値を保存」コマンドでユニーク値を作成し、「固定値を保存」コマンドで新規会員登録に使うメールアドレスを生成しています。APIコールを行った際に、次のような401エラーで失敗することがあります。found."}その場合は共有変数CLIENT_ID、CLIENT_SECRET、REFRESH_TOKENのいずれかが誤っている可能性が高いです。次の内容を確認してください。API実行時に検索条件に合致したメールがない場合、APIレスポンスとして{“resultSizeEstimate”:0}が返ります。APIの実行時にまだメールを受信していないことが原因である可能性が高いです。APIコール」ステップの間に「秒間待つ」コマンドを挿入してください。待機秒数については適宜調整ください。メール本文の取得に失敗するメールをプログラムで扱う際、そのデータ構造を意識する必要があります。HTMLメールの場合、そのデータは階層構造になることがあります(単純なテキストメールの場合、階層構造にはならない)。そのため、変数MAIL_CONTENTSの代入に使用するJavascriptは次のような処理を行なっています。あるメッセージパートを探す。これは、単純なテキストメールからメール本文を取得すること、あるいは、HTMLメールからHTMLメールが見えない環境向けの代替テキストを取得することを意図しています。そのデータはBase64文字列なので、UTF8に変換する。そのため、このJavascriptは以下の2つの場合にメール本文の取得に失敗する可能性があります。あるメッセージパートがない場合です。"text/html"」に書き換ればメール本文が取得できるようになるはずです。あるメッセージパートが複数箇所ある場合こちらに該当する場合、意図しないメール本文を取得してしまう可能性があります。この場合、お手数をおかけしますがMagicPodサポートにご連絡ください。個別の回避策をご案内します。参考メールのデータ構造をざっくり理解するにはこちらが参考になります。APIでメールが具体的にどのようなデータ構造で表現されているかはこちらが参考になります。