您如何测试涉及通过电子邮件确认的用户流程?

Dmi*_*iko 3 testing automated-tests selenium-webdriver e2e-testing cypress

我的意思是功能测试或端到端测试。对于通用流程来说,这一切都很清楚,但当涉及到交易电子邮件(注册确认、密码重置、购买通知等)时,它仍然会带来问题。经过一番研究后,我提出了一些想法。一种是利用 Restmail.net API(此处以 Selenium WebDriver 和 Cypress 为例 - http://dsheiko.com/weblog/testing-sign-up-flow-with-activation-by-email)。它是免费的,但 API 是公开的。因此,它不太适合包含潜在敏感信息的电子邮件。通过 IMAP 桥或 Gmail API 访问 Gmail 收件箱的另一种方法(此处是说明和代码片段 - https://docs.puppetry.app/testing-emails/example-with-imap-bridge)。但同样,这只是一种解决方法。

我知道有像 Sendgrid、Mailgun、Email Yak、Postmark 这样的公司。我不想付那么多钱。那么大家是怎么做到的呢?这对你来说很重要吗?

Bre*_*dan 5

我们使用Mailosaur电子邮件地址为测试用户执行此操作。然后,我们使用 cypress 自定义命令来查询 Mailosaur 以获得预期的电子邮件。设置起来非常简单。

这是该自定义命令的主要部分,这是我们开始进行电子邮件测试所需添加的全部内容。您可以参考他们的 API 文档来了解querymailosaurServerMailosaurApiKey应该是什么。

Cypress.Commands.add("getEmailFromMailService", query => {
  return cy
    .request({
      method: "POST",
      url: `https://mailosaur.com/api/messages/await?server=${mailosaurServer}`,
      body: query,
      headers: { "Content-Type": "application/json" },
      auth: { user: mailosaurApiKey },
    })
    .then(response => {
      expect(response.status).to.equal(200);
      return response.body;
    });
});
Run Code Online (Sandbox Code Playgroud)