Class: Capybara::Lightpanda::Network

Inherits:
Object
  • Object
show all
Defined in:
lib/capybara/lightpanda/network.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(browser) ⇒ Network

Returns a new instance of Network.



8
9
10
11
12
# File 'lib/capybara/lightpanda/network.rb', line 8

def initialize(browser)
  @browser = browser
  @traffic = []
  @enabled = false
end

Instance Attribute Details

#browserObject (readonly)

Returns the value of attribute browser.



6
7
8
# File 'lib/capybara/lightpanda/network.rb', line 6

def browser
  @browser
end

Instance Method Details

#add_headers(headers) ⇒ Object



42
43
44
45
# File 'lib/capybara/lightpanda/network.rb', line 42

def add_headers(headers)
  @extra_headers = (@extra_headers || {}).merge(headers)
  browser.page_command("Network.setExtraHTTPHeaders", headers: @extra_headers)
end

#clearObject



33
34
35
# File 'lib/capybara/lightpanda/network.rb', line 33

def clear
  @traffic.clear
end

#clear_headersObject



47
48
49
50
# File 'lib/capybara/lightpanda/network.rb', line 47

def clear_headers
  @extra_headers = {}
  browser.page_command("Network.setExtraHTTPHeaders", headers: {})
end

#disableObject



22
23
24
25
26
27
# File 'lib/capybara/lightpanda/network.rb', line 22

def disable
  return unless @enabled

  browser.command("Network.disable")
  @enabled = false
end

#enableObject



14
15
16
17
18
19
20
# File 'lib/capybara/lightpanda/network.rb', line 14

def enable
  return if @enabled

  browser.command("Network.enable")
  subscribe
  @enabled = true
end

#headers=(headers) ⇒ Object



37
38
39
40
# File 'lib/capybara/lightpanda/network.rb', line 37

def headers=(headers)
  @extra_headers = headers
  browser.page_command("Network.setExtraHTTPHeaders", headers: headers)
end

#trafficObject



29
30
31
# File 'lib/capybara/lightpanda/network.rb', line 29

def traffic
  @traffic.dup
end

#wait_for_idle(timeout: 5, connections: 0) ⇒ Object

rubocop:disable Naming/PredicateMethod



52
53
54
55
56
57
58
59
60
61
62
63
# File 'lib/capybara/lightpanda/network.rb', line 52

def wait_for_idle(timeout: 5, connections: 0) # rubocop:disable Naming/PredicateMethod
  started_at = Time.now

  while Time.now - started_at < timeout
    pending = @traffic.count { |t| t[:response].nil? }
    return true if pending <= connections

    sleep 0.1
  end

  false
end