3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【テスト自動化】PlaywrightとMailosaurを組み合わせてメール認証を突破する

Last updated at Posted at 2025-01-04

背景

昨年PlaywrightによるE2Eの自動テストの拡充を行なっていましたが、自分がQAとして関わっているプロダクトには以下のようなメール認証を必要とするシチュエーションがいくつかあり、そこを自動テストでどのように突破するかが課題になっていました。

  • アカウント作成時のメール認証
  • ログイン時にメールからコードを取得し入力する
  • ユーザー招待時にメールの招待リンクを踏む

Mailosaurについて

上記の課題を解決するために、いろいろと調べていたところMailosaurというサービスがあるとわかりました。
おそらく造語なので読み方がいまだに自信ないですが、たぶんメーラソーで問題ないと思います。

イギリスにある企業が開発しているサービスです。公式HPによると使用している企業にはPayPalやUberなどの名前が掲載されていますが、日本語の情報は現状あまりないので日本で導入している企業はさほど多くないかもしれません。
ユーザー数や1日に受信可能なメール数により料金が変わります。(2週間のフリートライアルが可能です。)

使い方

個人的にはとても使いやすいサービスだと思っています。
Mailosaurの利用を開始するとメールサーバーを作成できるので、mailosaurドメインでQA対象のプロダクトのアカウント作成を行います。

test@{your_server_id}.mailosaur.net
そうすると、mailosaurのメールサーバーに届いたメール内に記載されているコードやリンクはAPI経由で容易に取得することができるのでPlaywrightと組み合わせることにより、自動テストでメール認証を突破することが可能になります。(もちろんGmailのように画面からメールを確認することも可能です。)
例えばログイン画面でメールからコードを取得して入力している箇所のコードは以下のような形になります。

import MailosaurClient from "mailosaur";

const mailosaur = new MailosaurClient(YOUR_MAILOSAUR_API_KEY);
const serverId = YOUR_MAILOSAUR_SERVER_ID;

test("ログイン", async ({ page }) => {

  // テスト開始以後のメールを取得するために指定する
  const testStart = new Date();
  const testMailAddress = "test@abcde.mailosaur.net"
  const password = "password"

  // メールアドレス、パスワードを入力
  await page.mailAddressForm.fill(testMailAddress);
  await page.passwordForm.fill(password);
  await page.loginButton.click();
  // 送信されたメールを取得
  const email = await mailosaur.messages.get(
    serverId,
    {
      sentTo: testMailAddress,
      subject: "認証コードのお知らせ",
    },
    {
      receivedAfter: testStart,
    }
  );
  // メールからコードを取得する
  const code = email.html.codes[0].value;
  // コードを入力
  await page.codeForm.fill(code);
  await page.confirmButton.click();
});

sentTo(送信先メールアドレス)subject(件名)を指定することにより、取得すべきメールを特定していますが、それだけだとテストを重ねると重複してしまうのでreceivedAfterを指定してテスト開始以降に送信されたメールに絞ることにより対象のメールを1件にすることもできます。

今後

今回は自動テストにおいてのメール認証突破に関する内容になりましたが、Mailosaurはメール送信やメール文面チェックなどのQAでも活用できると思いますので、活用の幅を広げていきたいと考えております。

3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?