所以我正在编写一些用于在网站上创建帐户的E2E测试。创建网站帐户后,该网站将向我发送电子邮件以验证我的帐户,以便我可以登录。我的问题是,E2E测试要走多远?如果我使用量角器去谷歌,找到电子邮件,然后点击链接验证我自己,我会走错方向吗?然后回到网站登录?我的另一个可能的选择是以某种方式获取我的用户ID,然后发送验证请求?
我不确定哪个方向最好。有什么想法吗?
答案 0 :(得分:3)
你的测试应该走多远,这几乎是有争议的。但是,如果测试通过电子邮件发送信息是至关重要的,那么您应该考虑在测试运行期间提取该信息。
换句话说,这就是所谓的“端到端测试”,但两个目标都可能超出我们用来思考和考虑的边界。
以下是the solution using mail-listener2
nodejs library在双因素身份验证功能测试期间为我工作(注册代码在通过用户名/密码验证步骤后发送到电子邮件)。
答案 1 :(得分:1)
就我个人而言,我测试验证电子邮件是否与正确的内容一起发送 - 但是,我不会在Google上登录以查找电子邮件。相反,我已经公开了一个服务器端功能,它返回它发送到某个电子邮件地址的最新电子邮件。以下是我如何使用它:
b.get(origin + '/-/e2e/last-email-sent?to=' + address, (response) => {
var responseObj = JSON.parse(response.body);
// Now I have the email text in responseObj.bodyHtmlText.
// Let's extract the URL to the next page:
// (it's the first thing we find that starts with our server origin, i.e.
// http://whatever/....)
var regexString = originRegexEscaped + '\\/[^"]+';
var matches = responseObj.bodyHtmlText.match(new RegExp(regexString));
if (!matches) {
b.assert.fail(responseObj.bodyHtmlText, regexString,
'No next-page-link regex match in email');
}
else {
// Tell our e2e browser to go to the page linked in the email
// as if the user had clicked the link in the email.
b.url(matches[0]);
}
});
我还要添加许多其他有趣的e2e测试服务器端功能,例如/-/e2e/fast-forward-time?how-much=3600-seconds
: - )
我做测试,真正的Gmail用户(我为e2e测试创建的真实Gmail帐户,没有别的)只是注册。即OpenAuth登录有效。如果可以,我会假设任何Gmail用户都可以阅读电子邮件。