|
1 | 1 | # frozen_string_literal: true |
2 | 2 |
|
| 3 | +require "selenium-webdriver" |
| 4 | + |
3 | 5 | # Allow to override the initial windows size |
4 | | -CAPYBARA_WINDOW_SIZE = ENV.fetch('CAPYBARA_WINDOW_SIZE', '1920x1080').split('x', 2).map(&:to_i) |
5 | | -CAPYBARA_WINDOW_WIDTH = CAPYBARA_WINDOW_SIZE[0] |
6 | | -CAPYBARA_WINDOW_HEIGHT = CAPYBARA_WINDOW_SIZE[1] |
| 6 | +CAPYBARA_WINDOW_SIZE = ENV.fetch('CAPYBARA_WINDOW_SIZE', '1920x1080') |
| 7 | + |
| 8 | +# Set Chrome version you want to use |
| 9 | +CAPYBARA_JAVASCRIPT_DRIVER_VERSION = ENV.fetch('CAPYBARA_JAVASCRIPT_DRIVER_VERSION', "133") |
7 | 10 |
|
8 | 11 | Capybara.javascript_driver = ENV.fetch('CAPYBARA_JAVASCRIPT_DRIVER', "solidus_chrome_headless").to_sym |
9 | 12 | Capybara.default_max_wait_time = 10 |
10 | 13 | Capybara.server = :puma, { Silent: true } # A fix for rspec/rspec-rails#1897 |
11 | 14 |
|
12 | | -Capybara.drivers[:selenium_chrome_headless].tap do |original_driver| |
13 | | - Capybara.register_driver :solidus_chrome_headless do |app| |
14 | | - original_driver.call(app).tap do |driver| |
15 | | - driver.resize_window_to( |
16 | | - driver.current_window_handle, CAPYBARA_WINDOW_WIDTH, CAPYBARA_WINDOW_HEIGHT |
17 | | - ) |
18 | | - end |
| 15 | +Capybara.register_driver :solidus_chrome_headless do |app| |
| 16 | + browser_options = Selenium::WebDriver::Chrome::Options.new.tap do |opts| |
| 17 | + opts.add_argument("--headless=new") |
| 18 | + opts.add_argument("--disable-gpu") |
| 19 | + opts.add_argument("--no-sandbox") |
| 20 | + opts.add_argument("--window-size=#{CAPYBARA_WINDOW_SIZE}") |
| 21 | + opts.add_argument("--disable-search-engine-choice-screen") |
| 22 | + opts.add_argument("--disable-backgrounding-occluded-windows") |
| 23 | + opts.browser_version = CAPYBARA_JAVASCRIPT_DRIVER_VERSION |
19 | 24 | end |
| 25 | + Capybara::Selenium::Driver.new(app, browser: :chrome, options: browser_options) |
20 | 26 | end |
21 | 27 |
|
22 | 28 | require 'capybara-screenshot/rspec' |
|
0 commit comments