diff --git a/Appraisals b/Appraisals index fd7c19f..dc26cdd 100644 --- a/Appraisals +++ b/Appraisals @@ -8,11 +8,13 @@ end appraise 'rails60-activeadmin22' do gem 'activeadmin', '~> 2.2.0' gem 'rails', '~> 6.0.0' + gem 'selenium-webdriver', require: false end appraise 'rails60-activeadmin' do gem 'activeadmin' gem 'rails', '~> 6.0.0' + gem 'selenium-webdriver', require: false end appraise 'rails61-activeadmin29' do diff --git a/Gemfile b/Gemfile index 07d2472..b61e25e 100644 --- a/Gemfile +++ b/Gemfile @@ -5,11 +5,15 @@ source 'https://rubygems.org' gemspec group :development, :test do + gem 'puma' + gem 'sassc' + gem 'sqlite3' + # Testing gem 'capybara' + gem 'cuprite' gem 'rspec_junit_formatter' gem 'rspec-rails' - gem 'selenium-webdriver' # Linters gem 'brakeman' diff --git a/gemfiles/rails52_activeadmin20.gemfile b/gemfiles/rails52_activeadmin20.gemfile index 0f86813..81fd79e 100644 --- a/gemfiles/rails52_activeadmin20.gemfile +++ b/gemfiles/rails52_activeadmin20.gemfile @@ -10,9 +10,9 @@ group :development, :test do gem "sassc" gem "sqlite3" gem "capybara" + gem "cuprite" gem "rspec_junit_formatter" gem "rspec-rails" - gem "selenium-webdriver" gem "brakeman" gem "fasterer" gem "reek" diff --git a/gemfiles/rails52_activeadmin20.gemfile.lock b/gemfiles/rails52_activeadmin20.gemfile.lock index 554497b..82d9f65 100644 --- a/gemfiles/rails52_activeadmin20.gemfile.lock +++ b/gemfiles/rails52_activeadmin20.gemfile.lock @@ -86,17 +86,25 @@ GEM rack-test (>= 0.6.3) regexp_parser (>= 1.5, < 3.0) xpath (~> 3.2) - childprocess (4.1.0) + cliver (0.3.2) coderay (1.1.3) colorize (0.8.1) concurrent-ruby (1.1.10) crass (1.0.6) + cuprite (0.13) + capybara (>= 2.1, < 4) + ferrum (~> 0.11.0) diff-lcs (1.5.0) erubi (1.10.0) execjs (2.8.1) fasterer (0.9.0) colorize (~> 0.7) ruby_parser (>= 3.14.1) + ferrum (0.11) + addressable (~> 2.5) + cliver (~> 0.3) + concurrent-ruby (~> 1.1) + websocket-driver (>= 0.6, < 0.8) ffi (1.15.5) formtastic (3.1.5) actionpack (>= 3.2.13) @@ -247,7 +255,6 @@ GEM ruby2_keywords (0.0.5) ruby_parser (3.18.1) sexp_processor (~> 4.16) - rubyzip (2.3.2) sass (3.7.4) sass-listen (~> 4.0.0) sass-listen (4.0.0) @@ -255,10 +262,6 @@ GEM rb-inotify (~> 0.9, >= 0.9.7) sassc (2.4.0) ffi (~> 1.9) - selenium-webdriver (4.1.0) - childprocess (>= 0.5, < 5.0) - rexml (~> 3.2, >= 3.2.5) - rubyzip (>= 1.2.2) sexp_processor (4.16.0) sprockets (4.0.3) concurrent-ruby (~> 1.0) @@ -293,6 +296,7 @@ DEPENDENCIES appraisal (~> 2.4) brakeman capybara + cuprite fasterer pry-rails puma @@ -306,7 +310,6 @@ DEPENDENCIES rubocop-rails rubocop-rspec sassc - selenium-webdriver sqlite3 BUNDLED WITH diff --git a/gemfiles/rails60_activeadmin.gemfile b/gemfiles/rails60_activeadmin.gemfile index aedfc68..b0f21d9 100644 --- a/gemfiles/rails60_activeadmin.gemfile +++ b/gemfiles/rails60_activeadmin.gemfile @@ -4,15 +4,16 @@ source "https://rubygems.org" gem "activeadmin" gem "rails", "~> 6.0.0" +gem "selenium-webdriver", require: false group :development, :test do gem "puma" gem "sassc" gem "sqlite3" gem "capybara" + gem "cuprite" gem "rspec_junit_formatter" gem "rspec-rails" - gem "selenium-webdriver" gem "brakeman" gem "fasterer" gem "reek" diff --git a/gemfiles/rails60_activeadmin.gemfile.lock b/gemfiles/rails60_activeadmin.gemfile.lock index c4e3538..8f20e2f 100644 --- a/gemfiles/rails60_activeadmin.gemfile.lock +++ b/gemfiles/rails60_activeadmin.gemfile.lock @@ -93,15 +93,24 @@ GEM regexp_parser (>= 1.5, < 3.0) xpath (~> 3.2) childprocess (4.1.0) + cliver (0.3.2) coderay (1.1.3) colorize (0.8.1) concurrent-ruby (1.1.10) crass (1.0.6) + cuprite (0.13) + capybara (>= 2.1, < 4) + ferrum (~> 0.11.0) diff-lcs (1.5.0) erubi (1.10.0) fasterer (0.9.0) colorize (~> 0.7) ruby_parser (>= 3.14.1) + ferrum (0.11) + addressable (~> 2.5) + cliver (~> 0.3) + concurrent-ruby (~> 1.1) + websocket-driver (>= 0.6, < 0.8) ffi (1.15.5) formtastic (4.0.0) actionpack (>= 5.2.0) @@ -289,6 +298,7 @@ DEPENDENCIES appraisal (~> 2.4) brakeman capybara + cuprite fasterer pry-rails puma diff --git a/gemfiles/rails60_activeadmin22.gemfile b/gemfiles/rails60_activeadmin22.gemfile index e51399d..3fb95e8 100644 --- a/gemfiles/rails60_activeadmin22.gemfile +++ b/gemfiles/rails60_activeadmin22.gemfile @@ -4,15 +4,16 @@ source "https://rubygems.org" gem "activeadmin", "~> 2.2.0" gem "rails", "~> 6.0.0" +gem "selenium-webdriver", require: false group :development, :test do gem "puma" gem "sassc" gem "sqlite3" gem "capybara" + gem "cuprite" gem "rspec_junit_formatter" gem "rspec-rails" - gem "selenium-webdriver" gem "brakeman" gem "fasterer" gem "reek" diff --git a/gemfiles/rails60_activeadmin22.gemfile.lock b/gemfiles/rails60_activeadmin22.gemfile.lock index 474c802..0cf7549 100644 --- a/gemfiles/rails60_activeadmin22.gemfile.lock +++ b/gemfiles/rails60_activeadmin22.gemfile.lock @@ -100,16 +100,25 @@ GEM regexp_parser (>= 1.5, < 3.0) xpath (~> 3.2) childprocess (4.1.0) + cliver (0.3.2) coderay (1.1.3) colorize (0.8.1) concurrent-ruby (1.1.10) crass (1.0.6) + cuprite (0.13) + capybara (>= 2.1, < 4) + ferrum (~> 0.11.0) diff-lcs (1.5.0) erubi (1.10.0) execjs (2.8.1) fasterer (0.9.0) colorize (~> 0.7) ruby_parser (>= 3.14.1) + ferrum (0.11) + addressable (~> 2.5) + cliver (~> 0.3) + concurrent-ruby (~> 1.1) + websocket-driver (>= 0.6, < 0.8) ffi (1.15.5) formtastic (3.1.5) actionpack (>= 3.2.13) @@ -308,6 +317,7 @@ DEPENDENCIES appraisal (~> 2.4) brakeman capybara + cuprite fasterer pry-rails puma diff --git a/gemfiles/rails61_activeadmin.gemfile b/gemfiles/rails61_activeadmin.gemfile index b54eb10..014d339 100644 --- a/gemfiles/rails61_activeadmin.gemfile +++ b/gemfiles/rails61_activeadmin.gemfile @@ -10,9 +10,9 @@ group :development, :test do gem "sassc" gem "sqlite3" gem "capybara" + gem "cuprite" gem "rspec_junit_formatter" gem "rspec-rails" - gem "selenium-webdriver" gem "brakeman" gem "fasterer" gem "reek" diff --git a/gemfiles/rails61_activeadmin.gemfile.lock b/gemfiles/rails61_activeadmin.gemfile.lock index 8dc48c0..4cf55ff 100644 --- a/gemfiles/rails61_activeadmin.gemfile.lock +++ b/gemfiles/rails61_activeadmin.gemfile.lock @@ -96,16 +96,24 @@ GEM rack-test (>= 0.6.3) regexp_parser (>= 1.5, < 3.0) xpath (~> 3.2) - childprocess (4.1.0) + cliver (0.3.2) coderay (1.1.3) colorize (0.8.1) concurrent-ruby (1.1.10) crass (1.0.6) + cuprite (0.13) + capybara (>= 2.1, < 4) + ferrum (~> 0.11.0) diff-lcs (1.5.0) erubi (1.10.0) fasterer (0.9.0) colorize (~> 0.7) ruby_parser (>= 3.14.1) + ferrum (0.11) + addressable (~> 2.5) + cliver (~> 0.3) + concurrent-ruby (~> 1.1) + websocket-driver (>= 0.6, < 0.8) ffi (1.15.5) formtastic (4.0.0) actionpack (>= 5.2.0) @@ -255,13 +263,8 @@ GEM ruby2_keywords (0.0.5) ruby_parser (3.18.1) sexp_processor (~> 4.16) - rubyzip (2.3.2) sassc (2.4.0) ffi (~> 1.9) - selenium-webdriver (4.1.0) - childprocess (>= 0.5, < 5.0) - rexml (~> 3.2, >= 3.2.5) - rubyzip (>= 1.2.2) sexp_processor (4.16.0) sprockets (4.0.3) concurrent-ruby (~> 1.0) @@ -292,6 +295,7 @@ DEPENDENCIES appraisal (~> 2.4) brakeman capybara + cuprite fasterer pry-rails puma @@ -305,7 +309,6 @@ DEPENDENCIES rubocop-rails rubocop-rspec sassc - selenium-webdriver sqlite3 BUNDLED WITH diff --git a/gemfiles/rails61_activeadmin29.gemfile b/gemfiles/rails61_activeadmin29.gemfile index df62a7e..8a2479a 100644 --- a/gemfiles/rails61_activeadmin29.gemfile +++ b/gemfiles/rails61_activeadmin29.gemfile @@ -10,9 +10,9 @@ group :development, :test do gem "sassc" gem "sqlite3" gem "capybara" + gem "cuprite" gem "rspec_junit_formatter" gem "rspec-rails" - gem "selenium-webdriver" gem "brakeman" gem "fasterer" gem "reek" diff --git a/gemfiles/rails61_activeadmin29.gemfile.lock b/gemfiles/rails61_activeadmin29.gemfile.lock index def79ac..9404222 100644 --- a/gemfiles/rails61_activeadmin29.gemfile.lock +++ b/gemfiles/rails61_activeadmin29.gemfile.lock @@ -96,16 +96,24 @@ GEM rack-test (>= 0.6.3) regexp_parser (>= 1.5, < 3.0) xpath (~> 3.2) - childprocess (4.1.0) + cliver (0.3.2) coderay (1.1.3) colorize (0.8.1) concurrent-ruby (1.1.10) crass (1.0.6) + cuprite (0.13) + capybara (>= 2.1, < 4) + ferrum (~> 0.11.0) diff-lcs (1.5.0) erubi (1.10.0) fasterer (0.9.0) colorize (~> 0.7) ruby_parser (>= 3.14.1) + ferrum (0.11) + addressable (~> 2.5) + cliver (~> 0.3) + concurrent-ruby (~> 1.1) + websocket-driver (>= 0.6, < 0.8) ffi (1.15.5) formtastic (4.0.0) actionpack (>= 5.2.0) @@ -255,13 +263,8 @@ GEM ruby2_keywords (0.0.5) ruby_parser (3.18.1) sexp_processor (~> 4.16) - rubyzip (2.3.2) sassc (2.4.0) ffi (~> 1.9) - selenium-webdriver (4.1.0) - childprocess (>= 0.5, < 5.0) - rexml (~> 3.2, >= 3.2.5) - rubyzip (>= 1.2.2) sexp_processor (4.16.0) sprockets (4.0.3) concurrent-ruby (~> 1.0) @@ -292,6 +295,7 @@ DEPENDENCIES appraisal (~> 2.4) brakeman capybara + cuprite fasterer pry-rails puma @@ -305,7 +309,6 @@ DEPENDENCIES rubocop-rails rubocop-rspec sassc - selenium-webdriver sqlite3 BUNDLED WITH diff --git a/spec/support/capybara.rb b/spec/support/capybara.rb index 47fbd05..400342c 100644 --- a/spec/support/capybara.rb +++ b/spec/support/capybara.rb @@ -1,3 +1,12 @@ # frozen_string_literal: true Capybara.server = :puma +Capybara.default_driver = Capybara.javascript_driver = :cuprite + +RSpec.configure do |config| + # Make sure this hook runs before others + config.prepend_before(:each, type: :system) do + # Use JS driver always + driven_by Capybara.javascript_driver + end +end diff --git a/spec/support/capybara_cuprite.rb b/spec/support/capybara_cuprite.rb new file mode 100644 index 0000000..e607dba --- /dev/null +++ b/spec/support/capybara_cuprite.rb @@ -0,0 +1,26 @@ +# frozen_string_literal: true + +require 'capybara/cuprite' + +Capybara.register_driver(:cuprite) do |app| + browser_options = {}.tap do |opts| + opts['no-sandbox'] = nil if ENV['CI'] + end + + Capybara::Cuprite::Driver.new( + app, + **{ + window_size: [1600, 1280], + # See additional options for Dockerized environment in the respective section of this article + browser_options: browser_options, + # Increase Chrome startup wait time (required for stable CI builds) + process_timeout: 30, + # The number of seconds we'll wait for a response when communicating with browser. Default is 5 + timeout: 30, + # Enable debugging capabilities + inspector: true, + # Allow running Chrome in a headful mode by setting HEADLESS env var to a falsey value + headless: !ENV['CUPRITE_HEADLESS'].in?(%w[n 0 no false]) + } + ) +end diff --git a/spec/support/drivers.rb b/spec/support/drivers.rb deleted file mode 100644 index 5211d39..0000000 --- a/spec/support/drivers.rb +++ /dev/null @@ -1,7 +0,0 @@ -# frozen_string_literal: true - -RSpec.configure do |config| - config.before(:each, type: :system) do - driven_by(:selenium_chrome_headless) - end -end