19
votes

I've seen a few posts related to timeout errors within Selenium. This is becoming more and more unbearable as it's rendering my test pack unusable. I'm testing a webpage currently in development.

I have a regression suite of around 300 test scenarios which has always worked until the latest update to firefox and selenium webdriver. Now for almost every other test i'm getting:

Net::ReadTimeout (Net::ReadTimeout) errors.

This can't be coincidence. Would anyone know of what could be causing the sudden timeout problems? I've tried going back to previous versions of webdriver and firefox.

2
It started to work again for me with FF32 and the selenium-webdriver-gem v2.43.0. Which versions do you use? - tessi
I'm using FF32.0.3 and webdriver 2.43.0. - Tom
Sorry, I'm out of 'luck' then. My FF 32.0.3 does work (on Ubuntu 14.04). - tessi
I'm finding that it's timing out at the same place everytime during automation, yet running manual tests do not encounter this problem. That's what is pointing me toward Selenium - Tom
I'm having the same issue, did you get to solve it? - mrcasals

2 Answers

13
votes

Another option to use RSpec::Retry which adds a retry option for intermittently failing specs.

require 'rspec/retry'

RSpec.configure do |config|
  # show retry status in spec process
  config.verbose_retry = true
  # Try twice (retry once)
  config.default_retry_count = 2
  # Only retry when Selenium raises Net::ReadTimeout
  config.exceptions_to_retry = [Net::ReadTimeout]
end
10
votes

The default timeout is 60 seconds. One thing to try is to adjust the internal timeout to see if that fixes it:

Capybara.register_driver :selenium do |app|
  profile = Selenium::WebDriver::Firefox::Profile.new
  client = Selenium::WebDriver::Remote::Http::Default.new
  client.timeout = 120 # instead of the default 60
  Capybara::Selenium::Driver.new(app, browser: :firefox, profile: profile, http_client: client)
end