frameworks-capybara 1.1.1 → 2.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.
metadata CHANGED
@@ -1,36 +1,18 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: frameworks-capybara
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.1
5
- prerelease:
4
+ version: 2.0.0
6
5
  platform: ruby
7
6
  authors:
8
7
  - matt robbins
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2014-10-16 00:00:00.000000000 Z
11
+ date: 2014-11-07 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
- name: mime-types
16
- requirement: !ruby/object:Gem::Requirement
17
- none: false
18
- requirements:
19
- - - ! '>='
20
- - !ruby/object:Gem::Version
21
- version: '0'
22
- type: :runtime
23
- prerelease: false
24
- version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
- requirements:
27
- - - ! '>='
28
- - !ruby/object:Gem::Version
29
- version: '0'
30
- - !ruby/object:Gem::Dependency
31
- name: nokogiri
14
+ name: selenium-webdriver
32
15
  requirement: !ruby/object:Gem::Requirement
33
- none: false
34
16
  requirements:
35
17
  - - ! '>='
36
18
  - !ruby/object:Gem::Version
@@ -38,15 +20,13 @@ dependencies:
38
20
  type: :runtime
39
21
  prerelease: false
40
22
  version_requirements: !ruby/object:Gem::Requirement
41
- none: false
42
23
  requirements:
43
24
  - - ! '>='
44
25
  - !ruby/object:Gem::Version
45
26
  version: '0'
46
27
  - !ruby/object:Gem::Dependency
47
- name: rubyzip
28
+ name: capybara
48
29
  requirement: !ruby/object:Gem::Requirement
49
- none: false
50
30
  requirements:
51
31
  - - ! '>='
52
32
  - !ruby/object:Gem::Version
@@ -54,15 +34,13 @@ dependencies:
54
34
  type: :runtime
55
35
  prerelease: false
56
36
  version_requirements: !ruby/object:Gem::Requirement
57
- none: false
58
37
  requirements:
59
38
  - - ! '>='
60
39
  - !ruby/object:Gem::Version
61
40
  version: '0'
62
41
  - !ruby/object:Gem::Dependency
63
- name: selenium-webdriver
42
+ name: mechanize
64
43
  requirement: !ruby/object:Gem::Requirement
65
- none: false
66
44
  requirements:
67
45
  - - ! '>='
68
46
  - !ruby/object:Gem::Version
@@ -70,69 +48,13 @@ dependencies:
70
48
  type: :runtime
71
49
  prerelease: false
72
50
  version_requirements: !ruby/object:Gem::Requirement
73
- none: false
74
51
  requirements:
75
52
  - - ! '>='
76
53
  - !ruby/object:Gem::Version
77
54
  version: '0'
78
- - !ruby/object:Gem::Dependency
79
- name: capybara
80
- requirement: !ruby/object:Gem::Requirement
81
- none: false
82
- requirements:
83
- - - ~>
84
- - !ruby/object:Gem::Version
85
- version: 1.1.2
86
- type: :runtime
87
- prerelease: false
88
- version_requirements: !ruby/object:Gem::Requirement
89
- none: false
90
- requirements:
91
- - - ~>
92
- - !ruby/object:Gem::Version
93
- version: 1.1.2
94
- - !ruby/object:Gem::Dependency
95
- name: mechanize
96
- requirement: !ruby/object:Gem::Requirement
97
- none: false
98
- requirements:
99
- - - '='
100
- - !ruby/object:Gem::Version
101
- version: 2.7.2
102
- type: :runtime
103
- prerelease: false
104
- version_requirements: !ruby/object:Gem::Requirement
105
- none: false
106
- requirements:
107
- - - '='
108
- - !ruby/object:Gem::Version
109
- version: 2.7.2
110
55
  - !ruby/object:Gem::Dependency
111
56
  name: capybara-mechanize
112
57
  requirement: !ruby/object:Gem::Requirement
