capybara-chrome_response_headers 0.1.0 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 40557879afeee7ac4d2e7f78a51091456296d236
4
- data.tar.gz: 13c0d5b75a95601b898a7550bc45543429caca99
3
+ metadata.gz: 37f3924dc1a7c659127afe9cf709b71eb14f2d43
4
+ data.tar.gz: 04d15916559bb40e738c5096c92f6d0492e6020f
5
5
  SHA512:
6
- metadata.gz: 8eb6d069e6a0041632717f1795c7e1bfe52f5601cc330851d803e4b72733b6be71feb9ea30c1f15310dd4105d6fadcd8a710ea13b0f93093ddd5b7610a2a4c5c
7
- data.tar.gz: a514f920197fad21066289f813d43d4e7dca6296d4abedd4f1c9bb736c7dc41c395b86d0a2d63e18406386dc8322521cfb24dfc29a8929302051795da2209be7
6
+ metadata.gz: 63ea74a00eee193693886351c3742b564fef85d950276f258eaaa7cbb33da7d13192dd1c054f4bf97203052650f68bfab9b3081201ec51dc0ac3ef2255784e90
7
+ data.tar.gz: f28e54e082305b093909b14a99c7d02bf017d076877c232c7148aefcdb06f77d8c83dbbc8e33b2f0724bd6ce933fba05ea1edcbcbb9ead23276816d097ec8f00
data/Readme.md CHANGED
@@ -43,10 +43,45 @@ Example:
43
43
  end
44
44
  ```
45
45
 
46
+ ## Tracing
47
+
48
+ To have it show a trace of all requests and/or responses that are made from the web pages you are interacting with, enable these settings, respectively:
49
+
50
+ ```
51
+ Capybara::ChromeResponseHeaders.trace_requests = true
52
+ Capybara::ChromeResponseHeaders.trace_responses = true
53
+ ```
54
+
55
+ The output for responses is something like this:
56
+ ```
57
+ Response for http://127.0.0.1:40359/users/sign_in: 200 OK
58
+ Response for http://127.0.0.1:40359/admin: 200 OK
59
+ ```
60
+
61
+ By default, it tries to filter out requests for assets. (`Capybara::ChromeResponseHeaders.ignore_urls` is set to `/\.(js|css|png|gif|jpg)$/`.)
62
+
63
+ You can turn off this filtering by setting `Capybara::ChromeResponseHeaders.ignore_urls = nil`, or
64
+ set it to a different Regexp pattern to ignore.
65
+
66
+ If you want other behavior to happen on each request or response, you should be able to add it via `dev_tools` (a [ChromeRemote]((https://github.com/cavalle/chrome_remote) instance):
67
+
68
+ ```ruby
69
+ dev_tools.on "Network.requestWillBeSent" do |arg|
70
+ request = OpenStruct.new(arg["request"])
71
+ puts "Requesting #{request.url}"
72
+ end
73
+
74
+ dev_tools.on "Network.responseReceived" do |arg|
75
+ response = OpenStruct.new(arg["response"])
76
+ puts %(Response for #{response.url}"
77
+ end
78
+ ```
79
+
46
80
  ## Why?
47
81
 
48
- Because it's useful to be able to check the HTTP status code, and many people have wanted that
49
- ability, and because the WebDriver maintainers have no intention of adding this feature:
82
+ Because it can be useful to be able to check the HTTP status code in tests. Many people have wanted
83
+ that ability. And the WebDriver maintainers have no intention of adding this feature. See, for
84
+ example:
50
85
 
51
86
  - https://github.com/seleniumhq/selenium-google-code-issue-archive/issues/141
52
87
  - https://github.com/SeleniumHQ/selenium/issues/4976
@@ -27,7 +27,7 @@ Gem::Specification.new do |spec|
27
27
  spec.require_paths = ["lib"]
28
28
 
29
29
  spec.required_ruby_version = ">= 2.3.0"
30
- spec.add_dependency "capybara-chrome_dev_tools", [">= 0.1"]
30
+ spec.add_dependency "capybara-chrome_dev_tools", [">= 0.2"]
31
31
 
32
32
  spec.add_development_dependency "bundler", "~> 1.17"
33
33
  spec.add_development_dependency "rake", "~> 10.0"
@@ -6,9 +6,13 @@ module Capybara::ChromeResponseHeaders
6
6
 
7
7
  class << self
8
8
  attr_accessor :verbose
9
+ attr_accessor :trace_requests
10
+ attr_accessor :trace_responses
9
11
  attr_accessor :ignore_urls
10
12
  end
11
- self.verbose = nil
13
+ self.verbose = 0
14
+ self.trace_requests = false
15
+ self.trace_responses = false
12
16
  # The default is to try to ignore asset files so that hopefully what's left is just HTML/API
13
17
  # requests.
14
18
  self.ignore_urls = /\.(js|css|png|gif|jpg)$/
@@ -14,7 +14,9 @@ module Capybara::ChromeResponseHeaders
14
14
 
15
15
  def browser
16
16
  super.tap do |browser|
17
- listen_to_network_traffic unless @listening_to_network_traffic
17
+ if Capybara::ChromeDevTools.enabled and !@listening_to_network_traffic
18
+ listen_to_network_traffic
19
+ end
18
20
  end
19
21
  end
20
22
 
@@ -28,7 +30,7 @@ module Capybara::ChromeResponseHeaders
28
30
  next if Capybara::ChromeResponseHeaders.ignore_urls && request.url.match(Capybara::ChromeResponseHeaders.ignore_urls)
29
31
 
30
32
  @request_for_url[request.url] = request
31
- puts "Requesting #{request.url}" if Capybara::ChromeResponseHeaders.verbose
33
+ puts "Requesting #{request.url}" if Capybara::ChromeResponseHeaders.trace_requests
32
34
  end
33
35
 
34
36
  chrome.on "Network.responseReceived" do |arg|
@@ -37,7 +39,7 @@ module Capybara::ChromeResponseHeaders
37
39
 
38
40
  # TODO: Use/return a Rack::Response like Rack::Test does
39
41
  @response_for_url[response.url] = response
40
- puts %(Response for #{response.url}: #{response.status} #{response.statusText}) if Capybara::ChromeResponseHeaders.verbose
42
+ puts %(Response for #{response.url}: #{response.status} #{response.statusText}) if Capybara::ChromeResponseHeaders.trace_responses
41
43
  end
42
44
 
43
45
  @listener_thread = Thread.new do
@@ -1,7 +1,7 @@
1
1
  module Capybara
2
2
  module ChromeResponseHeaders
3
3
  def self.version
4
- "0.1.0"
4
+ "0.2.0"
5
5
  end
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: capybara-chrome_response_headers
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tyler Rick
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: '0.1'
19
+ version: '0.2'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - ">="
25
25
  - !ruby/object:Gem::Version
26
- version: '0.1'
26
+ version: '0.2'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: bundler
29
29
  requirement: !ruby/object:Gem::Requirement