Rspec Capybara Suite Timing out

时间:2015-10-23 15:11:36

标签: ruby-on-rails selenium rspec capybara

我们有一个大型测试套件(完整版本通常需要15分钟才能运行),2天前开始计时,我们从那时起就无法运行完整版本。我在rails_helper中添加了一个配置,以便在运行时间过长时强制规范失败:

config.around(:each) do |example|
    Timeout::timeout(10) {
      example.run
    }
end

我们终于使用此配置运行了完整的版本,但有超过60个失败的规格!规范单独运行并通过。

我们的DatabaseCleaner设置如下:

config.before(:suite) do
    DatabaseCleaner.clean_with(:truncation)
end

config.before(:each) do
  DatabaseCleaner.strategy = :transaction
end


config.before(:each, js: true) do
  DatabaseCleaner.strategy = :truncation
end

config.before(:each) do
  DatabaseCleaner.start
end

config.after(:each) do
  DatabaseCleaner.clean
end

config.use_transactional_fixtures = false

在一般情况下,我们有几个睡眠的规格。

不幸的是,当我运行构建并观察测试日志时,没有输出任何有趣的东西来帮助我调试。

我认为最后值得关注的信息是我们的gemfile设置。以下是我们的测试组宝石:

group :test do
  gem 'capybara-screenshot', '1.0.10'
  gem 'capybara', '2.4.4'
  gem 'rspec-rails', '3.2.0'
  gem 'capybara-webkit', '1.3.1'
  gem 'launchy', '2.4.3'
  gem 'selenium-webdriver', '2.46.2'
  gem 'database_cleaner', '1.3.0'
end

以前是否有人遇到过这样的问题?

提前感谢!!

1 个答案:

答案 0 :(得分:1)

Whelp,事实证明更新所有测试宝石并将以下行添加到我们的rails_helper是答案:

Capybara::Webkit.configure do |config| config.block_unknown_urls end

我很遗憾不清楚为什么这是我们的修复,但是这个版本在2天内第一次完成。