From 1cdda237af9ac55163e230e12966c94f6a41a787 Mon Sep 17 00:00:00 2001 From: Yousuf Jukaku Date: Wed, 1 Dec 2021 17:57:09 -0500 Subject: [PATCH] Raise a more specific error if the websocket connection dies --- lib/capybara/apparition/driver/chrome_client.rb | 2 ++ lib/capybara/apparition/driver/web_socket_client.rb | 6 +++++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/lib/capybara/apparition/driver/chrome_client.rb b/lib/capybara/apparition/driver/chrome_client.rb index 6854640..5052ffe 100644 --- a/lib/capybara/apparition/driver/chrome_client.rb +++ b/lib/capybara/apparition/driver/chrome_client.rb @@ -194,6 +194,8 @@ def process_messages puts "Unexpected CDPError: #{e.message}" end retry + rescue WebSocketClientError => e + puts "Unexpected websocket connection exception: #{e}: #{e.message}: #{e.backtrace}" rescue StandardError => e puts "Unexpected inner loop exception: #{e}: #{e.message}: #{e.backtrace}" retry diff --git a/lib/capybara/apparition/driver/web_socket_client.rb b/lib/capybara/apparition/driver/web_socket_client.rb index 031eb0c..15ab0f2 100644 --- a/lib/capybara/apparition/driver/web_socket_client.rb +++ b/lib/capybara/apparition/driver/web_socket_client.rb @@ -55,7 +55,11 @@ def start_driver end def parse_input - @driver.parse(@socket.read) + data = @socket.read + raise WebSocketClientError.new if data.nil? || data.empty? + data + rescue EOFError, Errno::ECONNRESET + raise WebSocketClientError.new end end