113
- none: false
114
- requirements:
115
- - - ! '>='
116
- - !ruby/object:Gem::Version
117
- version: 0.3.0
118
- - - <
119
- - !ruby/object:Gem::Version
120
- version: 1.0.0
121
- type: :runtime
122
- prerelease: false
123
- version_requirements: !ruby/object:Gem::Requirement
124
- none: false
125
- requirements:
126
- - - ! '>='
127
- - !ruby/object:Gem::Version
128
- version: 0.3.0
129
- - - <
130
- - !ruby/object:Gem::Version
131
- version: 1.0.0
132
- - !ruby/object:Gem::Dependency
133
- name: json
134
- requirement: !ruby/object:Gem::Requirement
135
- none: false
136
58
  requirements:
137
59
  - - ! '>='
138
60
  - !ruby/object:Gem::Version
@@ -140,15 +62,13 @@ dependencies:
140
62
  type: :runtime
141
63
  prerelease: false
142
64
  version_requirements: !ruby/object:Gem::Requirement
143
- none: false
144
65
  requirements:
145
66
  - - ! '>='
146
67
  - !ruby/object:Gem::Version
147
68
  version: '0'
148
69
  - !ruby/object:Gem::Dependency
149
- name: headless
70
+ name: json
150
71
  requirement: !ruby/object:Gem::Requirement
151
- none: false
152
72
  requirements:
153
73
  - - ! '>='
154
74
  - !ruby/object:Gem::Version
@@ -156,15 +76,13 @@ dependencies:
156
76
  type: :runtime
157
77
  prerelease: false
158
78
  version_requirements: !ruby/object:Gem::Requirement
159
- none: false
160
79
  requirements:
161
80
  - - ! '>='
162
81
  - !ruby/object:Gem::Version
163
82
  version: '0'
164
83
  - !ruby/object:Gem::Dependency
165
- name: capybara-celerity
84
+ name: cucumber
166
85
  requirement: !ruby/object:Gem::Requirement
167
- none: false
168
86
  requirements:
169
87
  - - ! '>='
170
88
  - !ruby/object:Gem::Version
@@ -172,7 +90,6 @@ dependencies:
172
90
  type: :runtime
173
91
  prerelease: false
174
92
  version_requirements: !ruby/object:Gem::Requirement
175
- none: false
176
93
  requirements:
177
94
  - - ! '>='
178
95
  - !ruby/object:Gem::Version
@@ -180,7 +97,6 @@ dependencies:
180
97
  - !ruby/object:Gem::Dependency
181
98
  name: w3c_validators
182
99
  requirement: !ruby/object:Gem::Requirement
183
- none: false
184
100
  requirements:
185
101
  - - ! '>='
186
102
  - !ruby/object:Gem::Version
@@ -188,31 +104,13 @@ dependencies:
188
104
  type: :runtime
189
105
  prerelease: false
190
106
  version_requirements: !ruby/object:Gem::Requirement
191
- none: false
192
107
  requirements:
193
108
  - - ! '>='
194
109
  - !ruby/object:Gem::Version
195
110
  version: '0'
196
- - !ruby/object:Gem::Dependency
197
- name: cucumber
198
- requirement: !ruby/object:Gem::Requirement
199
- none: false
200
- requirements:
201
- - - ! '>='
202
- - !ruby/object:Gem::Version
203
- version: 0.10.5
204
- type: :runtime
205
- prerelease: false
206
- version_requirements: !ruby/object:Gem::Requirement
207
- none: false
208
- requirements:
209
- - - ! '>='
210
- - !ruby/object:Gem::Version
211
- version: 0.10.5
212
111
  - !ruby/object:Gem::Dependency
213
112
  name: rake
214
113
  requirement: !ruby/object:Gem::Requirement
215
- none: false
216
114
  requirements:
217
115
  - - ! '>='
218
116
  - !ruby/object:Gem::Version
@@ -220,7 +118,6 @@ dependencies:
220
118
  type: :development
221
119
  prerelease: false
222
120
  version_requirements: !ruby/object:Gem::Requirement
223
- none: false
224
121
  requirements:
225
122
  - - ! '>='
226
123
  - !ruby/object:Gem::Version
@@ -228,19 +125,17 @@ dependencies:
228
125
  - !ruby/object:Gem::Dependency
