Skip to content

Commit b4588db

Browse files
committed
Extract capybara_driver setup into sharable file
No need to maintain the same drivers and it's wast options in all our gems separately.
1 parent ceadf35 commit b4588db

File tree

5 files changed

+30
-84
lines changed

5 files changed

+30
-84
lines changed

admin/spec/spec_helper.rb

+2-20
Original file line numberDiff line numberDiff line change
@@ -42,29 +42,11 @@
4242
# CAPYBARA & SELENIUM
4343
require "capybara/rspec"
4444
require 'capybara-screenshot/rspec'
45-
require "selenium/webdriver"
45+
require "spree/testing_support/capybara_driver"
46+
4647
Capybara.save_path = ENV['CIRCLE_ARTIFACTS'] if ENV['CIRCLE_ARTIFACTS']
4748
Capybara.exact = true
4849
Capybara.disable_animation = true
49-
Capybara.register_driver :selenium_chrome_headless do |app|
50-
browser_options = ::Selenium::WebDriver::Chrome::Options.new
51-
browser_options.args << '--headless'
52-
browser_options.args << '--disable-gpu'
53-
browser_options.args << '--window-size=1920,1080'
54-
browser_options.args << '--disable-backgrounding-occluded-windows'
55-
Capybara::Selenium::Driver.new(app, browser: :chrome, options: browser_options)
56-
end
57-
Capybara.register_driver :selenium_chrome_headless_docker_friendly do |app|
58-
browser_options = ::Selenium::WebDriver::Chrome::Options.new
59-
browser_options.args << '--headless'
60-
browser_options.args << '--disable-gpu'
61-
# Sandbox cannot be used inside unprivileged Docker container
62-
browser_options.args << '--no-sandbox'
63-
browser_options.args << '--window-size=1240,1400'
64-
browser_options.args << '--disable-backgrounding-occluded-windows'
65-
Capybara::Selenium::Driver.new(app, browser: :chrome, options: browser_options)
66-
end
67-
Capybara.javascript_driver = (ENV['CAPYBARA_DRIVER'] || :selenium_chrome_headless).to_sym
6850
Capybara.default_max_wait_time = ENV['DEFAULT_MAX_WAIT_TIME'].to_f if ENV['DEFAULT_MAX_WAIT_TIME'].present?
6951
Capybara.enable_aria_label = true
7052

backend/spec/spec_helper.rb

+1-22
Original file line numberDiff line numberDiff line change
@@ -51,28 +51,7 @@
5151
Capybara.save_path = ENV['CIRCLE_ARTIFACTS'] if ENV['CIRCLE_ARTIFACTS']
5252
Capybara.exact = true
5353

54-
require "selenium/webdriver"
55-
56-
Capybara.register_driver :selenium_chrome_headless do |app|
57-
browser_options = ::Selenium::WebDriver::Chrome::Options.new
58-
browser_options.args << '--headless'
59-
browser_options.args << '--disable-gpu'
60-
browser_options.args << '--window-size=1920,1080'
61-
browser_options.args << '--disable-backgrounding-occluded-windows'
62-
Capybara::Selenium::Driver.new(app, browser: :chrome, options: browser_options)
63-
end
64-
Capybara.register_driver :selenium_chrome_headless_docker_friendly do |app|
65-
browser_options = ::Selenium::WebDriver::Chrome::Options.new
66-
browser_options.args << '--headless'
67-
browser_options.args << '--disable-gpu'
68-
# Sandbox cannot be used inside unprivileged Docker container
69-
browser_options.args << '--no-sandbox'
70-
browser_options.args << '--window-size=1240,1400'
71-
browser_options.args << '--disable-backgrounding-occluded-windows'
72-
Capybara::Selenium::Driver.new(app, browser: :chrome, options: browser_options)
73-
end
74-
75-
Capybara.javascript_driver = (ENV['CAPYBARA_DRIVER'] || :selenium_chrome_headless).to_sym
54+
require "spree/testing_support/capybara_driver"
7655

