使用capybara-webkit和rspec升级到Rails 5后的随机集成测试失败

时间:2016-12-01 07:14:09

标签: ruby-on-rails rspec turbolinks capybara-webkit

我将我的应用程序从Rails 4.2.7.1升级到Rails 5.0.0.1,现在我得到随机测试失败。我做的显着改变是添加

$(document).on('turbolinks:load', myOnlyFunctionOnThePage);

现在我的测试都作为套件失败,但几乎总是在单独运行时通过。失败的测试是集成测试。

我在每个步骤中添加了wait_for_ajax(来自https://robots.thoughtbot.com/automatically-wait-for-ajax-with-capybara)方法,但仍然存在失败。

将超时时间增加到60秒无济于事。

使用:selenium驱动程序工作(启动浏览器)导致绿色测试。但是,当切换回:webkit时,随机故障会继续。

使用Capybara :: Webkit config.debug = true我可以看到这样的错误:

  

完成“Node.leftClick”并带有响应   “失败({\”class \“:\”ClickFailed \“,\”message \“:\”无法点击   元件   / HTML /体/格[1] / DIV /部分[@ ID = '项目新形式'] /形式[@ ID = 'NEW_PROJECT'] /格[8] /按钮   因为元素重叠   / HTML /体/格[1] / DIV /部分[@ ID = '项目新形式'] /格[@ ID = 'addQuestions']   位置346,561; \ n当时页面的屏幕截图   失败已被写入   /var/folders/ct/p9d9lm811y75ltkwyxr08gcdl_s5n6/T/click_failed_L66099.png \ “})”

这种情况发生在引导模式出现的地方,但是添加wait_for_ajaxsleep 5并没有什么区别。但是,如果我使用debug运行单个it块,我可以看到即使测试通过也确实记录了此错误消息。

我有什么遗忘吗?同样,测试在此升级之前以及一次运行一个it块或使用selenium驱动程序时都会通过。

这是一个问题,因为我想在并行和CI上运行我的测试。这两者都需要无头驾驶员。

0 个答案:

没有答案