module Capybara::ChromeResponseHeaders::DriverExtensions

Attributes

listener_thread[R]
listening_to_network_traffic[R]
request_for_url[R]
response_for_url[R]

Public Class Methods

new(*) click to toggle source
Calls superclass method
# File lib/capybara/chrome_response_headers/driver_extensions.rb, line 9
def initialize(*)
  super
  @request_for_url  = {}
  @response_for_url = {}
end

Public Instance Methods

browser() click to toggle source
Calls superclass method
# File lib/capybara/chrome_response_headers/driver_extensions.rb, line 15
def browser
  super.tap do |browser|
    if Capybara::ChromeDevTools.enabled and !@listening_to_network_traffic
      listen_to_network_traffic
    end
  end
end
listen_to_network_traffic() click to toggle source
# File lib/capybara/chrome_response_headers/driver_extensions.rb, line 23
def listen_to_network_traffic
  @listening_to_network_traffic = true
  chrome = dev_tools
  chrome.send_cmd "Network.enable"

  chrome.on "Network.requestWillBeSent" do |arg|
    request = OpenStruct.new(arg["request"])
    next if Capybara::ChromeResponseHeaders.ignore_urls && request.url.match(Capybara::ChromeResponseHeaders.ignore_urls)

    @request_for_url[request.url] = request
    puts "Requesting #{request.url}" if Capybara::ChromeResponseHeaders.trace_requests
  end

  chrome.on "Network.responseReceived" do |arg|
    response = OpenStruct.new(arg["response"])
    next if Capybara::ChromeResponseHeaders.ignore_urls && response.url.match(Capybara::ChromeResponseHeaders.ignore_urls)

    # TODO: Use/return a Rack::Response like Rack::Test does
    @response_for_url[response.url] = response
    puts %(Response for #{response.url}: #{response.status} #{response.statusText}) if Capybara::ChromeResponseHeaders.trace_responses
  end

  @listener_thread = Thread.new do
    chrome.listen
    @listening_to_network_traffic = false
  end
end
request() click to toggle source
# File lib/capybara/chrome_response_headers/driver_extensions.rb, line 51
def request
  #@request_for_url[current_url] or byebug
  @request_for_url[current_url]
end
response() click to toggle source
# File lib/capybara/chrome_response_headers/driver_extensions.rb, line 56
def response
  #@response_for_url[current_url] or byebug
  @response_for_url[current_url]
end
response_headers() click to toggle source
# File lib/capybara/chrome_response_headers/driver_extensions.rb, line 61
def response_headers
  response&.headers
end
status_code() click to toggle source
# File lib/capybara/chrome_response_headers/driver_extensions.rb, line 65
def status_code
  response&.status
end
status_text() click to toggle source
# File lib/capybara/chrome_response_headers/driver_extensions.rb, line 69
def status_text
  response&.statusText
end