7756
Rails.application.config.i18n.raise_on_missing_translations = true
7857

Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
# frozen_string_literal: true
2+
3+
require "selenium/webdriver"
4+
5+
Capybara.register_driver :selenium_chrome_headless do |app|
6+
browser_options = ::Selenium::WebDriver::Chrome::Options.new
7+
browser_options.args << '--headless'
8+
browser_options.args << '--disable-gpu'
9+
browser_options.args << '--window-size=1920,1080'
10+
browser_options.args << '--disable-backgrounding-occluded-windows'
11+
Capybara::Selenium::Driver.new(app, browser: :chrome, options: browser_options)
12+
end
13+
14+
Capybara.register_driver :selenium_chrome_headless_docker_friendly do |app|
15+
browser_options = ::Selenium::WebDriver::Chrome::Options.new
16+
browser_options.args << '--headless'
17+
browser_options.args << '--disable-gpu'
18+
# Sandbox cannot be used inside unprivileged Docker container
19+
browser_options.args << '--no-sandbox'
20+
browser_options.args << '--window-size=1240,1400'
21+
browser_options.args << '--disable-backgrounding-occluded-windows'
22+
Capybara::Selenium::Driver.new(app, browser: :chrome, options: browser_options)
23+
end
24+
25+
Capybara.javascript_driver = (ENV['CAPYBARA_DRIVER'] || :selenium_chrome_headless).to_sym

legacy_promotions/spec/rails_helper.rb

+1-21
Original file line numberDiff line numberDiff line change
@@ -43,36 +43,16 @@
4343
require 'cancan/matchers'
4444
require 'spree/testing_support/capybara_ext'
4545

46-
require "selenium/webdriver"
47-
4846
ActiveJob::Base.queue_adapter = :test
4947

5048
Spree::TestingSupport::FactoryBot.add_paths_and_load!
5149

52-
Capybara.register_driver :selenium_chrome_headless do |app|
53-
browser_options = ::Selenium::WebDriver::Chrome::Options.new
54-
browser_options.args << '--headless'
55-
browser_options.args << '--disable-gpu'
56-
browser_options.args << '--window-size=1920,1080'
57-
browser_options.args << '--disable-backgrounding-occluded-windows'
58-
Capybara::Selenium::Driver.new(app, browser: :chrome, options: browser_options)
59-
end
60-
Capybara.register_driver :selenium_chrome_headless_docker_friendly do |app|
61-
browser_options = ::Selenium::WebDriver::Chrome::Options.new
62-
browser_options.args << '--headless'
63-
browser_options.args << '--disable-gpu'
64-
# Sandbox cannot be used inside unprivileged Docker container
65-
browser_options.args << '--no-sandbox'
66-
browser_options.args << '--window-size=1240,1400'
67-
browser_options.args << '--disable-backgrounding-occluded-windows'
68-
Capybara::Selenium::Driver.new(app, browser: :chrome, options: browser_options)
69-
end
50+
require "spree/testing_support/capybara_driver"
7051

7152
# AXE - ACCESSIBILITY
7253
require 'axe-rspec'
7354
require 'axe-capybara'
7455

75-
Capybara.javascript_driver = (ENV['CAPYBARA_DRIVER'] || :selenium_chrome_headless).to_sym
7656
Capybara.enable_aria_label = true
7757

7858
# VIEW COMPONENTS

promotions/spec/rails_helper.rb

+1-21
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,6 @@
6161
require "cancan/matchers"
6262
require "spree/testing_support/capybara_ext"
6363

64-
require "selenium/webdriver"
6564
# Requires factories defined in Solidus core and this extension.
6665
# See: lib/solidus_promotions/testing_support/factories.rb
6766
require "spree/testing_support/factory_bot"
@@ -75,27 +74,8 @@
7574
Spree::Config.promotions = SolidusPromotions.configuration
7675
ActiveJob::Base.queue_adapter = :test
7776

78-
Capybara.register_driver :selenium_chrome_headless do |app|
79-
browser_options = ::Selenium::WebDriver::Chrome::Options.new
80-
browser_options.args << '--headless'
81-
browser_options.args << '--disable-gpu'
82-
browser_options.args << '--window-size=1920,1080'
83-
browser_options.args << '--disable-backgrounding-occluded-windows'
84-
Capybara::Selenium::Driver.new(app, browser: :chrome, options: browser_options)
85-
end
86-
87-
Capybara.register_driver :selenium_chrome_headless_docker_friendly do |app|
88-
browser_options = ::Selenium::WebDriver::Chrome::Options.new
89-
browser_options.args << '--headless'
90-
browser_options.args << '--disable-gpu'
91-
# Sandbox cannot be used inside unprivileged Docker container
92-
browser_options.args << '--no-sandbox'
93-
browser_options.args << '--window-size=1240,1400'
94-
browser_options.args << '--disable-backgrounding-occluded-windows'
95-
Capybara::Selenium::Driver.new(app, browser: :chrome, options: browser_options)
96-
end
77+
require "spree/testing_support/capybara_driver"
9778

98-
Capybara.javascript_driver = (ENV['CAPYBARA_DRIVER'] || :selenium_chrome_headless).to_sym
9979
# Allow Capybara to find elements by aria-label attributes
10080
Capybara.enable_aria_label = true
10181

0 commit comments

Comments
 (0)