返回开发者与 QA
浏览器隔离并不会延伸到外部邮箱
为什么并行 CI 的 E2E 邮件测试需要隔离收件箱
让每个test或worker拥有自己的收件地址,避免并行执行互相读取、失效或清理对方的邮件状态。
约 8 分钟
Playwright的BrowserContext可以完全隔离,但如果两个测试都向同一邮箱发送OTP,它们仍然会竞争。同一recipient在并行CI里就是共享backend data,会产生串行运行时看不到的race condition。
收件人也属于test data
Playwright建议并行worker使用独立backend data,Cypress强调test independence。邮件地址应遵循同样规则。
清理cookie不会删除外部mailbox中的message,也不会恢复token validity。
常见冲突
| 冲突 | False pass | False fail |
|---|---|---|
| 两个signup | A使用B的邮件 | message已被消费 |
| 两个OTP | parser接受任意code | resend使另一code失效 |
| 两个reset | 错误link修改测试账号 | token相互替换 |
| global cleanup | inbox看起来干净 | 其他worker丢证据 |
选择隔离单位
- 1
优先每个test一个地址
最清楚的ownership。
- 2
每worker共享只适合内部serial
否则冲突仍在。
- 3
增加correlation
test ID、时间窗口或subject帮助诊断。
- 4
local teardown
只清理自己拥有的资源。
隔离原则不依赖具体工具
手工QA可以用新的临时收件箱;无人CI则应使用可编程基础设施。本质都是两个活跃scenario不能意外共享邮件authentication state。
把recipient当作fixture,并让每个scenario拥有自己的mail state,parallel email testing会明显更可靠。
需要一个干净的收件地址做手工邮件 QA?
使用 MailOnce 检查真实的注册、OTP、魔法链接、密码重置和通知邮件,无需把个人邮箱放进测试数据。
创建临时邮箱来源与延伸阅读
用于支撑测试建议的安全资料和测试运行器一手文档。
继续测试
继续查看同一邮件测试问题空间中的下一个边界。