diff --git a/Gemfile b/Gemfile index 0d1e077bd0..d93dc224a6 100644 --- a/Gemfile +++ b/Gemfile @@ -54,8 +54,8 @@ group :test do gem 'capybara' gem 'database_cleaner' gem 'factory_girl_rails' - gem 'poltergeist' gem 'rails-controller-testing' + gem 'selenium-webdriver' gem 'webmock' end diff --git a/Gemfile.lock b/Gemfile.lock index b533418d58..33166cbc94 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -191,8 +191,9 @@ GEM carrierwave-aws (1.1.0) aws-sdk (~> 2.0) carrierwave (>= 0.7, < 2.0) + childprocess (0.7.0) + ffi (~> 1.0, >= 1.0.11) clipboard-rails (1.7.1) - cliver (0.3.2) coffee-rails (4.2.2) coffee-script (>= 2.2.0) railties (>= 4.0.0) @@ -553,10 +554,6 @@ GEM peek sidekiq pg (0.21.0) - poltergeist (1.15.0) - capybara (~> 2.1) - cliver (~> 0.3.1) - websocket-driver (>= 0.2.0) posix-spawn (0.3.13) power_converter (0.1.2) powerpack (0.1.1) @@ -733,6 +730,9 @@ GEM useragent select2-rails (3.5.10) thor (~> 0.14) + selenium-webdriver (3.4.2) + childprocess (~> 0.5) + rubyzip (~> 1.0) sidekiq (5.0.2) concurrent-ruby (~> 1.0) connection_pool (~> 2.2, >= 2.2.0) @@ -881,7 +881,6 @@ DEPENDENCIES peek-redis peek-sidekiq pg - poltergeist puma (~> 3.7) rails (~> 5.1.1) rails-controller-testing @@ -895,6 +894,7 @@ DEPENDENCIES sass-rails (~> 5.0) scss_lint secure_headers + selenium-webdriver sidekiq simplecov solr_wrapper (~> 1.0) diff --git a/spec/rails_helper.rb b/spec/rails_helper.rb index 28adf2ba43..3a44bc639d 100644 --- a/spec/rails_helper.rb +++ b/spec/rails_helper.rb @@ -17,7 +17,6 @@ require 'spec_helper' require 'rspec/rails' require 'capybara/rails' -require 'capybara/poltergeist' require 'database_cleaner' require 'active_fedora/cleaner' @@ -54,22 +53,20 @@ # Uses faster rack_test driver when JavaScript support not needed Capybara.default_driver = :rack_test -Capybara.javascript_driver = :poltergeist - -# Adding the below to deal with random Capybara-related timeouts in CI. -# Found in this thread: https://github.com/teampoltergeist/poltergeist/issues/375 -poltergeist_options = { - js_errors: false, - timeout: 30, - logger: nil, - phantomjs_logger: StringIO.new, - phantomjs_options: [ - '--load-images=no', - '--ignore-ssl-errors=yes' - ] -} -Capybara.register_driver(:poltergeist) do |app| - Capybara::Poltergeist::Driver.new(app, poltergeist_options) +Capybara.javascript_driver = :headless_chromium + +Capybara.register_driver :headless_chromium do |app| + caps = Selenium::WebDriver::Remote::Capabilities.chrome( + "chromeOptions" => { + # 'binary' => "/chromium-latest-linux/466395/chrome-linux/chrome", + 'args' => %w(headless no-sandbox disable-gpu) + } + ) + Capybara::Selenium::Driver.new( + app, + browser: :chrome, + desired_capabilities: caps + ) end RSpec.configure do |config|