量角器E2E测试:创建帐户后的电子邮件验证

时间:2015-02-19 19:01:49

标签: selenium gmail protractor e2e-testing

所以我正在编写一些用于在网站上创建帐户的E2E测试。创建网站帐户后,该网站将向我发送电子邮件以验证我的帐户,以便我可以登录。我的问题是,E2E测试要走多远?如果我使用量角器去谷歌,找到电子邮件,然后点击链接验证我自己,我会走错方向吗?然后回到网站登录?我的另一个可能的选择是以某种方式获取我的用户ID,然后发送验证请求?

我不确定哪个方向最好。有什么想法吗?

2 个答案:

答案 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用户都可以阅读电子邮件。