From 930acfbd6005f0f3bb23ce6984107a8f05d4dd4b Mon Sep 17 00:00:00 2001 From: Judah Meek Date: Thu, 19 Apr 2018 01:43:33 -0500 Subject: [PATCH 1/6] test stripping out poltergeist --- .travis.yml | 5 ----- spec/rails_helper.rb | 37 +------------------------------------ 2 files changed, 1 insertion(+), 41 deletions(-) diff --git a/.travis.yml b/.travis.yml index 15205d73..35407187 100644 --- a/.travis.yml +++ b/.travis.yml @@ -17,11 +17,6 @@ env: global: - RAILS_ENV=test - CXX=g++-4.9 -before_install: - - mkdir $PWD/travis-phantomjs - - curl -sSL https://github.com/Medium/phantomjs/releases/download/v2.1.1/phantomjs-2.1.1-linux-x86_64.tar.bz2 -o $PWD/travis-phantomjs/phantomjs-2.1.1-linux-x86_64.tar.bz2 - - tar -xvf $PWD/travis-phantomjs/phantomjs-2.1.1-linux-x86_64.tar.bz2 -C $PWD/travis-phantomjs - - export PATH=$PWD/travis-phantomjs/phantomjs-2.1.1-linux-x86_64/bin:$PATH install: - bundle install - chromedriver-update diff --git a/spec/rails_helper.rb b/spec/rails_helper.rb index b1683793..58c5ce10 100644 --- a/spec/rails_helper.rb +++ b/spec/rails_helper.rb @@ -51,9 +51,7 @@ default_driver = :selenium_chrome - supported_drivers = %i[ poltergeist poltergeist_errors_ok - poltergeist_no_animations webkit - selenium_chrome selenium_firefox selenium] + supported_drivers = %i[selenium_chrome selenium_firefox selenium] driver = ENV["DRIVER"].try(:to_sym) || default_driver Capybara.default_driver = driver @@ -62,39 +60,6 @@ end case driver - when :poltergeist, :poltergeist_errors_ok, :poltergeist_no_animations - basic_opts = { - window_size: [1300, 1800], - screen_size: [1400, 1900], - phantomjs_options: ["--load-images=no", "--ignore-ssl-errors=true"], - timeout: 180 - } - - Capybara.register_driver :poltergeist do |app| - Capybara::Poltergeist::Driver.new(app, basic_opts) - end - - no_animation_opts = basic_opts.merge( # Leaving animations off, as a sleep was still needed. - extensions: ["#{Rails.root}/spec/support/phantomjs-disable-animations.js"] - ) - - Capybara.register_driver :poltergeist_no_animations do |app| - Capybara::Poltergeist::Driver.new(app, no_animation_opts) - end - - Capybara.register_driver :poltergeist_errors_ok do |app| - Capybara::Poltergeist::Driver.new(app, no_animation_opts.merge(js_errors: false)) - end - Capybara::Screenshot.register_driver(:poltergeist) do |js_driver, path| - js_driver.browser.save_screenshot(path) - end - Capybara::Screenshot.register_driver(:poltergeist_no_animations) do |js_driver, path| - js_driver.render(path, full: true) - end - Capybara::Screenshot.register_driver(:poltergeist_errors_ok) do |js_driver, path| - js_driver.render(path, full: true) - end - when :selenium_chrome DriverRegistration.register_selenium_chrome when :selenium_firefox, :selenium From 5bf4b0c15577fc47e129db1138235de40383b644 Mon Sep 17 00:00:00 2001 From: Judah Meek Date: Thu, 19 Apr 2018 01:47:27 -0500 Subject: [PATCH 2/6] restrict test suite --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 35407187..3647e67e 100644 --- a/.travis.yml +++ b/.travis.yml @@ -35,4 +35,4 @@ before_script: script: - bundle exec rake db:schema:load - - bundle exec rake + - rspec spec/features/edit_comment_spec.rb From 80d0c451bd19fac20279bb2d659cdd24cb6f6c42 Mon Sep 17 00:00:00 2001 From: Judah Meek Date: Thu, 19 Apr 2018 02:06:33 -0500 Subject: [PATCH 3/6] get rid of more stuff --- spec/rails_helper.rb | 3 --- 1 file changed, 3 deletions(-) diff --git a/spec/rails_helper.rb b/spec/rails_helper.rb index 58c5ce10..e906d86f 100644 --- a/spec/rails_helper.rb +++ b/spec/rails_helper.rb @@ -1,13 +1,10 @@ # This file is copied to spec/ when you run "rails generate rspec:install" ENV["RAILS_ENV"] ||= "test" -require "coveralls" -Coveralls.wear!("rails") # must occur before any of your application code is required require "spec_helper" require File.expand_path("../../config/environment", __FILE__) require "rspec/rails" require "capybara/rspec" -require "capybara/poltergeist" require "capybara-screenshot/rspec" require "database_cleaner" From 5e8e229182fe5027377f6d236ee4a1c8a42f3c51 Mon Sep 17 00:00:00 2001 From: Judah Meek Date: Fri, 20 Apr 2018 03:28:30 -0500 Subject: [PATCH 4/6] log versions --- .travis.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.travis.yml b/.travis.yml index 3647e67e..8b0a7775 100644 --- a/.travis.yml +++ b/.travis.yml @@ -23,7 +23,10 @@ install: - nvm install stable && nvm alias default stable - npm install -g npm@5.3.x - npm install -g yarn + - node --version - npm --version + - google-chrome --version + - chromedriver --version - yarn install - rake db:setup From 221b566aa71043c5d813023514a70406c953a637 Mon Sep 17 00:00:00 2001 From: Judah Meek Date: Fri, 20 Apr 2018 03:50:10 -0500 Subject: [PATCH 5/6] make sure chrome is latest version --- .travis.yml | 10 ++-- spec/spec_helper.rb | 2 +- spec/support/poltergeist.rb | 92 ------------------------------------- 3 files changed, 8 insertions(+), 96 deletions(-) delete mode 100644 spec/support/poltergeist.rb diff --git a/.travis.yml b/.travis.yml index 8b0a7775..2a9167e6 100644 --- a/.travis.yml +++ b/.travis.yml @@ -2,7 +2,7 @@ language: - ruby rvm: - 2.4.1 -sudo: false +sudo: true notifications: slack: shakacode:YvfXbuFMcFAHt6ZjABIs0KET addons: @@ -20,8 +20,12 @@ env: install: - bundle install - chromedriver-update + - wget -q -O - https://dl.google.com/linux/linux_signing_key.pub | sudo apt-key add - + - sudo sh -c 'echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google.list' + - sudo apt-get update + - sudo apt-get install google-chrome-stable - nvm install stable && nvm alias default stable - - npm install -g npm@5.3.x + - npm install -g npm@5.6.x - npm install -g yarn - node --version - npm --version @@ -38,4 +42,4 @@ before_script: script: - bundle exec rake db:schema:load - - rspec spec/features/edit_comment_spec.rb + - bundle exec rake diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index 0a8eeb90..eea9c198 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -40,7 +40,7 @@ # Show retry status in spec process config.verbose_retry = true # Try twice (retry once) - config.default_retry_count = 4 + config.default_retry_count = 2 # Only retry when Selenium raises Net::ReadTimeout # config.exceptions_to_retry = [Net::ReadTimeout] end diff --git a/spec/support/poltergeist.rb b/spec/support/poltergeist.rb deleted file mode 100644 index d138d1a0..00000000 --- a/spec/support/poltergeist.rb +++ /dev/null @@ -1,92 +0,0 @@ -# This file supports 2 strategies: -# 1. switch_to_selenium: switch drivers -# 2. restart_poltergeist - -RESTART_PHANTOMJS = ENV["RESTART_PHANTOMJS"] && - %w[TRUE YES].include?(ENV["RESTART_PHANTOMJS"].upcase) -puts "RESTART_PHANTOMJS = #{RESTART_PHANTOMJS}" - -CAPYBARA_TIMEOUT_RETRIES = 5 - -# HACK: workaround for Capybara Poltergeist StatusFailErrors, simply retries -# based on https://gist.github.com/afn/c04ccfe71d648763b306 -RSpec.configure do |config| - config.around(:each, type: :feature) do |ex| - example = RSpec.current_example - use_selenium = false - original_driver = Capybara.default_driver - CAPYBARA_TIMEOUT_RETRIES.times do - example.instance_variable_set("@exception", nil) - - # Private method in rspec: - # rspec-core-3.5.4/lib/rspec/core/memoized_helpers.rb:139 - __init_memoized - - if use_selenium - puts "Switching to selenium from #{Capybara.current_driver}" - Capybara.current_driver = js_selenium_driver - Capybara.javascript_driver = js_selenium_driver - end - - ex.run - - example_ex = example.exception - - break unless example_ex - - is_multiple_exception = example_ex.is_a?(RSpec::Core::MultipleExceptionError) - - break unless example_ex.is_a?(Capybara::Poltergeist::StatusFailError) || - example_ex.is_a?(Capybara::Poltergeist::DeadClient) || - is_multiple_exception - - if is_multiple_exception - m_exceptions = example_ex.all_exceptions - - idx = m_exceptions.find_index do |exception| - exception.is_a?(Capybara::Poltergeist::StatusFailError) || - exception.is_a?(Capybara::Poltergeist::DeadClient) || - exception.class < SystemCallError - end - - break unless idx - end - - puts "\n" - puts "=" * 80 - puts "Exception caught! #{example_ex}" - puts example_ex.message - puts "when running example:\n #{example.full_description}" - puts " at #{example.location} with driver #{Capybara.current_driver}." - - if RESTART_PHANTOMJS - PhantomJSRestart.call - else - use_selenium = true - end - puts "=" * 80 - end - Capybara.current_driver = original_driver - Capybara.javascript_driver = original_driver - Capybara.use_default_driver - end -end - -# Rather than using switching to use selenium, we could have restarted Phantomjs -module PhantomJSRestart - def self.call - puts "Restarting phantomjs: iterating through capybara sessions..." - session_pool = Capybara.send("session_pool") - session_pool.each do |mode, session| - msg = " => #{mode} -- " - driver = session.driver - if driver.is_a?(Capybara::Poltergeist::Driver) - msg += "restarting" - driver.restart - else - msg += "not poltergeist: #{driver.class}" - end - puts msg - end - end -end From f67504b4ae794010237558f0fe0a4d68134cc102 Mon Sep 17 00:00:00 2001 From: Judah Meek Date: Sun, 22 Apr 2018 17:13:22 -0500 Subject: [PATCH 6/6] add coveralls back --- spec/rails_helper.rb | 2 ++ 1 file changed, 2 insertions(+) diff --git a/spec/rails_helper.rb b/spec/rails_helper.rb index e906d86f..cbbf405a 100644 --- a/spec/rails_helper.rb +++ b/spec/rails_helper.rb @@ -1,5 +1,7 @@ # This file is copied to spec/ when you run "rails generate rspec:install" ENV["RAILS_ENV"] ||= "test" +require "coveralls" +Coveralls.wear!("rails") # must occur before any of your application code is required require "spec_helper" require File.expand_path("../../config/environment", __FILE__)