Use capybara-webmock to avoid external requests

The images from OpenStreetMap take a while to load, sometimes even
causing Net::ReadTimeout errors if the internet connection is slow. It's
happened a lot recently on Travis builds.

Using capybara-webmock we guarantee the test suite doesn't fail due to
network issues.
This commit is contained in:
Javi Martín
2019-09-05 17:03:47 +02:00
parent 1f0a4cd875
commit 8bb5462253
4 changed files with 20 additions and 1 deletions

View File

@@ -82,6 +82,7 @@ end
group :test do group :test do
gem "capybara", "~> 2.17.0" gem "capybara", "~> 2.17.0"
gem "capybara-webmock", "~> 0.5.3"
gem "coveralls", "~> 0.8.22", require: false gem "coveralls", "~> 0.8.22", require: false
gem "database_cleaner", "~> 1.7.0" gem "database_cleaner", "~> 1.7.0"
gem "email_spec", "~> 2.1.0" gem "email_spec", "~> 2.1.0"

View File

@@ -123,6 +123,11 @@ GEM
rack (>= 1.0.0) rack (>= 1.0.0)
rack-test (>= 0.5.4) rack-test (>= 0.5.4)
xpath (>= 2.0, < 4.0) xpath (>= 2.0, < 4.0)
capybara-webmock (0.5.3)
capybara (>= 2.4, < 4)
rack (>= 1.4)
rack-proxy (>= 0.6.0)
selenium-webdriver (~> 3.0)
childprocess (0.9.0) childprocess (0.9.0)
ffi (~> 1.0, >= 1.0.11) ffi (~> 1.0, >= 1.0.11)
chronic (0.10.2) chronic (0.10.2)
@@ -389,6 +394,8 @@ GEM
rack (>= 0.4) rack (>= 0.4)
rack-attack (5.0.1) rack-attack (5.0.1)
rack rack
rack-proxy (0.6.5)
rack
rack-test (0.6.3) rack-test (0.6.3)
rack (>= 1.0) rack (>= 1.0)
rails (5.0.7.2) rails (5.0.7.2)
@@ -584,6 +591,7 @@ DEPENDENCIES
capistrano-rails (~> 1.4.0) capistrano-rails (~> 1.4.0)
capistrano3-delayed-job (~> 1.7.3) capistrano3-delayed-job (~> 1.7.3)
capybara (~> 2.17.0) capybara (~> 2.17.0)
capybara-webmock (~> 0.5.3)
ckeditor (~> 4.2.3) ckeditor (~> 4.2.3)
cocoon (~> 1.2.9) cocoon (~> 1.2.9)
coffee-rails (~> 4.2.2) coffee-rails (~> 4.2.2)

View File

@@ -33,7 +33,9 @@ end
Capybara.register_driver :headless_chrome do |app| Capybara.register_driver :headless_chrome do |app|
capabilities = Selenium::WebDriver::Remote::Capabilities.chrome( capabilities = Selenium::WebDriver::Remote::Capabilities.chrome(
chromeOptions: { args: %w(headless no-sandbox window-size=1200,600) } chromeOptions: {
args: %W[headless no-sandbox window-size=1200,600 proxy-server=127.0.0.1:#{Capybara::Webmock.port_number}]
}
) )
Capybara::Selenium::Driver.new( Capybara::Selenium::Driver.new(

View File

@@ -65,6 +65,14 @@ RSpec.configure do |config|
end end
end end
config.before(:each, type: :feature) do
Capybara::Webmock.start
end
config.after(:suite) do
Capybara::Webmock.stop
end
config.after(:each, :page_driver) do config.after(:each, :page_driver) do
page.driver.reset! page.driver.reset!
end end