認証メールのテストが面倒な理由
サインアップはすべてのユーザーが最初に行う操作で、確認メールはアプリがユーザーに送る最初のメッセージです。そして、きちんとテストするのが最も難しいフローの一つでもあります。
- 毎回新しいアドレスが必要。 同じアドレスを使い回すと「このメールアドレスはすでに登録されています」となるため、テスターはアドレスを考え出したり、実行のたびにアカウントを削除したりすることになります。
- 共有の受信トレイでは混乱が起きる。 チームの Gmail では、5人分の確認メールが1か所に届きます。誰かがあなたのリンクをクリックしたり、他人向けのコードを使ってしまったりします。
- プラスアドレスは実際のユーザーが入力するものではない。
name+test1@gmail.comのようなアドレスは、一部のサインアップフォームで拒否されたり、知らないうちに正規化されたりします。そのため、テストしたフローがユーザーが実際に通るフローと異なってしまいます。 - ローカルのメールキャッチャーはノートPCの中で完結する。 Mailpit のようなツールは、ローカル環境が送ったメールしか見られません。ステージングや本番のメールが実際に届いているか、実際にどこにリンクしているかはわかりません。
Proxy Mail QA での流れ
- アドレスを作成します。 ワンクリックで、
k3f9q2m8x7aa@mailclub.devのような推測できないランダムなアドレスが手に入ります。任意の名前を指定したり、サインアップフォーム用に生成された氏名とユーザー名付きでまとめて作成したりすることもできます。 - テスト対象のアプリでサインアップします。 実際のユーザーと同じようにアドレスを使います。
- 行の更新を確認します。 数秒以内にアカウント画面に、送信者とメールの内容に応じた操作が表示されます。リンクの場合はリンクを開くとリンクをコピーのボタン、コードの場合はコピーボタン付きのコードです。
- メール自体を確認します。 受信トレイを開くと、メッセージ全文と、その中で見つかったすべてのコードとリンクを確認できます。リモート画像は許可するまでブロックされます。
当社側でメール内のリンクを開いたりプリフェッチしたりすることは一切ないため、1回限りの認証リンクはクリックするまで未使用のままです。
認証メールで確認すること
確認メールは「動いて」いても壊れていることがあります。どの環境でも、次のリストを確認してください。
- 数秒以内に、ユーザーが認識できる送信者名で届く。
- リンクが正しい環境を開く。ステージングから
localhost:3000へのリンクはバグです。これは自動で検出します。 - リンクはちょうど1回だけ使える。もう一度クリックすると、エラーページではなく役に立つメッセージが表示される。
- 期限切れのリンクでは次にすべきことが説明され、Resend で新しいリンクが送られる。
- 件名と冒頭の文が混み合った受信トレイの中でも意味が通じ、プレーンテキスト版がある。
- 確認後、ユーザーが適切な画面に移動し、サインインした状態になる(またはサインインするよう案内される)。
すべてのテスト用アカウントを管理する
各アドレスには、メモ、タグ、生成されたペルソナに加えて、サインアップ時のパスワードが保存されます。パスワードは暗号化され、表示するまで隠されています。数週間後でも、どの Gmail エイリアスだったかを推測しなくても、メモやタグで検索して「ステージングの未成年アカウント」を見つけられます。