Skip to content

Commit 30061ef

Browse files
committed
rb - implement support for new geckodriver options
1 parent 9c3e0cc commit 30061ef

File tree

2 files changed

+27
-22
lines changed

2 files changed

+27
-22
lines changed

rb/lib/selenium/webdriver/firefox/w3c_bridge.rb

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,12 +23,10 @@ module Firefox
2323
# @api private
2424
class W3CBridge < Remote::W3CBridge
2525
def initialize(opts = {})
26-
caps = opts[:desired_capabilities] ||= Remote::W3CCapabilities.firefox
27-
Binary.path = caps[:firefox_binary] if caps[:firefox_binary]
26+
opts[:desired_capabilities] = create_capabilities(opts)
2827

2928
@service = Service.new(Firefox.driver_path, Service::DEFAULT_PORT)
3029
@service.start
31-
3230
opts[:url] = @service.uri
3331

3432
super(opts)
@@ -51,6 +49,17 @@ def quit
5149
ensure
5250
@service.stop if @service
5351
end
52+
53+
private
54+
55+
def create_capabilities(opts)
56+
caps = opts.delete(:desired_capabilities) || Remote::W3CCapabilities.firefox
57+
firefox_options_caps = caps[:firefox_options] || {}
58+
caps[:firefox_options] = firefox_options_caps.merge(opts[:firefox_options] || {})
59+
60+
Binary.path = caps[:firefox_options][:binary] if caps[:firefox_options].key?(:binary)
61+
caps
62+
end
5463
end # W3CBridge
5564
end # Firefox
5665
end # WebDriver

rb/spec/integration/selenium/webdriver/firefox/driver_spec.rb

Lines changed: 15 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -63,28 +63,24 @@ def restart_remote_server
6363
end
6464
end
6565

66-
# Test this in isolation; Firefox doesn't like to switch between binaries in same session
67-
not_compliant_on driver: :remote do
68-
it 'takes a binary path as an argument' do
69-
pending "Set ENV['ALT_FIREFOX_BINARY'] to test this" unless ENV['ALT_FIREFOX_BINARY']
70-
71-
begin
72-
driver1 = Selenium::WebDriver.for GlobalTestEnv.driver, @opt
66+
it 'takes a binary path as an argument' do
67+
pending "Set ENV['ALT_FIREFOX_BINARY'] to test this" unless ENV['ALT_FIREFOX_BINARY']
68+
begin
69+
driver1 = Selenium::WebDriver.for GlobalTestEnv.driver, @opt.dup
7370

74-
default_version = driver1.capabilities.version
75-
expect { driver1.capabilities.browser_version }.to_not raise_exception NoMethodError
76-
driver1.quit
71+
default_version = driver1.capabilities.version
72+
expect { driver1.capabilities.browser_version }.to_not raise_exception NoMethodError
73+
driver1.quit
7774

78-
caps = Remote::Capabilities.firefox(firefox_binary: ENV['ALT_FIREFOX_BINARY'])
79-
@opt[:desired_capabilities] = caps
80-
driver2 = Selenium::WebDriver.for GlobalTestEnv.driver, @opt
75+
caps = Remote::Capabilities.firefox(firefox_options: {binary: ENV['ALT_FIREFOX_BINARY']})
76+
@opt[:desired_capabilities] = caps
77+
driver2 = Selenium::WebDriver.for GlobalTestEnv.driver, @opt
8178

82-
expect(driver2.capabilities.version).to_not eql(default_version)
83-
expect { driver2.capabilities.browser_version }.to_not raise_exception NoMethodError
84-
driver2.quit
85-
ensure
86-
Firefox::Binary.reset_path!
87-
end
79+
expect(driver2.capabilities.version).to_not eql(default_version)
80+
expect { driver2.capabilities.browser_version }.to_not raise_exception NoMethodError
81+
driver2.quit
82+
ensure
83+
Firefox::Binary.reset_path!
8884
end
8985
end
9086

0 commit comments

Comments
 (0)