MoeMail
返回部落格

在 CI/CD 裡做 Email 測試(GitHub Actions)

在本機會過的 email 測試,到了 CI 常常閃爍——送達較慢、共用郵箱、外洩憑證。要在 GitHub Actions 裡乾淨地跑它們,歸結起來就三件事:給 API 金鑰一個 secret、每次執行一個臨時收件匣,以及把逾時設緊。本文是開發者 email 測試的一部分。

1. 把 API 金鑰存成 secret

千萬別把收件匣 API 金鑰寫死在程式裡。把它加在 repo 的 Settings → Secrets and variables → Actions,再把它當成環境變數曝露給測試步驟。拋棄式 email API 就是用那把金鑰認證的。

2. 一份最小可行的 workflow

# .github/workflows/e2e.yml
name: e2e
on: [pull_request]
jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
        with:
          node-version: 20
      - run: npm ci
      - run: npx playwright test
        env:
          MAIL_KEY: ${{ secrets.MAIL_KEY }}

3. 每次 PR 執行一個收件匣

在測試裡開一個全新收件匣(最好是每個測試一個),讓平行的 job 與重跑永遠不會撞在一起,並讓它自己過期——不需要任何清理步驟。這套「每次執行一個臨時收件匣」的模式,就是讓 CI email 檢查維持確定性的關鍵。

4. 把逾時設緊

測試環境的交易型郵件通常五秒內就會到;輪詢上限抓 20~30 秒,能快速抓到真正的失敗,而不是讓 job 一直掛著。更好的做法,是用 webhook,讓測試在信件一落地就立刻有結果。

開始動手

加上 secret、把 workflow 丟進去,再從你的 PlaywrightNodePython 測試套件接好收件匣相關呼叫。讀讀 OpenAPI 文件就能開始。