229
126
  name: rspec
230
127
  requirement: !ruby/object:Gem::Requirement
231
- none: false
232
128
  requirements:
233
129
  - - ! '>='
234
130
  - !ruby/object:Gem::Version
235
- version: 1.0.0
131
+ version: '0'
236
132
  type: :development
237
133
  prerelease: false
238
134
  version_requirements: !ruby/object:Gem::Requirement
239
- none: false
240
135
  requirements:
241
136
  - - ! '>='
242
137
  - !ruby/object:Gem::Version
243
- version: 1.0.0
138
+ version: '0'
244
139
  description: Gem to ease the pain of managing capybara driver config and provide a
245
140
  home for common utils and patches
246
141
  email:
@@ -260,19 +155,12 @@ files:
260
155
  - README.rdoc
261
156
  - Rakefile
262
157
  - frameworks-capybara.gemspec
158
+ - lib/extensions/capybara-mechanize-extensions.rb
263
159
  - lib/frameworks-capybara.rb
264
160
  - lib/frameworks/capybara.rb
265
161
  - lib/frameworks/cucumber.rb
266
- - lib/monkey-patches/capybara-mechanize-patches.rb
267
- - lib/monkey-patches/capybara-patches.rb
268
- - lib/monkey-patches/cucumber-patches.rb
269
- - lib/monkey-patches/mechanize-patches.rb
270
- - lib/monkey-patches/net-http-persistent-patches.rb
271
- - lib/monkey-patches/send-keys.rb
272
- - lib/monkey-patches/webdriver-patches.rb
273
162
  - lib/tasks/frameworks-tasks.rb
274
163
  - lib/version.rb
275
- - spec/capybara_mechanize_patches_spec.rb
276
164
  - spec/frameworks_capybara_spec.rb
277
165
  - spec/frameworks_cucumber_spec.rb
278
166
  - spec/mock.default/prefs.js
@@ -281,33 +169,26 @@ files:
281
169
  - spec/unit_test_monkeypatches.rb
282
170
  homepage:
283
171
  licenses: []
172
+ metadata: {}
284
173
  post_install_message:
285
174
  rdoc_options: []
286
175
  require_paths:
287
176
  - lib
288
177
  required_ruby_version: !ruby/object:Gem::Requirement
289
- none: false
290
178
  requirements:
291
179
  - - ! '>='
292
180
  - !ruby/object:Gem::Version
293
181
  version: '0'
294
- segments:
295
- - 0
296
- hash: -2675319668595312494
297
182
  required_rubygems_version: !ruby/object:Gem::Requirement
298
- none: false
299
183
  requirements:
300
184
  - - ! '>='
301
185
  - !ruby/object:Gem::Version
302
186
  version: '0'
303
- segments:
304
- - 0
305
- hash: -2675319668595312494
306
187
  requirements: []
307
188
  rubyforge_project:
308
- rubygems_version: 1.8.23
189
+ rubygems_version: 2.4.2
309
190
  signing_key:
310
- specification_version: 3
191
+ specification_version: 4
311
192
  summary: Gem to ease the pain of managing capybara driver config and provide a home
312
193
  for common utils and patches
313
194
  test_files: []
