selenium-emulated_features 2.0.1 → 3.0.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: 88fa8eee73799af9ca8ddf6c97f41157640a17ff
4
- data.tar.gz: f7e0a077e7a42db82e19d71f26b4089d5131e062
3
+ metadata.gz: ef19fa900178d7666dc5d52df3ecc90186a8f10b
4
+ data.tar.gz: 8714840b86268008cbb4bb72be7ccdcb72489c03
5
5
  SHA512:
6
- metadata.gz: bdc0506bea01be5709183e9e0d9cd7e0e204875160e1bef3b13b8c0c56cd41726f3dbb8a08e66b76bc69fed0f9bdbcfb538d07032519d8c4400ae8d786bbbc33
7
- data.tar.gz: cb98128b311e630a984f9b506d0adc72c70be085a60f62a7787bffa773bffe3a6470d32ee8764d6301b4ed63086f0cf8db7a732677cc0a74bb7a3924e1f4f7f8
6
+ metadata.gz: 99d0b8b457066eac833610b54d066cd94b6016904e77800faab76e1222647a0e72bd26530fbcfa8bb03849e18f1d72c1bc08669d4018d5a26809d52aba513d49
7
+ data.tar.gz: dc5eb77e6b255e5322ba16d7fa622b4fb34761cd996cb72eb04bf99d662b408bd597ea7759a5077efc0761b128148154ab2f8d8405003dbd11b8d3e48bc0f62b
@@ -1,16 +1,16 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- selenium-emulated_features (2.0.0)
4
+ selenium-emulated_features (3.0.0)
5
5
  selenium-webdriver (~> 3.0)
6
6
 
7
7
  GEM
8
8
  remote: https://rubygems.org/
9
9
  specs:
10
- childprocess (0.5.9)
10
+ childprocess (0.7.0)
11
11
  ffi (~> 1.0, >= 1.0.11)
12
12
  diff-lcs (1.2.5)
13
- ffi (1.9.14)
13
+ ffi (1.9.18)
14
14
  rack (1.6.0)
15
15
  rack-protection (1.5.3)
16
16
  rack
@@ -27,17 +27,15 @@ GEM
27
27
  diff-lcs (>= 1.2.0, < 2.0)
28
28
  rspec-support (~> 3.2.0)
29
29
  rspec-support (3.2.1)
30
- rubyzip (1.2.0)
31
- selenium-webdriver (3.0.3)
30
+ rubyzip (1.2.1)
31
+ selenium-webdriver (3.4.3)
32
32
  childprocess (~> 0.5)
33
33
  rubyzip (~> 1.0)
34
- websocket (~> 1.0)
35
34
  sinatra (1.4.5)
36
35
  rack (~> 1.4)
37
36
  rack-protection (~> 1.4)
38
37
  tilt (~> 1.3, >= 1.3.4)
39
38
  tilt (1.4.1)
40
- websocket (1.2.3)
41
39
 
42
40
  PLATFORMS
43
41
  ruby
@@ -48,4 +46,4 @@ DEPENDENCIES
48
46
  sinatra (~> 1.4)
49
47
 
50
48
  BUNDLED WITH
51
- 1.12.5
49
+ 1.14.6
data/README.md CHANGED
@@ -1,11 +1,22 @@
1
1
  # selenium-emulated_features
2
2
  Adds HTTP status code and response headers emulation to Selenium drivers.
3
3
 
4
+ Latest release tested on OS X 10.12.3 with:
5
+
6
+ | Browser | Driver |
7
+ | ------------------- |:------------------------:|
8
+ | Chrome 60.0.3112.40 | ChromeDriver 2.30.477690 |
9
+ | Safari 10.0.3 | built-in safaridriver |
10
+ | Firefox 54.0 | -- |
11
+ | PhantomJS 2.2.1 | -- |
12
+
13
+ __Note:__ Ensure _Develop > Allow Remote Automation_ is enabled in Safari!
14
+
4
15
  ## Installation
5
16
  Install with Bundler by adding the following line to your `Gemfile`:
6
17
 
7
18
  ```
8
- gem "selenium-emulated_features", "~> 2.0"
19
+ gem "selenium-emulated_features", "~> 3.0"
9
20
  ```
10
21
  Or install via RubyGems:
11
22
 
@@ -25,19 +36,4 @@ driver.response_code # => 404
25
36
  driver.response_headers # => {...}
