Skip to content

Commit 6e3b17c

Browse files
committed
Refactor/Consolidate Capybara config
- Moved all Capybara settings into `spec/support/capybara.rb` to centralize test configuration. - Use `Capybara.default_driver = :rack_test` (prior to this, `spec/rails_helper.rb` was overriding the assignment) - Use `Capybara.javascript_driver = :selenium_chrome_headless_custom` (previously defined in `spec/rails_helper.rb`) - Use `Capybara.default_max_wait_time = 10`
1 parent a025258 commit 6e3b17c

2 files changed

Lines changed: 12 additions & 25 deletions

File tree

spec/rails_helper.rb

Lines changed: 0 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -80,21 +80,3 @@
8080
config.include Devise::Test::ControllerHelpers, type: :view
8181
config.include Pundit::Matchers, type: :policy
8282
end
83-
84-
Capybara.register_driver :headless_chrome do |app|
85-
options = Selenium::WebDriver::Chrome::Options.new
86-
options.add_argument('--headless')
87-
options.add_argument('--no-sandbox')
88-
options.add_argument('--disable-dev-shm-usage')
89-
90-
Capybara::Selenium::Driver.new(
91-
app,
92-
browser: :chrome,
93-
options: options
94-
)
95-
end
96-
97-
Capybara.javascript_driver = :headless_chrome
98-
Capybara.default_driver = :headless_chrome
99-
# Configure Capybara to wait longer for elements to appear
100-
Capybara.default_max_wait_time = 20

spec/support/capybara.rb

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,26 +3,31 @@
33
# Use Puma as the webserver for feature tests
44
Capybara.server = :puma, { Silent: true }
55

6-
# Use the fast rack_test driver for non-feature tests by default
7-
Capybara.default_driver = :rack_test
8-
96
# Create a custom driver based on Capybara's :selenium_chrome_headless driver
10-
# This resolves a ElementClickInterceptedError when executing `click_button 'Sign in'` with DMP Assistant
11-
Capybara.register_driver :selenium_chrome_headless_add_window_size do |app|
7+
Capybara.register_driver :selenium_chrome_headless_custom do |app|
128
# Get a copy of the default options for Capybara's :selenium_chrome_headless driver
139
options = Capybara.drivers[:selenium_chrome_headless].call.options[:options].dup
14-
options.add_argument('--window-size=1920,1080') # default window-size is only (800x600)
10+
# Increasing window size resolves ElementClickInterceptedError (default window-size is only (800x600))
11+
options.add_argument('--window-size=1920,1080')
1512
# Create a new Selenium driver with the customised options
1613
Capybara::Selenium::Driver.new(app, browser: :chrome, options: options)
1714
end
1815

16+
# Use the fast rack_test driver for non-feature tests by default
17+
Capybara.default_driver = :rack_test
18+
19+
Capybara.javascript_driver = :selenium_chrome_headless_custom
20+
21+
# Configure Capybara to wait longer for elements to appear
22+
Capybara.default_max_wait_time = 10
23+
1924
RSpec.configure do |config|
2025
config.before(:each, type: :feature, js: false) do
2126
Capybara.use_default_driver
2227
end
2328

2429
# Use the Selenium headless Chrome driver for feature tests
2530
config.before(:each, type: :feature, js: true) do
26-
Capybara.current_driver = :selenium_chrome_headless_add_window_size
31+
Capybara.current_driver = :selenium_chrome_headless_custom
2732
end
2833
end

0 commit comments

Comments
 (0)