diff --git a/Gemfile b/Gemfile index 475d498..b35cee6 100644 --- a/Gemfile +++ b/Gemfile @@ -35,7 +35,7 @@ gem 'json' gem 'mediawiki-gateway', git: 'https://github.com/MusikAnimal/mediawiki-gateway' gem 'paperclip' gem 'friendly_id' -gem 'recommendify', git: 'https://github.com/paulasmuth/recommendify', ref: '34308c4' +gem 'recommendify', git: 'https://github.com/Kinoba/recommendify', ref: 'd8c252f' # background jobs gem 'sidekiq' @@ -72,6 +72,7 @@ group :test do gem 'vcr' gem 'capybara' gem 'poltergeist' + gem 'selenium-webdriver' gem 'database_cleaner' gem 'timecop' end diff --git a/Gemfile.lock b/Gemfile.lock index 7308701..2796255 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,3 +1,11 @@ +GIT + remote: https://github.com/Kinoba/recommendify + revision: d8c252fb0a2496904ba46b3206a0db66ef25166f + ref: d8c252f + specs: + recommendify (0.3.8) + redis (>= 2.2.2) + GIT remote: https://github.com/MusikAnimal/mediawiki-gateway revision: 26b225f7374cdc94ea97effb5042e893d956c987 @@ -5,14 +13,6 @@ GIT mediawiki-gateway (1.2.7) rest-client (~> 2.0) -GIT - remote: https://github.com/paulasmuth/recommendify - revision: 34308c41800a0ea9b02842c4cf84e8bcc5dd1f63 - ref: 34308c4 - specs: - recommendify (0.3.6) - redis (>= 2.2.2) - GIT remote: https://github.com/ryanb/nested_form revision: 1b0689dfb4d230ceabd278eba159fcb02f23c68a @@ -94,6 +94,7 @@ GEM rack (>= 1.0.0) rack-test (>= 0.5.4) xpath (>= 2.0, < 4.0) + childprocess (3.0.0) chronic (0.10.2) climate_control (0.2.0) cliver (0.3.2) @@ -225,8 +226,8 @@ GEM plos (0.0.7) nokogiri rest-client - poltergeist (1.17.0) - capybara (~> 2.1) + poltergeist (1.18.1) + capybara (>= 2.1, < 4) cliver (~> 0.3.1) websocket-driver (>= 0.2.0) power_assert (1.1.1) @@ -326,6 +327,9 @@ GEM tilt (>= 1.1, < 3) scrypt (3.0.5) ffi-compiler (>= 1.0, < 2.0) + selenium-webdriver (3.142.7) + childprocess (>= 0.5, < 4.0) + rubyzip (>= 1.2.2) sentry-raven (2.7.2) faraday (>= 0.7.6, < 1.0) shellany (0.0.1) @@ -386,7 +390,7 @@ GEM addressable (>= 2.3.6) crack (>= 0.3.2) hashdiff - websocket-driver (0.7.0) + websocket-driver (0.7.5) websocket-extensions (>= 0.1.0) websocket-extensions (0.1.5) whenever (0.10.0) @@ -442,6 +446,7 @@ DEPENDENCIES rvm-capistrano (= 1.4.4) sanitize sass-rails + selenium-webdriver sentry-raven shoulda-context sidekiq diff --git a/spec/features/search_spec.rb b/spec/features/search_spec.rb index b350a3a..b1871a5 100644 --- a/spec/features/search_spec.rb +++ b/spec/features/search_spec.rb @@ -1,6 +1,5 @@ # frozen_string_literal: true require 'spec_helper' - feature 'search' do let!(:snp) { create(:snp, name: 'foo123') } let!(:phenotype) { create(:phenotype, characteristic: 'foonotype') } diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index 1c8b987..d03ca10 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -11,7 +11,8 @@ require 'factory_bot_rails' require 'pry-rails' unless ENV['CI'] require 'authlogic/test_case' require 'capybara/poltergeist' -Capybara.javascript_driver = :poltergeist +# commenting out poltergeist as phantomjs breaks Github tests +Capybara.javascript_driver = :selenium # Requires supporting ruby files with custom matchers and macros, etc, diff --git a/spec/support/capybara_config.rb b/spec/support/capybara_config.rb new file mode 100644 index 0000000..630d718 --- /dev/null +++ b/spec/support/capybara_config.rb @@ -0,0 +1,33 @@ +# frozen_string_literal: true + +# from https://www.railsagency.com/blog/2020/03/11/how-to-configure-full-stack-integration-testing-with-selenium-and-ruby-on-rails/ +# lots of options, but gets around 'exit code 1' on github +Capybara.register_driver :chrome_headless do |app| + capabilities = Selenium::WebDriver::Remote::Capabilities.chrome( + 'goog:chromeOptions': { + args: %w[no-sandbox headless disable-gpu --window-size=1920,1080] + } + ) + Capybara::Selenium::Driver.new(app, browser: :chrome, desired_capabilities: capabilities) +end + +# Ensure Log directory exists +`mkdir -p tmp/selenium_logs` + +Capybara.register_driver :chrome do |app| + capabilities = Selenium::WebDriver::Remote::Capabilities.chrome( + 'goog:chromeOptions': { args: %w[start-maximized] } + ) + + Capybara::Selenium::Driver.new( + app, + browser: :chrome, + desired_capabilities: capabilities, + driver_opts: { + log_path: "./tmp/selenium_logs/selenium-#{Time.now.to_i}.log", + verbose: true + } + ) +end + +Capybara.javascript_driver = ENV.fetch('CAPYBARA_JAVASCRIPT_DRIVER', :chrome_headless).to_sym