26
37
  ```
27
38
 
28
- `nil` is returned if the URI is not reachable or an error occurs:
29
-
30
- ```ruby
31
- driver.navigate.to("https://example.foobar")
32
-
33
- driver.response_code # => nil
34
- driver.response_headers # => nil
35
- ```
36
-
37
- If you want an exception to be raised instead:
38
-
39
- ```ruby
40
- Selenium::EmulatedFeatures.raise_exceptions = true
41
- driver.navigate.to("https://example.foobar")
42
- driver.response_code # => Selenium::EmulatedFeatures::Error
43
- ```
39
+ `nil` is returned if the URI is not reachable or an error occurs.
@@ -5,13 +5,7 @@ require "emulated_features/response_headers"
5
5
 
6
6
  module Selenium
7
7
  module EmulatedFeatures
8
- VERSION = "2.0.1"
9
-
10
- class Error < StandardError; end
11
-
12
- class << self
13
- attr_accessor :raise_exceptions
14
- end
8
+ VERSION = "3.0.0"
15
9
  end
16
10
  end
17
11
 
@@ -2,52 +2,33 @@ module Selenium
2
2
  module EmulatedFeatures
3
3
  module ResponseCode
4
4
  def response_code
5
- dom_str = execute_script <<-js
6
- if(document.SEF && document.SEF.request) {
7
- return document.SEF.request.status;
5
+ execute_script <<-js
6
+ if(document.__SEF__ && document.__SEF__.request) {
7
+ return document.__SEF__.request.status;
8
8
  }
9
9
 
10
10
  var baseURI = document.baseURI;
11
11
 
12
12
  /* Firefox */
13
- if(/about:neterror/.test(baseURI)) {
14
- return null;
15
- }
13
+ if (/about:neterror/.test(baseURI)) return null;
16
14
 
17
15
  /* Safari */
18
- if(/Safari.app/.test(baseURI)) {
19
- return null;
20
- }
16
+ if (/Safari.app/.test(baseURI)) return null;
21
17
 
22
18
  /* Chrome */
23
- if(/chromewebdata/.test(baseURI)) {
24
- return null;
25
- }
19
+ if (/chromewebdata/.test(baseURI)) return null;
26
20
 
27
- document.SEF = {}
28
- document.SEF.request = new XMLHttpRequest();
21
+ document.__SEF__ = {}
22
+ document.__SEF__.request = new XMLHttpRequest();
29
23
 
30
- document.SEF.request.open("GET", document.location, false);
31
- document.SEF.request.send(null);
32
- return document.SEF.request.status;
24
+ document.__SEF__.request.open("GET", document.location, false);
25
+ document.__SEF__.request.send(null);
26
+ return document.__SEF__.request.status;
33
27
  js
34
-
35
- return dom_str if dom_str
36
-
37
- if Selenium::EmulatedFeatures.raise_exceptions
38
- raise Selenium::EmulatedFeatures::Error
39
- else
40
- nil
41
- end
42
-
43
- # PhantomJS
44
- rescue Selenium::WebDriver::Error::UnknownError
45
- if Selenium::EmulatedFeatures.raise_exceptions
46
- raise Selenium::EmulatedFeatures::Error
47
- else
48
- nil
49
- end
50
28
  end
29
+
30
+ rescue
31
+ nil
51
32
  end
52
33
  end
53
34
  end
@@ -3,57 +3,39 @@ module Selenium
3
3
  module ResponseHeaders
4
4
  def response_headers
5
5
  dom_str = execute_script <<-js
6
- if(document.SEF && document.SEF.request) {
7
- return document.SEF.request.getAllResponseHeaders();
6
+ if(document.__SEF__ && document.__SEF__.request) {
7
+ return document.__SEF__.request.getAllResponseHeaders();
8
8
  }
9
9
 
10
10
  var baseURI = document.baseURI;
11
11
 
12
12
  /* Firefox */
13
- if(/about:neterror/.test(baseURI)) {
14
- return null;
15
- }
13
+ if (/about:neterror/.test(baseURI)) return null;
16
14
 
17
15
  /* Safari */
18
- if(/Safari.app/.test(baseURI)) {
19
- return null;
20
- }
16
+ if (/Safari.app/.test(baseURI)) return null;
21
17
 
22
18
  /* Chrome */
23
- if(/chromewebdata/.test(baseURI)) {
24
- return null;
25
- }
19
+ if (/chromewebdata/.test(baseURI)) return null;
26
20
 
27
- document.SEF = {};
28
- document.SEF.request = new XMLHttpRequest();
21
+ document.__SEF__ = {};
22
+ document.__SEF__.request = new XMLHttpRequest();
29
23
 
30
- document.SEF.request.open("GET", document.location, false);
31
- document.SEF.request.send(null);
32
- return document.SEF.request.getAllResponseHeaders();
24
+ document.__SEF__.request.open("GET", document.location, false);
25
+ document.__SEF__.request.send(null);
26
+ return document.__SEF__.request.getAllResponseHeaders();
33
27
  js
34
28
 
35
- if !dom_str
36
- if Selenium::EmulatedFeatures.raise_exceptions
37
- raise Selenium::EmulatedFeatures::Error
38
- else
39
- return nil
40
- end
41
- end
29
+ return nil unless dom_str
42
30
 
43
31
  dom_str.split("\n").inject({}) do |headers, line|
44
32
  field, value = line.split(": ")
45
33
  headers.merge({ field.downcase => [value.strip] })
46
34
  end
47
35
 
48
- # PhantomJS, Firefox
49
- rescue Selenium::WebDriver::Error::UnknownError,
50
- Selenium::WebDriver::Error::JavascriptError
51
- if Selenium::EmulatedFeatures.raise_exceptions
52
- raise Selenium::EmulatedFeatures::Error
53
- else
54
- nil
55
- end
56
- end
36
+ rescue
37
+ nil
38
+ end
57
39
  end
58
40
  end
59
41
  end
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = "selenium-emulated_features"
3
- s.version = "2.0.1"
3
+ s.version = "3.0.0"
4
4
 
5
5
  s.summary = <<-summary
6
6
  Adds HTTP status code and response headers emulation to Selenium drivers
@@ -2,7 +2,6 @@ require "selenium-webdriver"
2
2
  require "selenium/emulated_features"
3
3
 
4
4
  describe Selenium::EmulatedFeatures::ResponseCode do
5
-
6
5
  shared_examples "a WebDriver that responds to #response_code" do
7
6
  after { driver.quit }
8
7
 
@@ -18,35 +17,6 @@ describe Selenium::EmulatedFeatures::ResponseCode do
18
17
  driver.navigate.to "http://0.0.0.0:9876/status_code/418"
19
18
  expect(driver.response_code).to be 418
20
19
  end
21
-
22
- context "when server is unreachable" do
23
- before { skip if driver.browser == :safari }
24
-
25
- it "returns nil" do
26
- driver.navigate.to "http://example.foobar"
27
- expect(driver.response_code).to be nil
28
- end
29
-
30
- it "still works for successive requests" do
31
- driver.navigate.to "http://example.foobar"
32
- expect(driver.response_code).to be nil
33
-
34
- driver.navigate.to "http://0.0.0.0:9876/status_code/418"
35
- expect(driver.response_code).to be 418
36
- end
37
-
38
- context "with exceptions enabled" do
39
- before { Selenium::EmulatedFeatures.raise_exceptions = true }
40
- after { Selenium::EmulatedFeatures.raise_exceptions = false }
41
-
42
- it "raises an exception" do
43
- expect {
44
- driver.navigate.to "http://example.foobar"
45
- puts driver.response_code.class
46
- }.to raise_error Selenium::EmulatedFeatures::Error
47
- end
48
- end
49
- end
50
20
  end
51
21
 
52
22
  describe "Firefox driver", firefox: true do
@@ -2,7 +2,6 @@ require "selenium-webdriver"
2
2
  require "selenium/emulated_features"
3
3
 
4
4
  describe Selenium::EmulatedFeatures::ResponseHeaders do
5
-
6
5
  shared_examples "a WebDriver that responds to #response_headers" do
7
6
  after { driver.quit }
8
7
 
@@ -21,34 +20,6 @@ describe Selenium::EmulatedFeatures::ResponseHeaders do
21
20
 
22
21
  expect(headers_a).not_to eq headers_b
23
22
  end
24
-
25
- context "when server is unreachable" do
26
- before { skip if driver.browser == :safari }
27
-
28
- it "returns nil" do
29
- driver.navigate.to "http://example.foobar"
30
- expect(driver.response_headers).to be nil
31
- end
32
-
33
- it "still works for successive requests" do
34
- driver.navigate.to "http://example.foobar"
35
- driver.navigate.to "http://0.0.0.0:9876/response_headers"
36
- expect(driver.response_headers["foo"]).to eq ["Bar"]
37
- expect(driver.response_headers["alpha"]).to eq ["Beta"]
38
- end
39
-
40
- context "with exceptions enabled" do
41
- before { Selenium::EmulatedFeatures.raise_exceptions = true }
42
- after { Selenium::EmulatedFeatures.raise_exceptions = false }
43
-
44
- it "raises an exception" do
45
- expect {
46
- driver.navigate.to "http://example.foobar"
47
- driver.response_headers
48
- }.to raise_error Selenium::EmulatedFeatures::Error
49
- end
50
- end
51
- end
52
23
  end
53
24
 
54
25
  describe "Firefox driver", firefox: true do
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: selenium-emulated_features
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.1
4
+ version: 3.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dominic Bauer
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-12-11 00:00:00.000000000 Z
11
+ date: 2017-06-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: selenium-webdriver
@@ -99,4 +99,3 @@ summary: Adds HTTP status code and response headers emulation to Selenium driver
99
99
  test_files:
100
100
  - spec/response_code_spec.rb
101
101
  - spec/response_headers_spec.rb
102
- has_rdoc: