Automated tests casperjs与a/b测试

Automated tests casperjs与a/b测试,automated-tests,phantomjs,casperjs,Automated Tests,Phantomjs,Casperjs,我有一个signup.js测试,可以自动注册我的web应用程序(显然)。我们目前正在a/b测试一个新的流,它会将您带到另一个页面('.com/signupa'vs.com/signupb'),我想知道在我的测试中反映这一点的最佳方式是什么 选项: 使用evaluateOrDie并使其在.com/signupb上消失(这似乎很愚蠢) 对.com/signupb进行充实测试,如果它通过了该测试(这可能吗?),那么就让它走这条路,比如 casper.waitForResource("classic.

我有一个signup.js测试,可以自动注册我的web应用程序(显然)。我们目前正在a/b测试一个新的流,它会将您带到另一个页面('.com/signupa'vs.com/signupb'),我想知道在我的测试中反映这一点的最佳方式是什么

选项:

  • 使用
    evaluateOrDie
    并使其在.com/signupb上消失(这似乎很愚蠢)
  • 对.com/signupb进行充实测试,如果它通过了该测试(这可能吗?),那么就让它走这条路,比如

    casper.waitForResource("classic.png",
       function success() {
          this.echo('on the old signup flow ');
          <continue with regular signup test>
      },  
      function fail() {
          this.test.assertExists("classic.png");
          <do something else>
      });
    
    casper.waitForResource(“classic.png”,
    函数成功(){
    this.echo('on the old signup flow');
    },  
    函数失败(){
    this.test.assertExists(“classic.png”);
    });
    

任何其他想法都非常感谢

我的偏好是在每个页面中隐藏一些信息,以便您可以干净地打开它们。例如

<span id="version1"></span>

但是,只在其中一个页面中检测您已经知道的内容,比如您在问题中显示的“classic.png”,也可以。(只是感觉有点脆弱:web开发团队可以通过重命名该图像,或在新版本中添加具有该名称的图像等方式破坏您的测试。)

我发布了一个答案,但意识到我不知道您所说的“在我的测试中反映这一点”是什么意思?(如果你想确保每个都经过测试,你可以直接调用'.com/signupa'vs.com/signupb'。@DarrenCook对不起,应该说得更清楚些。a/b测试在您提交注册表单后进行。因此,流程是/join->填写一些字段->点击Submit->然后获得/signupa或/signupb。这意味着我不能直接给他们打电话。我想我想知道,在提交时,是否有办法让casper评估我得到的页面(a或b),然后相应地运行测试。
<span id="version2"></span>
casper.then(function(){
  if (this.exists('#version2')) {
    testNewSite(this);
    } else {
    testOldSite(this);
    }
  });