Automated tests casperjs与a/b测试
我有一个signup.js测试,可以自动注册我的web应用程序(显然)。我们目前正在a/b测试一个新的流,它会将您带到另一个页面('.com/signupa'vs.com/signupb'),我想知道在我的测试中反映这一点的最佳方式是什么 选项: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.
- 使用
并使其在.com/signupb上消失(这似乎很愚蠢)evaluateOrDie
- 对.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);
}
});