MoeMail
返回博客

在 CI/CD 里做邮件测试(GitHub Actions)

在本地能过的邮件测试,到了 CI 里常常抖——送达更慢、共用邮箱、凭据外泄。想在 GitHub Actions 里把它们跑干净,归根结底就三件事:把 API 密钥存为 secret、每次运行一个临时收件箱、把超时设紧。本文是开发者邮件测试的一部分。

1. 把 API 密钥存为 secret

千万别把收件箱 API 密钥硬编码进去。把它加到仓库的 Settings → Secrets and variables → Actions 下,再以环境变量的形式暴露给测试步骤。一次性邮箱 API 就是用这个密钥鉴权的。

2. 一份最小工作流

# .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 运行一个收件箱

在测试内部开一个全新收件箱(最好每个用例一个),这样并行任务和重跑就永不撞车,并让它自行到期——不需要清理步骤。这种「每次运行一个临时收件箱」的模式,正是让 CI 邮件检查保持确定性的关键。

4. 把超时设紧

测试环境里的事务性邮件应当在五秒内送达;把轮询上限设在 20–30 秒,就能快速逮住真正的失败,而不是把任务挂死。更好的做法是用一个 Webhook,让测试在邮件落地的一瞬间就解除等待。

动手开始

加上 secret,把工作流放进去,再从你的 PlaywrightNodePython 套件里接好收件箱调用。先读一读 OpenAPI 文档,就此开始。