19

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.

Nakilon
  • 34,866
  • 14
  • 107
  • 142
Tom
  • 1,055
  • 1
  • 14
  • 29
  • It started to work again for me with FF32 and the `selenium-webdriver`-gem v2.43.0. Which versions do you use? – tessi Oct 14 '14 at 07:54
  • I'm using FF32.0.3 and webdriver 2.43.0. – Tom Oct 14 '14 at 07:56
  • Sorry, I'm out of 'luck' then. My FF 32.0.3 does work (on Ubuntu 14.04). – tessi Oct 14 '14 at 08:05
  • 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 Oct 14 '14 at 08:18
  • I'm having the same issue, did you get to solve it? – mrcasals Dec 03 '14 at 10:47
  • It was environmental. My Webops guys tweaked the server. There was a bottleneck effect when loading some filter results. – Tom Dec 08 '14 at 11:17
  • To add, I also stopped using Selenium through Firefox. I used Chromedriver and that did show an improvement. I would recommend trying that – Tom Dec 09 '14 at 13:35

2 Answers2

13

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
Jay Prall
  • 5,295
  • 5
  • 49
  • 79
10

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
fabdurso
  • 2,366
  • 5
  • 29
  • 55
Jay Prall
  • 5,295
  • 5
  • 49
  • 79