Sha256: 5620b402dbf1ec5cde59b544124a43fdaee1686eec360dbc7a68a27bdd2e2ebd

Contents?: true

Size: 1.61 KB

Versions: 15

Compression:

Stored size: 1.61 KB

Contents

require 'selenium-webdriver'
require Pathname.new(__FILE__).parent.to_s + '/download_helper'

module Marty; module RSpec; module Chromedriver
  def self.register_chrome_driver driver = :chrome, opts = {}
    Capybara.register_driver driver do |app|
      copts = {
        chromeOptions: opts.deep_merge(
          prefs: { 'download.default_directory' =>
                  Marty::RSpec::DownloadHelper::PATH.to_s }),
        pageLoadStrategy: 'none',
      }

      caps = Selenium::WebDriver::Remote::Capabilities.chrome(copts)
      driver = Capybara::Selenium::Driver.new(app,
                                              browser: :chrome,
                                              desired_capabilities: caps)
      yield driver if block_given?
      driver
    end
  end

  register_chrome_driver

  window_size = ENV.fetch('HEADLESS_WINDOW_SIZE', '3840,2160')
  headless_args = ['no-sandbox', 'headless', 'disable-gpu', "window-size=#{window_size}"]

  register_chrome_driver(:headless_chrome, args: headless_args) do |driver|
    # workaround to enable downloading with headless chrome
    bridge = driver.browser.send(:bridge)
    bridge.http.call(:post,
                     "/session/#{bridge.session_id}/chromium/send_command",
                     cmd: 'Page.setDownloadBehavior',
                     params: {
                       behavior: 'allow',
                       downloadPath: Marty::RSpec::DownloadHelper::PATH.to_s
                     })
  end

  Capybara.default_driver    = :chrome
  Capybara.javascript_driver = ENV['HEADLESS'] == 'true' ?
                                 :headless_chrome : :chrome
end end end

Version data entries

15 entries across 15 versions & 1 rubygems

Version Path
marty-2.6.8 spec/support/chromedriver.rb
marty-2.6.7 spec/support/chromedriver.rb
marty-2.6.6 spec/support/chromedriver.rb
marty-2.6.5 spec/support/chromedriver.rb
marty-2.6.4 spec/support/chromedriver.rb
marty-2.6.3 spec/support/chromedriver.rb
marty-2.6.2 spec/support/chromedriver.rb
marty-2.6.1 spec/support/chromedriver.rb
marty-2.6.0 spec/support/chromedriver.rb
marty-2.5.9 spec/support/chromedriver.rb
marty-2.5.8 spec/support/chromedriver.rb
marty-2.5.7 spec/support/chromedriver.rb
marty-2.5.6 spec/support/chromedriver.rb
marty-2.5.5 spec/support/chromedriver.rb
marty-2.5.4 spec/support/chromedriver.rb