Work around geckodriver 0.22/selenium-webdriver issue with pause durations

This commit is contained in:
Thomas Walpole 2018-09-16 11:50:56 -07:00
parent 055abbb583
commit 2568e405e0
3 changed files with 13 additions and 1 deletions

View File

@ -430,7 +430,6 @@ module Capybara
require 'capybara/rack_test/css_handlers.rb'
require 'capybara/selenium/node'
require 'capybara/selenium/nodes/marionette_node'
require 'capybara/selenium/driver'
end

View File

@ -28,6 +28,7 @@ class Capybara::Selenium::Driver < Capybara::Driver::Base
setup_exit_handler
end
end
@browser
end
def initialize(app, **options)
@ -360,6 +361,7 @@ private
when :chrome
extend ChromeDriver
when :firefox
require 'capybara/selenium/patches/pause_duration_fix' if sel_driver.capabilities['moz:geckodriverVersion']&.start_with?('0.22.')
extend MarionetteDriver if sel_driver.capabilities.is_a?(::Selenium::WebDriver::Remote::W3C::Capabilities)
end
end

View File

@ -0,0 +1,11 @@
# frozen_string_literal: true
module PauseDurationFix
def encode
super.tap { |output| output[:duration] ||= 0 }
end
end
if defined?(::Selenium::WebDriver::Interactions::Pause)
::Selenium::WebDriver::Interactions::Pause.prepend PauseDurationFix
end