2026/04/02
GitHub Actionsでメール認証フローを自動テストする完全ガイド
GitHub ActionsCI/CDE2ESDK
なぜCIでメールテストが必要か
サインアップ確認、パスワードリセット、招待メール — 多くのWebアプリケーションはメール送信に依存しています。しかし、これらのフローをCIで自動テストしているチームはまだ少数です。
理由は明確です。CIサーバーにはメールを受信する仕組みがないからです。
MailBrewはAPIベースのメール受信サービスです。CI環境から数行のコードでメールの受信・検証が可能になります。
アーキテクチャ
GitHub Actions Runner
→ アプリケーション(テスト用SMTP: smtp.mailbrew.io:587)
→ MailBrew API(メール受信を待機・取得)
→ テストアサーション
アプリケーションのSMTP設定をMailBrewに向けるだけで、送信されたメールをAPI経由で取得できます。
セットアップ
1. APIキーの設定
GitHubリポジトリのSettings > Secrets に MAILBREW_API_KEY を追加します。
2. ワークフローファイル
name: E2E Tests
on: [push, pull_request]
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: 20
- name: Install dependencies
run: npm ci
- name: Run E2E tests
run: npx playwright test
env:
MAILBREW_API_KEY: ${{ secrets.MAILBREW_API_KEY }}
SMTP_HOST: smtp.mailbrew.io
SMTP_PORT: 587
3. テストコード
import MailBrew from '@mailbrew/sdk';
const mb = new MailBrew(process.env.MAILBREW_API_KEY);
// テスト用アドレスを発行
const addr = await mb.addresses.create({ ttl: 300 });
// アプリケーションにサインアップ
await signupUser(addr.address, 'password123');
// 確認メールの受信を待機(最大30秒)
const emails = await mb.addresses.waitForEmail(addr.address, {
timeout: 30,
count: 1,
});
// アサーション
expect(emails[0].subject).toContain('メールアドレスの確認');
expect(emails[0].html_body).toContain('確認する');
SDK別のコード例
Python
from brewmail import MailBrew
mb = MailBrew(os.environ['MAILBREW_API_KEY'])
addr = mb.addresses.create(ttl=300)
# メール送信トリガー
trigger_signup(addr.address)
# 待機 & 検証
emails = mb.addresses.wait_for_email(addr.address, timeout=30)
assert 'メールアドレスの確認' in emails[0].subject
PHP
use BrewMail\MailBrew;
$mb = new MailBrew(env('MAILBREW_API_KEY'));
$addr = $mb->addresses()->create(['ttl' => 300]);
// 待機 & 検証
$emails = $mb->addresses()->waitForEmail($addr->address, ['timeout' => 30]);
$this->assertStringContains('確認', $emails[0]->subject);
ベストプラクティス
- TTLを短く設定する — テストアドレスは5分(300秒)程度で十分
- タイムアウトを明示する —
waitForEmailのtimeoutは30秒がおすすめ - テストごとに新しいアドレスを使う — 並列実行時の競合を防止
- アサーションAPIを活用する —
POST /assertで件名・本文・宛先を一括検証
まとめ
メール認証フローのCIテストは、もはや「やりたいけどできない」ものではありません。MailBrewを使えば、既存のCI/CDパイプラインに数分で組み込めます。