如何编写不会因rspec,capybara和poltergeist而超时或失败的javascript测试?

时间:2013-01-12 11:15:51

标签: ruby-on-rails rspec capybara bdd poltergeist

我的测试超时和随机失败一直存在问题。我一直在寻找如何编写强大的capybara集成测试的最佳实践,但我找不到任何有用的东西。

自从我们开始编写一系列测试以来,我们的CI服务器一直失败,使我们的应用看起来不稳定,但测试总是(大部分)在本地传递。

我想了解您和其他经验丰富的BDD / TDD专家如何处理:

  • 如何处理外部JavaScript和内容(KissMetrics,Google Analyics等)和
  • 调试并防止破坏构建的超时错误

任何帮助都将不胜感激。

2 个答案:

答案 0 :(得分:7)

跟进此事。我很欣赏@ jonleighton的邀请,向poltergeist提交一个bug,但我遇到的问题与两个不同的问题有关:

  1. 由于我没有遵循this post
  2. 中明确列出的建议而导致错误的错误的水豚断言会超时
  3. 第三方javascripts和东西。基本上我有第三方javascripts喜欢kissmetrics,谷歌分析,甚至实时帮助聊天,每次测试错误时加载,我消除了这种情况发生,我的测试变得更快,看起来更稳定/一致。

答案 1 :(得分:3)

我发现在很多情况下,我可以通过利用Poltergeist的黑名单功能来帮助我的集成测试更具确定性。就我而言,我列出了以下列入黑名单的主机名。

typekit.net
facebook.net
facebook.com
google.com
google-analytics.com
...

这个想法是关闭a)测试不需要的任何东西,b)可能影响CI环境下的页面加载完成。我注意到这有很大帮助。此外,将此PhantomJS选项与Poltergeist一起使用也有帮助:

phantomjs_options: ['--ignore-ssl-errors=yes']