Skip to content

Commit f843e8b

Browse files
committed
[rb] allow service to be started before the driver
1 parent e5ce6fd commit f843e8b

File tree

4 files changed

+23
-5
lines changed

4 files changed

+23
-5
lines changed

rb/lib/selenium/webdriver/common/service.rb

+4
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,10 @@ def initialize(path: nil, port: nil, log: nil, args: nil)
8787
end
8888

8989
def launch
90+
@executable_path ||= begin
91+
default_options = WebDriver.const_get("#{self.class.name.split('::')[2]}::Options").new
92+
DriverFinder.path(default_options, self.class)
93+
end
9094
ServiceManager.new(self).tap(&:start)
9195
end
9296

rb/spec/integration/selenium/webdriver/chrome/service_spec.rb

+6-1
Original file line numberDiff line numberDiff line change
@@ -26,10 +26,15 @@ module Chrome
2626
let(:service) { described_class.new }
2727
let(:service_manager) { service.launch }
2828

29-
before { service.executable_path = DriverFinder.path(Options.new, described_class) }
3029
after { service_manager.stop }
3130

3231
it 'auto uses chromedriver' do
32+
service.executable_path = DriverFinder.path(Options.new, described_class)
33+
34+
expect(service_manager.uri).to be_a(URI)
35+
end
36+
37+
it 'can be started outside driver' do
3338
expect(service_manager.uri).to be_a(URI)
3439
end
3540
end

rb/spec/integration/selenium/webdriver/edge/service_spec.rb

+6-1
Original file line numberDiff line numberDiff line change
@@ -26,10 +26,15 @@ module Edge
2626
let(:service) { described_class.new }
2727
let(:service_manager) { service.launch }
2828

29-
before { service.executable_path = DriverFinder.path(Options.new, described_class) }
3029
after { service_manager.stop }
3130

3231
it 'auto uses edgedriver' do
32+
service.executable_path = DriverFinder.path(Options.new, described_class)
33+
34+
expect(service_manager.uri).to be_a(URI)
35+
end
36+
37+
it 'can be started outside driver' do
3338
expect(service_manager.uri).to be_a(URI)
3439
end
3540
end

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

+7-3
Original file line numberDiff line numberDiff line change
@@ -26,14 +26,18 @@ module Firefox
2626
let(:service) { described_class.new }
2727
let(:service_manager) { service.launch }
2828

29-
before { service.executable_path = DriverFinder.path(Options.new, described_class) }
3029
after { service_manager.stop }
3130

3231
it 'auto uses geckodriver' do
33-
service_manager = service.launch
32+
service.executable_path = DriverFinder.path(Options.new, described_class)
33+
34+
expect(service_manager.uri).to be_a(URI)
35+
end
36+
37+
it 'can be started outside driver' do
3438
expect(service_manager.uri).to be_a(URI)
3539
end
3640
end
37-
end # Chrome
41+
end # Firefox
3842
end # WebDriver
3943
end # Selenium

0 commit comments

Comments
 (0)