最初に結論を。 Proxy Mail QA は当社の製品なので、中立ではありません。サインイン(ログイン)フォームのテストでは、メールを読めるテストアカウントが必要な場合におすすめします。各アカウントにはパスワードが一緒に保存され、サインインコードやマジックリンクは実際の受信トレイに届き、パスワードリセットのメールも最後までたどれます。ソーシャルサインイン(Google、Apple、Microsoft)、SMS コード、認証アプリ、パスキーはテストできません。また、AI エージェントやテストの代わりにフォームを入力・送信することもしません。それはエージェントやテストが行います。
サインインフォームのテストで確認すること
- 正しいメールアドレスとパスワードでサインインできる。
- パスワードが間違っている場合は、そのメールアドレスにアカウントがあるかどうかを明かさない、わかりやすいメッセージが出る。アカウントのないメールアドレスでも同じメッセージが出る。
- 大文字で入力したメールアドレスや、末尾に空白があるメールアドレスでも、同じアカウントにサインインできる。
- サインインコードやマジックリンクが届き、1 回だけ使え、期限切れや新しいものが送られた時点で使えなくなる。
- パスワードを忘れた場合のメールが届き、そのリンクは 1 回だけ使える。その後、古いパスワードは失敗し、新しいパスワードで成功する。
- パスワードを何度も間違えると、アカウントがロックされるか遅延がかかり、ロック解除メールがあれば届く。
- パスワードマネージャーがフォームに入力できる。フィールドに
autocomplete="username"(またはemail)とautocomplete="current-password"が設定されている。 - サインイン後、常にホームページではなく、本来行こうとしていたページに移動する。
再びサインインできるテストアカウント
- 作成する。 パスワードを保存して作成します。API またはエージェントから、パスワード付きでアドレスを作成します(
password: true)。アプリでは、アドレスの Generate a test password を使って保存します。Proxy Mail QA for Chrome では、いつもどおりサインアップします。送信後、使ったパスワードをそのテスト用アドレスに保存するか尋ねられます。保存されたパスワードは暗号化され、読み取られるたびに記録されます。 - 手動で再びサインインする。 サインインフォームでは、拡張機能のボタンにプロジェクトのテストアカウントが表示されます(そのサイトで使ったものが先頭)。選ぶと、メールアドレスと保存済みパスワードが入力されます。
- エージェントやテストから再びサインインする。
get_sign_in(MCP)またはsignInAccount(npm)を 1 回呼び出すと、そのサイトで使ったアカウントとパスワードが返されます。どちらも Can read saved passwords を有効にして作成した API キー が必要で、読み取りはすべて記録されます。Qoder Marketplace 経由で接続したエージェントは、キーの代わりにブラウザで Proxy Mail QA にサインインするため、以前に保存されたパスワードは読めません。同じセッションで作成したアカウントのパスワードを使うか、そのようなキーで接続してください(MCP server のセットアップ)。 - パスワードを変更した後は、
set_password(MCP)またはsetPassword(npm)で新しいパスワードを保存し、次のテストが正しいパスワードでサインインできるようにします。 - テストを並列で実行する場合は、アカウントプールからアカウントを借ります。
check_out_accountは、既知の状態のアカウント(verifiedなどのタグ、年齢、国、パスワード保存の有無で指定)をテストに渡し、返却されるまでほかのテストには渡しません。
import { ProxyMailQA } from 'proxymail-qa';
const qa = new ProxyMailQA(); // a key with "Can read saved passwords", in PROXYMAIL_QA_API_KEY
await qa.withAccount({ tags: ['verified'] }, async (account) => { const { secret } = await qa.savedPassword(account.address); await signIn(page, account.address, secret); // your own sign-in steps});サインインコードとマジックリンク
パスワードの代わりにコードやリンクをメールで送るフォームの場合:
wait_for_codeは最大 30 秒待ってコードを返します。unused: trueは使用済みのコードをスキップするので、2 回目のリクエストでは 2 つ目のコードが得られます。wait_for_linkはマジックサインインリンクを返します。Proxy Mail QA はリンクを開かないため、受け取った時点ではまだ未使用です。check_emailはメールをチェックします。SPF、DKIM、DMARC、リンクがテスト対象のサイトに向いているか(expect_host)、コードの有効期限が書かれているかを確認します。
サーバーの test_sign_in_code プロンプトは、認証済みのアカウントを借り、アプリがメールで送るコードやリンクでサインインします。詳しくはワンタイムコードのテストとマジックリンクのテストをご覧ください。
大文字とプラスタグ
get_address_variants は、同じ受信トレイに届くテスト用アドレスのバリエーションを返します。サインインで重要なのは次の 2 つです。
- 大文字(
K7F2X9AB12CD@MAILCLUB.DEV)。これでサインインしても、通常のアドレスと同じアカウントになるべきです。失敗する場合、大文字を含めてメールアドレスを入力する人はサインインできません。 - プラスタグ(
k7f2x9ab12cd+work@mailclub.dev)。ほとんどのアプリでは別のアカウントとして扱われます。自分のアプリで同じアカウントとして扱うかを決め、決めたとおりに動くかテストしてください。
パスワードリセット
test_password_reset プロンプトは、認証済みのアカウントを借り、アプリでパスワードをリセットし、リセットメールをチェックし、新しいパスワードをアカウントに保存してプールに返却します。その後、古いパスワードでサインインできないことを確認してください。詳しくはパスワードリセットのテストをご覧ください。
エージェントに頼む
Qoder で Proxy Mail QA を接続している場合(Marketplace):
Test the sign-in form at https://staging.acme.dev/login with Proxy Mail QA. Start a run.Create a test address with a password (create_address, password: true), sign up with itat https://staging.acme.dev/signup and finish the verification. Sign out.Sign in with it. Then try a wrong password, an email with no account, and the addressin capitals, and compare the messages.Use "Forgot password", finish the reset with the link from the email, save the newpassword with set_password, and check the old one fails.Finish the run and give me the report.エージェントは create_address のパスワードをセッション中保持するため、以前に保存されたパスワードを読めない Marketplace 接続でもこの方法は使えます。
対象外のこと
- ソーシャルサインイン。 Google、Apple、Microsoft でのサインインはそれぞれのサービスのアカウントを使いますが、Proxy Mail QA はそれを作成しません。各プロバイダーのテストアカウントを使ってください。
- SMS コード、認証アプリ、パスキー。 メールの受信のみです。
- 大規模なレート制限とロックアウト。 ロックアウトのメールが届くかは確認できますが、負荷テストには負荷テストツールが必要です。
- 本番サイト。 自分で作っているアプリ、またはテストを許可されたアプリの、ステージングやローカル環境向けです。