CasperJS + Authlogic(Rails) - 维护测试之间的登录会话

时间:2017-05-15 16:45:25

标签: ruby-on-rails authentication testing casperjs authlogic

我有一个单页面应用程序,它有一个Ruby on Rails后端,并使用Authlogic来促进用户身份验证。

我正在使用CasperJS实现功能测试,并且很难在会话之间以及thenOpen命令之间保持登录会话。

我正在运行以下命令:

casperjs --cookies-file=cookies.txt test ../../../foobar/test/casper/login/test.js

以下是我当前代码的示例:

phantom.cookiesEnabled = true;
var x = require('casper').selectXPath

casper.test.begin('Logging in', 2, function suite(test) {
  casper.start('http://localhost:3000/login', function() {
    console.log("Page loaded");

    test.assertExists('form', 'login form is found');
    this.fillSelectors('form', {
      '#email': "foo@bar.com",
      '#password': "foo_bar"
    }, false)

    this.click('#submit')

    casper.thenOpen('http://localhost:3000/my', function() {
      test.assertUrlMatch(this.getCurrentUrl(), 'http://localhost:3000/my', "Logged in and maintained login cookie")
    })
  })

  casper.run(function() {
    test.done();
  });
})

在观看我的开发日志时,我可以看到第一个测试(casper.start)成功登录但在thenOpen之后,不再维护Authlogic UserSession以便重定向PhantomJS到localhost:3000/login,如果没有登录用户,应该会发生什么。

如何在thenOpen之间以及多次测试之间使用CasperJS维护登录会话?我可以维护cookie以便用户在测试之间保持登录状态吗?

1 个答案:

答案 0 :(得分:0)

似乎这个评论保存了一天

  

查看代码this.click,然后执行操作   casper.thenOpen我会在表单提交后添加另一个步骤   使用casper.waitForXXXX

     

它看起来像一个时间问题