Skip to content

Commit 8442320

Browse files
committed
fix test
1 parent b45474b commit 8442320

4 files changed

Lines changed: 24 additions & 7 deletions

File tree

lib/appium_lib_core/common/base/bidi_bridge.rb

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,9 +46,14 @@ class BiDiBridge < ::Appium::Core::Base::Bridge
4646
def create_session(capabilities)
4747
super
4848

49-
unless @capabilities.nil?
49+
return @capabilities if @capabilities.nil?
50+
51+
begin
5052
socket_url = @capabilities[:web_socket_url]
5153
@bidi = ::Selenium::WebDriver::BiDi.new(url: socket_url) if socket_url
54+
rescue StandardError => e
55+
::Appium::Logger.warn "WebSocket connection to #{socket_url} for BiDi failed. Error #{e}"
56+
raise
5257
end
5358

5459
@capabilities

lib/appium_lib_core/common/base/driver.rb

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,6 @@ def initialize(bridge: nil, listener: nil, **opts) # rubocop:disable Lint/Missin
5858
@has_bidi = false
5959

6060
::Selenium::WebDriver::Remote::Bridge.element_class = ::Appium::Core::Element
61-
6261
bridge ||= create_bridge(**opts)
6362
add_extensions(bridge.browser)
6463
@bridge = listener ? ::Appium::Support::EventFiringBridge.new(bridge, listener, **original_opts) : bridge

lib/appium_lib_core/driver.rb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -421,8 +421,8 @@ def start_driver(server_url: nil,
421421
d_c = DirectConnections.new(@driver.capabilities)
422422
@driver.update_sending_request_to(protocol: d_c.protocol, host: d_c.host, port: d_c.port, path: d_c.path)
423423
end
424-
rescue Errno::ECONNREFUSED
425-
raise "ERROR: Unable to connect to Appium. Is the server running on #{@custom_url}?"
424+
rescue Errno::ECONNREFUSED => e
425+
raise "ERROR: Unable to connect to Appium. Is the server running on #{@custom_url}? Error: #{e}"
426426
end
427427

428428
if @http_client.instance_variable_defined? :@additional_headers

test/unit/driver_test.rb

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -701,6 +701,10 @@ def test_listener_with_custom_listener_elements
701701
end
702702

703703
def test_bidi_bridge
704+
# Mock the BiDi WebSocket connection using Minitest
705+
mock_bidi = Minitest::Mock.new
706+
mock_bidi.expect(:close, nil)
707+
704708
android_mock_create_session_w3c_direct = lambda do |core|
705709
response = {
706710
value: {
@@ -709,15 +713,18 @@ def test_bidi_bridge
709713
platformName: :android,
710714
automationName: ENV['APPIUM_DRIVER'] || 'uiautomator2',
711715
deviceName: 'Android Emulator',
712-
webSocketUrl: 'ws://192.168.1.49:4723/bidi/fbed26aa-e104-42fc-9f5e-b401dc6cc2bc'
716+
webSocketUrl: 'ws://127.0.0.1:4723/bidi/fbed26aa-e104-42fc-9f5e-b401dc6cc2bc'
713717
}
714718
}
715719
}.to_json
716720

717721
stub_request(:post, 'http://127.0.0.1:4723/session')
718722
.to_return(headers: HEADER, status: 200, body: response)
719723

720-
driver = core.start_driver
724+
driver = nil
725+
::Selenium::WebDriver::BiDi.stub(:new, mock_bidi) do
726+
driver = core.start_driver
727+
end
721728

722729
assert_requested(:post, 'http://127.0.0.1:4723/session', times: 1)
723730
driver
@@ -730,8 +737,14 @@ def test_bidi_bridge
730737
driver = android_mock_create_session_w3c_direct.call(core)
731738

732739
assert_equal driver.send(:bridge).class, Appium::Core::Base::BiDiBridge
733-
assert_equal driver.instance_variable_get(:@wait_timeout), 30
734740
assert !driver.send(:bridge).respond_to?(:driver)
741+
742+
stub_request(:delete, 'http://127.0.0.1:4723/session/1234567890')
743+
.to_return(headers: HEADER, status: 200, body: { value: nil }.to_json)
744+
745+
driver.quit
746+
# Verify that close was called exactly once
747+
mock_bidi.verify
735748
end
736749

737750
def test_elements

0 commit comments

Comments
 (0)