我指的是功能测试或E2E测试。对于通用流程来说,这一切都很清楚,但当涉及到事务电子邮件(注册确认、密码重置、购买通知和其他)时,它仍然会带来问题。经过一番研究,我想出了几个点子。一种是利用Cypress API (这里以Selenium WebDriver和Restmail.net -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这样的人。我不想花那么多钱。那么你们是怎么做到的呢?这对你来说是件事吗?
发布于 2019-07-10 03:08:36
我们使用Mailosaur电子邮件地址为我们的测试用户做这件事。然后,我们使用cypress自定义命令来query Mailosaur for the expected email。它的设置非常简单。
以下是自定义命令的主要部分,这是我们在开始进行电子邮件测试时必须添加的全部内容。您可以参考他们的API文档,了解query
、mailosaurServer
和MailosaurApiKey
应该是什么。
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;
});
});
发布于 2019-07-09 19:57:24
您可以为“忘记密码”创建post请求,然后对其进行断言。
类似于:
cy.visit('yoursite')
cy.get('#forgotpassword').click().then(function (xhr) {
cy.server()
cy.request('POST', 'APIforForgotPassword').as('sucessfullemail)
})
cy.get(@sucessfullemail).then(function (xhr) {
expect(xhr.status).to.eq(200)
发布于 2019-07-19 16:56:22
Cypress.Commands.add('ConfirmUser', () => {
const confirmationToken = null;
cy.request({
url: 'http://localhost:3000/api/confirmation_token?email=test_user@cypress.com',
followRedirect: false
})
.then((resp) => {
confirmationToken = resp.token
})
cy.visit('/en/confirmation?confirmation_token=token')
})
创建需要将电子邮件作为参数并返回确认令牌的API。从cypress命令中调用API作为ajax-request并获取响应令牌
https://stackoverflow.com/questions/56951573
复制相似问题