From 5667c0058758f0d04fedb1c5c48418fe4554fd97 Mon Sep 17 00:00:00 2001 From: Eelco de Vlieger Date: Wed, 8 May 2019 19:10:14 +0100 Subject: [PATCH 1/4] issue 3450 - add webdrivers dependency (+ spec helper setup) and remove chromedriver-helper dependency https://github.com/openfoodfoundation/openfoodnetwork/issues/3450 --- Gemfile | 2 +- spec/spec_helper.rb | 8 +++++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/Gemfile b/Gemfile index 0e0792b3fc..4a550c16ac 100644 --- a/Gemfile +++ b/Gemfile @@ -126,7 +126,7 @@ group :test, :development do gem 'letter_opener', '>= 1.4.1' gem 'timecop' gem 'selenium-webdriver' - gem 'chromedriver-helper' + gem 'webdrivers', '~> 3.8' gem 'rspec-retry' gem 'json_spec', '~> 1.1.4' gem 'unicorn-rails' diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index 3b0ae37fb7..1f1af38528 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -22,10 +22,16 @@ require 'database_cleaner' require 'rspec/retry' require 'paper_trail/frameworks/rspec' +require 'webdrivers' + # Allow connections to phantomjs/selenium whilst raising errors # when connecting to external sites require 'webmock/rspec' -WebMock.disable_net_connect!(:allow_localhost => true) +WebMock.enable! +WebMock.disable_net_connect!({ + allow_localhost: true, + allow: 'chromedriver.storage.googleapis.com' +}) # Requires supporting ruby files with custom matchers and macros, etc, # in spec/support/ and its subdirectories. From 2900dd89d80206ca985d8a6152f4cb84269cf4a7 Mon Sep 17 00:00:00 2001 From: Eelco de Vlieger Date: Wed, 8 May 2019 19:50:36 +0100 Subject: [PATCH 2/4] issue 3450 - update webdrivers version - version 3.9 was released yesterday, which caused a test error, so setting version to latest 3.8.1 for now --- Gemfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile b/Gemfile index 4a550c16ac..4684c76970 100644 --- a/Gemfile +++ b/Gemfile @@ -126,7 +126,7 @@ group :test, :development do gem 'letter_opener', '>= 1.4.1' gem 'timecop' gem 'selenium-webdriver' - gem 'webdrivers', '~> 3.8' + gem 'webdrivers', '3.8.1' gem 'rspec-retry' gem 'json_spec', '~> 1.1.4' gem 'unicorn-rails' From d498ecf9010507bc668d9cd6413e78e700438b6d Mon Sep 17 00:00:00 2001 From: Eelco de Vlieger Date: Wed, 8 May 2019 22:28:31 +0100 Subject: [PATCH 3/4] Issue 3450 - webdrivers update. Ran `bundle install` to update Gemfile.lock (suggestion by semaphoreci check) Moved webdrivers gem down in the list to be in better alphabetical order (suggested by codeclimate check) --- Gemfile | 2 +- Gemfile.lock | 12 +++++------- 2 files changed, 6 insertions(+), 8 deletions(-) diff --git a/Gemfile b/Gemfile index 4684c76970..5eb908ddae 100644 --- a/Gemfile +++ b/Gemfile @@ -126,12 +126,12 @@ group :test, :development do gem 'letter_opener', '>= 1.4.1' gem 'timecop' gem 'selenium-webdriver' - gem 'webdrivers', '3.8.1' gem 'rspec-retry' gem 'json_spec', '~> 1.1.4' gem 'unicorn-rails' gem 'atomic' gem 'knapsack' + gem 'webdrivers', '3.8.1' end group :test do diff --git a/Gemfile.lock b/Gemfile.lock index 3d03da5a6f..a91b35f493 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -179,8 +179,6 @@ GEM tilt angularjs-file-upload-rails (2.4.1) angularjs-rails (1.5.5) - archive-zip (0.7.0) - io-like (~> 0.3.0) arel (3.0.3) ast (2.4.0) atomic (1.1.101) @@ -211,9 +209,6 @@ GEM xpath (>= 2.0, < 4.0) childprocess (0.9.0) ffi (~> 1.0, >= 1.0.11) - chromedriver-helper (1.1.0) - archive-zip (~> 0.7.0) - nokogiri (~> 1.6) chronic (0.10.2) chunky_png (1.3.10) climate_control (0.2.0) @@ -500,7 +495,6 @@ GEM i18n (>= 0.6.6) immigrant (0.3.6) activerecord (>= 3.0) - io-like (0.3.0) ipaddress (0.8.3) jaro_winkler (1.5.1) journey (1.0.4) @@ -767,6 +761,10 @@ GEM railties (>= 3.0) warden (1.2.7) rack (>= 1.0) + webdrivers (3.8.1) + nokogiri (~> 1.6) + rubyzip (~> 1.0) + selenium-webdriver (~> 3.0) webmock (3.5.1) addressable (>= 2.3.6) crack (>= 0.3.2) @@ -797,7 +795,6 @@ DEPENDENCIES bugsnag byebug (~> 9.0.0) capybara (>= 2.15.4) - chromedriver-helper coffee-rails (~> 3.2.1) combine_pdf compass-rails @@ -883,6 +880,7 @@ DEPENDENCIES unicorn unicorn-rails web! + webdrivers (= 3.8.1) webmock whenever wicked_pdf From 5858a832395b9ab95b4356128c6237ce02f24abb Mon Sep 17 00:00:00 2001 From: luisramos0 Date: Thu, 23 May 2019 20:31:52 +0100 Subject: [PATCH 4/4] Simplify spec_helper config to make file downloads work in headless chrome --- spec/spec_helper.rb | 14 +++----------- 1 file changed, 3 insertions(+), 11 deletions(-) diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index 1f1af38528..1add45e58f 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -52,17 +52,9 @@ Capybara.register_driver :chrome do |app| options = Selenium::WebDriver::Chrome::Options.new( args: %w[headless disable-gpu no-sandbox window-size=1280,768] ) - driver = Capybara::Selenium::Driver.new(app, browser: :chrome, options: options) - - ### Allow file downloads in headless chrome - ### https://bugs.chromium.org/p/chromium/issues/detail?id=696481#c89 - bridge = driver.browser.send(:bridge) - path = '/session/:session_id/chromium/send_command' - path[':session_id'] = bridge.session_id - bridge.http.call(:post, path, cmd: 'Page.setDownloadBehavior', - params: { behavior: 'allow', downloadPath: DownloadsHelper.path.to_s }) - - driver + Capybara::Selenium::Driver + .new(app, browser: :chrome, options: options) + .tap { |driver| driver.browser.download_path = DownloadsHelper.path.to_s } end Capybara.default_max_wait_time = 30