@@ -1,89 +0,0 @@
1
- require 'selenium-webdriver'
2
- require 'capybara/cucumber'
3
-
4
-
5
- ##
6
- #Monkey Patch's - Use with care!
7
- #
8
- class Capybara::Selenium::Node
9
- def style(prop)
10
- native.style(prop)
11
- end
12
- end
13
-
14
- class Capybara::Node::Element
15
- def style(prop)
16
- base.style(prop)
17
- end
18
- end
19
-
20
- class Capybara::Driver::Node
21
- def style(prop)
22
- raise NotImplementedError
23
- end
24
- end
25
-
26
- class Capybara::Selenium::Driver
27
- def cookies
28
- browser.manage.all_cookies
29
- end
30
-
31
- def cookie_named(name)
32
- browser.manage.cookie_named(name)
33
- end
34
-
35
- def delete_cookie(cookie)
36
- browser.manage.delete_cookie(cookie)
37
- end
38
-
39
- def delete_all_cookies
40
- browser.manage.delete_all_cookies
41
- end
42
-
43
- def add_cookie(attribs)
44
- browser.manage.add_cookie(attribs)
45
- end
46
-
47
- def delete_cookies_in_domain(domain)
48
- browser.manage.delete_cookies_in_domain(domain)
49
- end
50
- end
51
-
52
- module Capybara
53
- class Session
54
- ##
55
- # Get all cookies
56
- #
57
- # @return [Array<Hash>] list of cookies
58
- #
59
- def cookies
60
- driver.cookies
61
- end
62
-
63
- ##
64
- # Get the cookie with the given name
65
- #
66
- # @param [String] name the name of the cookie
67
- # @return [Hash, nil] the cookie, or nil if it wasn't found.
68
- #
69
- def cookie_named(name)
70
- driver.cookie_named(name)
71
- end
72
-
73
- def delete_cookie(cookie)
74
- driver.delete_cookie(cookie)
75
- end
76
-
77
- def delete_all_cookies
78
- driver.delete_all_cookies
79
- end
80
-
81
- def add_cookie(attribs)
82
- driver.add_cookie(attribs)
83
- end
84
-
85
- def delete_cookies_in_domain(domain)
86
- driver.delete_cookies_in_domain(domain)
87
- end
88
- end
89
- end
@@ -1,51 +0,0 @@
1
- require 'cucumber/formatter/html.rb'
2
- module Cucumber
3
- module Formatter
4
- class Html
5
- TEAM_NAME = 'BBC Frameworks'
6
- def before_features(features)
7
- @project_name = ENV['PROJECT_NAME'] || ''
8
- unless @project_name.empty? then @project_name += ' - ' end
9
-
10
- if Cucumber::Ast::Feature.method_defined?(:step_count)
11
- @step_count = features.step_count # cucumber >=1.3.0
12
- else
13
- @step_count = get_step_count(features) # cucumber <1.3.0
14
- end
15
-
16
- # <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
17
- @builder.declare!(
18
- :DOCTYPE,
19
- :html,
20
- :PUBLIC,
21
- '-//W3C//DTD XHTML 1.0 Strict//EN',
22
- 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd'
23
- )
24
-
25
- @builder << '<html xmlns ="http://www.w3.org/1999/xhtml">'
26
- @builder.head do
27
- @builder.meta(:content => 'text/html;charset=utf-8')
28
- @builder.title 'Cucumber'
29
- inline_css
30
- inline_js
31
- end
32
- @builder << '<body>'
33
- @builder << "<!-- Step count #{@step_count}-->"
34
- @builder << '<div class="cucumber">'
35
- @builder.div(:id => 'cucumber-header') do
36
- @builder.div(:id => 'label') do
37
- @builder.h1("#{@project_name}#{TEAM_NAME} - #{Time.now.strftime('%d/%m/%y-%H:%M:%S')}")
38
- end
39
- @builder.div(:id => 'summary') do
40
- @builder.p('',:id => 'totals')
41
- @builder.p('',:id => 'duration')
42
- @builder.div(:id => 'expand-collapse') do
43
- @builder.p('Expand All', :id => 'expander')
44
- @builder.p('Collapse All', :id => 'collapser')
45
- end
46
- end
47
- end
48
- end
49
- end
50
- end
51
- end
@@ -1,180 +0,0 @@
1
- require 'mechanize'
2
- #This patch is required Mechanize runs the clear before each new request
3
- #and not after each response, operationaly this is fine, but because
4
- #we check after response and it may be the last response we need it to clear here.
5
- class Mechanize::CookieJar
6
- alias_method :old_add, :add
7
- def add(*args)
8
- cleanup
9
- old_add(*args)
10
- end
11
- end
12
- #This patch may still be required, think it is only not needed now because we don't run
13
- #full facebook journey, only mock in idtests
14
- =begin
15
- # Fetches the URL passed in and returns a page.
16
- def get(uri, parameters = [], referer = nil, headers = {})
17
- method = :get
18
-
19
- if Hash === uri then
20
- options = uri
21
- location = Gem.location_of_caller.join ':'
22
- warn "#{location}: Mechanize#get with options hash is deprecated and will be removed October 2011"
23
-
24
- raise ArgumentError, "url must be specified" unless uri = options[:url]
25
- parameters = options[:params] || []
26
- referer = options[:referer]
27
- headers = options[:headers]
28
- method = options[:verb] || method
29
- end
30
-
31
- #FRAMEWORKS-PATCH - CHANGE LOGIC in 'if' so that =~ becomes !~ in order for
32
- #referer to be set correctly.
33
- referer ||=
34
- if uri.to_s !~ %r{\Ahttps?://}
35
- Page.new(nil, {'content-type'=>'text/html'})
36
- else
37
- current_page || Page.new(nil, {'content-type'=>'text/html'})
38
- end
39
-
40
- # FIXME: Huge hack so that using a URI as a referer works. I need to
41
- # refactor everything to pass around URIs but still support
42
- # Mechanize::Page#base
43
- unless referer.is_a?(Mechanize::File)
44
- referer = referer.is_a?(String) ?
45
- Page.new(URI.parse(referer), {'content-type' => 'text/html'}) :
46
- Page.new(referer, {'content-type' => 'text/html'})
47
- end
48
-
49
- # fetch the page
50
- headers ||= {}
51
- page = @agent.fetch uri, method, headers, parameters, referer
52
- add_to_history(page)
53
- yield page if block_given?
54
- page
55
- end
56
-
57
- end
58
- =end
59
-
60
- # This patch prevents Mechanize from raising a Mechanize::ResponseCodeError
61
- # when the HTTP Response Code is in `allowed_error_codes`.
62
- # https://github.com/tenderlove/mechanize/pull/248
63
- class Mechanize::HTTP::Agent
64
- attr_accessor :allowed_error_codes
65
-
66
- alias_method :old_initialize, :initialize
67
- def initialize
68
- @allowed_error_codes = []
69
- old_initialize
70
- end
71
-
72
- def fetch uri, method = :get, headers = {}, params = [],
73
- referer = current_page, redirects = 0
74
- referer_uri = referer ? referer.uri : nil
75
-
76
- uri = resolve uri, referer
77
-
78
- uri, params = resolve_parameters uri, method, params
79
-
80
- request = http_request uri, method, params
81
-
82
- connection = connection_for uri
83
-
84
- request_auth request, uri
85
-
86
- disable_keep_alive request
87
- enable_gzip request
88
-
89
- request_language_charset request
90
- request_cookies request, uri
91
- request_host request, uri
92
- request_referer request, uri, referer_uri
93
- request_user_agent request
94
- request_add_headers request, headers
95
-
96
- pre_connect request
97
-
98
- # Consult robots.txt
99
- if robots && uri.is_a?(URI::HTTP)
100
- robots_allowed?(uri) or raise Mechanize::RobotsDisallowedError.new(uri)
101
- end
102
-
103
- # Add If-Modified-Since if page is in history
104
- page = visited_page(uri)
105
-
106
- if (page = visited_page(uri)) and page.response['Last-Modified']
107
- request['If-Modified-Since'] = page.response['Last-Modified']
108
- end if(@conditional_requests)
109
-
110
- # Specify timeouts if given
111
- connection.open_timeout = @open_timeout if @open_timeout
112
- connection.read_timeout = @read_timeout if @read_timeout
113
-
114
- request_log request
115
-
116
- response_body_io = nil
117
-
118
- # Send the request
119
- begin
120
- response = connection.request(uri, request) { |res|
121
- response_log res
122
-
123
- response_body_io = response_read res, request, uri
124
-
125
- res
126
- }
127
- rescue Mechanize::ChunkedTerminationError => e
128
- raise unless @ignore_bad_chunking
129
-
130
- response = e.response
131
- response_body_io = e.body_io
132
- end
133
-
134
- hook_content_encoding response, uri, response_body_io
135
-
136
- response_body_io = response_content_encoding response, response_body_io if
137
- request.response_body_permitted?
138
-
139
- post_connect uri, response, response_body_io
140
-
141
- page = response_parse response, response_body_io, uri
142
-
143
- response_cookies response, uri, page
144
-
145
- meta = response_follow_meta_refresh response, uri, page, redirects
146
-
147
- return meta if meta
148
-
149
- case response
150
- when Net::HTTPSuccess
151
- if robots && page.is_a?(Mechanize::Page)
152
- page.parser.noindex? and raise Mechanize::RobotsDisallowedError.new(uri)
153
- end
154
-
155
- page
156
- when Mechanize::FileResponse
157
- page
158
- when Net::HTTPNotModified
159
- log.debug("Got cached page") if log
160
- visited_page(uri) || page
161
- when Net::HTTPRedirection
162
- response_redirect response, method, page, redirects, headers, referer
163
- when Net::HTTPUnauthorized
164
- response_authenticate(response, page, uri, request, headers, params,
165
- referer)
166
- else
167
- # BEGIN PATCH
168
- if @allowed_error_codes.any? {|code| code.to_s == page.code} then
169
- if robots && page.is_a?(Mechanize::Page)
170
- page.parser.noindex? and raise Mechanize::RobotsDisallowedError.new(uri)
171
- end
172
-
173
- page
174
- else
175
- raise Mechanize::ResponseCodeError.new(page, 'unhandled response')
176
- end
177
- # END PATCH
178
- end
179
- end
180
- end
@@ -1,72 +0,0 @@
1
- #Adding no_proxy_host logic for Mechanize2 which uses this
2
- #gem for it's HTTP client logic
3
- #TODO: Grab from envirnment variable optionally, or provide list
4
- class Net::HTTP::Persistent
5
-
6
- ##
7
- # Creates a new connection for +uri+
8
- def connection_for uri
9
- Thread.current[@generation_key] ||= Hash.new { |h,k| h[k] = {} }
10
- Thread.current[@ssl_generation_key] ||= Hash.new { |h,k| h[k] = {} }
11
- Thread.current[@request_key] ||= Hash.new 0
12
- Thread.current[@timeout_key] ||= Hash.new EPOCH
13
-
14
- use_ssl = uri.scheme.downcase == 'https'
15
-
16
- if use_ssl then
17
- ssl_generation = @ssl_generation
18
-
19
- ssl_cleanup ssl_generation
20
-
21
- connections = Thread.current[@ssl_generation_key][ssl_generation]
22
- else
23
- generation = @generation
24
-
25
- cleanup generation
26
-
27
- connections = Thread.current[@generation_key][generation]
28
- end
29
-
30
- net_http_args = [uri.host, uri.port]
31
- connection_id = net_http_args.join ':'
32
- #
33
- #Frameworks patch (and condition)
34
- if @proxy_uri and !uri.host.include? 'sandbox' then
35
- connection_id << @proxy_connection_id
36
- net_http_args.concat @proxy_args
37
- end
38
-
39
- connection = connections[connection_id]
40
-
41
- unless connection = connections[connection_id] then
42
- connections[connection_id] = http_class.new(*net_http_args)
43
- connection = connections[connection_id]
44
- ssl connection if use_ssl
45
- else
46
- reset connection if expired? connection
47
- end
48
-
49
- unless connection.started? then
50
- connection.set_debug_output @debug_output if @debug_output
51
- connection.open_timeout = @open_timeout if @open_timeout
52
- connection.read_timeout = @read_timeout if @read_timeout
53
-
54
- connection.start
55
-
56
- socket = connection.instance_variable_get :@socket
57
-
58
- if socket then # for fakeweb
59
- @socket_options.each do |option|
60
- socket.io.setsockopt(*option)
61
- end
62
- end
63
- end
64
-
65
- connection
66
- rescue Errno::ECONNREFUSED
67
- raise Error, "connection refused: #{connection.address}:#{connection.port}"
68
- rescue Errno::EHOSTDOWN
69
- raise Error, "host down: #{connection.address}:#{connection.port}"
70
- end
71
- end
72
-