Skip to content

Commit 4cbaa89

Browse files
committed
[rb] manage bidi instance on the bridge not the driver
1 parent 1b827c2 commit 4cbaa89

File tree

5 files changed

+13
-9
lines changed

5 files changed

+13
-9
lines changed

rb/lib/selenium/webdriver/common/driver.rb

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,6 @@ def for(browser, opts = {})
7070

7171
def initialize(bridge: nil, listener: nil, **opts)
7272
@devtools = nil
73-
@bidi = nil
7473
bridge ||= create_bridge(**opts)
7574
add_extensions(bridge.browser)
7675
@bridge = listener ? Support::EventFiringBridge.new(bridge, listener) : bridge
@@ -174,18 +173,14 @@ def quit
174173
ensure
175174
@service_manager&.stop
176175
@devtools&.close
177-
@bidi&.close
178176
end
179177

180178
#
181179
# Close the current window, or the browser if no windows are left.
182180
#
183181

184182
def close
185-
# If no top-level browsing contexts are open after calling close,
186-
# it indicates that the WebDriver session is closed.
187-
# If the WebDriver session is closed, the BiDi session also needs to be closed.
188-
bridge.close.tap { |handles| @bidi&.close if handles&.empty? }
183+
bridge.close
189184
end
190185

191186
#

rb/lib/selenium/webdriver/common/driver_extensions/has_bidi.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ module HasBiDi
2828
#
2929

3030
def bidi
31-
@bidi ||= Selenium::WebDriver::BiDi.new(url: capabilities[:web_socket_url])
31+
@bridge.bidi
3232
end
3333
end # HasBiDi
3434
end # DriverExtensions

rb/lib/selenium/webdriver/remote/bridge.rb

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -213,10 +213,12 @@ def quit
213213
http.close
214214
rescue *QUIT_ERRORS
215215
nil
216+
ensure
217+
@bidi.close
216218
end
217219

218220
def close
219-
execute :close_window
221+
execute(:close_window).tap { |handles| @bidi.close if handles.empty? }
220222
end
221223

222224
def refresh
@@ -602,6 +604,13 @@ def user_verified(verified, authenticator_id)
602604
execute :set_user_verified, {authenticatorId: authenticator_id}, {isUserVerified: verified}
603605
end
604606

607+
def bidi
608+
msg = 'this operation requires enabling BiDi by setting #web_socket_url to true in options class'
609+
raise(WebDriver::Error::WebDriverError, msg) unless capabilities.web_socket_url
610+
611+
@bidi ||= Selenium::WebDriver::BiDi.new(url: capabilities[:web_socket_url])
612+
end
613+
605614
def command_list
606615
COMMANDS
607616
end

rb/sig/lib/selenium/webdriver/common/driver.rbs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ module Selenium
55

66
include TakesScreenshot
77

8-
@bidi: untyped
98
@devtools: untyped
109
@navigate: untyped
1110

rb/sig/lib/selenium/webdriver/remote/bridge.rbs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ module Selenium
55
include _CommandList
66
include _Features
77

8+
@bidi: WebDriver::BiDi
89
@http: untyped
910

1011
@file_detector: untyped

0 commit comments

Comments
 (0)