diff --git a/CHANGELOG.md b/CHANGELOG.md index 96a9206a..febbf591 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,7 @@ - `#set_behavior` where and whether to store file - `Browser::Client#command` accepts :async parameter [#433] - `Ferrum::Browser` introduce `:flatten` mode with one connection and sessions [#434] +- Support for ping requests [#417] ### Changed - `Ferrum::Page#screeshot` accepts :area option [#410] diff --git a/lib/ferrum/network/exchange.rb b/lib/ferrum/network/exchange.rb index 3249ef26..eef99d8f 100644 --- a/lib/ferrum/network/exchange.rb +++ b/lib/ferrum/network/exchange.rb @@ -79,7 +79,7 @@ def blocked? # @return [Boolean] # def finished? - blocked? || response&.loaded? || !error.nil? || !response_expected? + blocked? || response&.loaded? || !error.nil? || ping? end # @@ -119,14 +119,12 @@ def redirect? end # - # Determines if the exchange expects a response + # Determines if the exchange is ping. # # @return [Boolean] # - def response_expected? - return true if request.nil? - - !!request.response_expected? + def ping? + !!request&.ping? end # diff --git a/lib/ferrum/network/request.rb b/lib/ferrum/network/request.rb index e018b388..8d385a4d 100644 --- a/lib/ferrum/network/request.rb +++ b/lib/ferrum/network/request.rb @@ -81,12 +81,12 @@ def time end # - # Determines if a response is expected. + # Determines if a request is of type ping. # # @return [Boolean] # - def response_expected? - !type?("ping") + def ping? + type?("ping") end # diff --git a/spec/network/exchange_spec.rb b/spec/network/exchange_spec.rb index 03e3b5a3..791be376 100644 --- a/spec/network/exchange_spec.rb +++ b/spec/network/exchange_spec.rb @@ -122,7 +122,7 @@ exchange = Ferrum::Network::Exchange.new(page, "1") expect(exchange.finished?).to be false - exchange.request = Ferrum::Network::Request.new({"type" => "Ping"}) + exchange.request = Ferrum::Network::Request.new({ "type" => "Ping" }) expect(exchange.finished?).to be true end end @@ -135,13 +135,13 @@ end end - describe "#response_expected?" do - it "determines if exchange expects a response" do + describe "#ping?" do + it "determines if exchange is ping type" do exchange = Ferrum::Network::Exchange.new(page, "1") - expect(exchange.response_expected?).to be true + expect(exchange.ping?).to be false - exchange.request = Ferrum::Network::Request.new({"type" => "Ping"}) - expect(exchange.response_expected?).to be false + exchange.request = Ferrum::Network::Request.new({ "type" => "Ping" }) + expect(exchange.ping?).to be true end end diff --git a/spec/network/request_spec.rb b/spec/network/request_spec.rb index c47b5977..6b4f2541 100644 --- a/spec/network/request_spec.rb +++ b/spec/network/request_spec.rb @@ -1,17 +1,17 @@ # frozen_string_literal: true describe Ferrum::Network::Request do - describe "#response_expected?" do - it "returns true for document requests" do + describe "#ping?" do + it "returns false for document requests" do request = Ferrum::Network::Request.new({"type" => "Document"}) - expect(request.response_expected?).to be(true) + expect(request.ping?).to be(false) end - it "returns false for ping requests" do + it "returns true for ping requests" do request = Ferrum::Network::Request.new({"type" => "Ping"}) - expect(request.response_expected?).to be(false) + expect(request.ping?).to be(true) end end end