capybara 3.15.0 → 3.15.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 023614c44b5551f29984d882a7fb13b5ff240f589eff090cfb24c4f3a2787a47
4
- data.tar.gz: c5c1cd40b59700f743325cca40efbe9fd68df776c7f16f6d351336400e86cdd4
3
+ metadata.gz: 12db68d440542fd3dda74f6b7f2dfa36c2eb2b8e1fe973cabbbfe1ebed0fe199
4
+ data.tar.gz: 9fbdd911c4193831996aa05a086fdfcc9012897e3640d4a4efe37c1df6679514
5
5
  SHA512:
6
- metadata.gz: a76732bb72e5e5daefaf55a2bc4c895ef56d109905b9b3b2a5c96e229d97d783f1044dd6971ed21d4e63e55200a5e00a4641f50698f79346767fe498a5b894ad
7
- data.tar.gz: ac8d9499807a093c26ca861ed204087702b1a3713b757c6e9d84d43f399b38db36b3b1ab28471413dfd385b442b7636abe9f16194ae4ef17395a16d5e92b7a1c
6
+ metadata.gz: d93e604a136e740101b4672947033e4b628df4627337ed3aee11098f0fd1be7ee5f10a6401e6185ac9797a531db8dde6f7d51ca80a4d446468ecb77698140224
7
+ data.tar.gz: ebdabe24db256bf3d083aafdb4dc16caf51211ae24cde2edca4cae755b97818ffc64f93705f45f98fc11f8e2e03184a2de09fc801dd85f500915cc91c5a0b52d
data/History.md CHANGED
@@ -1,4 +1,11 @@
1
- # Version 3.15
1
+ # Version 3.15.1
2
+ Release date: 2019-04-20
3
+
4
+ ### Added
5
+
6
+ * Suppress some deprecation notices from the latest selenium-webdriver
7
+
8
+ # Version 3.15.0
2
9
  Release date: 2019-03-19
3
10
 
4
11
  ### Added
@@ -16,6 +16,7 @@ class Capybara::Selenium::Driver < Capybara::Driver::Base
16
16
 
17
17
  def self.load_selenium
18
18
  require 'selenium-webdriver'
19
+ require 'capybara/selenium/logger_suppressor'
19
20
  warn "Warning: You're using an unsupported version of selenium-webdriver, please upgrade." if Gem.loaded_specs['selenium-webdriver'].version < Gem::Version.new('3.5.0')
20
21
  rescue LoadError => err
21
22
  raise err if err.message !~ /selenium-webdriver/
@@ -110,7 +111,7 @@ class Capybara::Selenium::Driver < Capybara::Driver::Base
110
111
  navigated = true
111
112
  # Ensure the page is empty and trigger an UnhandledAlertError for any modals that appear during unload
112
113
  wait_for_empty_page(timer)
113
- rescue Selenium::WebDriver::Error::UnhandledAlertError, Selenium::WebDriver::Error::UnexpectedAlertOpenError
114
+ rescue *unhandled_alert_errors
114
115
  # This error is thrown if an unhandled alert is on the page
115
116
  # Firefox appears to automatically dismiss this alert, chrome does not
116
117
  # We'll try to accept it
@@ -218,19 +219,24 @@ class Capybara::Selenium::Driver < Capybara::Driver::Base
218
219
  end
219
220
 
220
221
  def invalid_element_errors
221
- [
222
+ errors = [
222
223
  ::Selenium::WebDriver::Error::StaleElementReferenceError,
223
- ::Selenium::WebDriver::Error::UnhandledError,
224
- ::Selenium::WebDriver::Error::ElementNotVisibleError,
225
- ::Selenium::WebDriver::Error::InvalidSelectorError, # Work around a chromedriver go_back/go_forward race condition
226
224
  ::Selenium::WebDriver::Error::ElementNotInteractableError,
225
+ ::Selenium::WebDriver::Error::InvalidSelectorError, # Work around chromedriver go_back/go_forward race condition
227
226
  ::Selenium::WebDriver::Error::ElementClickInterceptedError,
228
- ::Selenium::WebDriver::Error::InvalidElementStateError,
229
- ::Selenium::WebDriver::Error::ElementNotSelectableError,
230
- ::Selenium::WebDriver::Error::ElementNotSelectableError,
231
227
  ::Selenium::WebDriver::Error::NoSuchElementError, # IE
232
228
  ::Selenium::WebDriver::Error::InvalidArgumentError # IE
233
229
  ]
230
+
231
+ ::Selenium::WebDriver.logger.suppress_deprecations do
232
+ errors.concat [
233
+ ::Selenium::WebDriver::Error::UnhandledError,
234
+ ::Selenium::WebDriver::Error::ElementNotVisibleError,
235
+ ::Selenium::WebDriver::Error::InvalidElementStateError,
236
+ ::Selenium::WebDriver::Error::ElementNotSelectableError
237
+ ]
238
+ end
239
+ errors
234
240
  end
235
241
 
236
242
  def no_such_window_error
@@ -246,12 +252,24 @@ private
246
252
  def clear_browser_state
247
253
  delete_all_cookies
248
254
  clear_storage
249
- rescue Selenium::WebDriver::Error::UnhandledError # rubocop:disable Lint/HandleExceptions
255
+ rescue *clear_browser_state_errors # rubocop:disable Lint/HandleExceptions
250
256
  # delete_all_cookies fails when we've previously gone
251
257
  # to about:blank, so we rescue this error and do nothing
252
258
  # instead.
253
259
  end
254
260
 
261
+ def clear_browser_state_errors
262
+ ::Selenium::WebDriver.logger.suppress_deprecations do
263
+ [Selenium::WebDriver::Error::UnhandledError, Selenium::WebDriver::Error::UnknownError]
264
+ end
265
+ end
266
+
267
+ def unhandled_alert_errors
268
+ ::Selenium::WebDriver.logger.suppress_deprecations do
269
+ [Selenium::WebDriver::Error::UnhandledAlertError, Selenium::WebDriver::Error::UnexpectedAlertOpenError]
270
+ end
271
+ end
272
+
255
273
  def delete_all_cookies
256
274
  @browser.manage.delete_all_cookies
257
275
  end
@@ -324,11 +342,17 @@ private
324
342
  regexp = text.is_a?(Regexp) ? text : Regexp.escape(text.to_s)
325
343
  alert.text.match(regexp) ? alert : nil
326
344
  end
327
- rescue Selenium::WebDriver::Error::TimeOutError
345
+ rescue *find_modal_errors
328
346
  raise Capybara::ModalNotFound, "Unable to find modal dialog#{" with #{text}" if text}"
329
347
  end
330
348
  end
331
349
 
350
+ def find_modal_errors
351
+ ::Selenium::WebDriver.logger.suppress_deprecations do
352
+ [Selenium::WebDriver::Error::TimeoutError, Selenium::WebDriver::Error::TimeOutError]
353
+ end
354
+ end
355
+
332
356
  def silenced_unknown_error_message?(msg)
333
357
  silenced_unknown_error_messages.any? { |regex| msg =~ regex }
334
358
  end
@@ -40,11 +40,17 @@ private
40
40
 
41
41
  def delete_all_cookies
42
42
  execute_cdp('Network.clearBrowserCookies')
43
- rescue Selenium::WebDriver::Error::UnhandledError, Selenium::WebDriver::Error::WebDriverError
43
+ rescue *cdp_unsupported_errors
44
44
  # If the CDP clear isn't supported do original limited clear
45
45
  super
46
46
  end
47
47
 
48
+ def cdp_unsupported_errors
49
+ ::Selenium::WebDriver.logger.suppress_deprecations do
50
+ [Selenium::WebDriver::Error::UnhandledError, Selenium::WebDriver::Error::WebDriverError]
51
+ end
52
+ end
53
+
48
54
  def execute_cdp(cmd, params = {})
49
55
  args = { cmd: cmd, params: params }
50
56
  result = bridge.http.call(:post, "session/#{bridge.session_id}/goog/cdp/execute", args)
@@ -0,0 +1,29 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Capybara
4
+ module Selenium
5
+ module DeprecationSuppressor
6
+ def deprecate(*)
7
+ super unless @suppress_for_capybara
8
+ end
9
+
10
+ def suppress_deprecations
11
+ prev_suppress_for_capybara, @suppress_for_capybara = @suppress_for_capybara, true
12
+ yield
13
+ ensure
14
+ @suppress_for_capybara = prev_suppress_for_capybara
15
+ end
16
+ end
17
+
18
+ module ErrorSuppressor
19
+ def for_code(*)
20
+ ::Selenium::WebDriver.logger.suppress_deprecations do
21
+ super
22
+ end
23
+ end
24
+ end
25
+ end
26
+ end
27
+
28
+ Selenium::WebDriver::Logger.prepend Capybara::Selenium::DeprecationSuppressor
29
+ Selenium::WebDriver::Error.singleton_class.prepend Capybara::Selenium::ErrorSuppressor
@@ -14,9 +14,9 @@ class Capybara::Selenium::ChromeNode < Capybara::Selenium::Node
14
14
 
15
15
  def set_file(value) # rubocop:disable Naming/AccessorMethodName
16
16
  super(value)
17
- rescue ::Selenium::WebDriver::Error::ExpectedError => err
17
+ rescue *file_errors => err
18
18
  if err.message =~ /File not found : .+\n.+/m
19
- raise ArgumentError, "Selenium < 3.14 with remote Chrome doesn't support multiple file upload"
19
+ raise ArgumentError, "Selenium < 3.14 with remote Chrome doesn't support multiple file upload" if e.message.match?(/File not found : .+\n.+/m)
20
20
  end
21
21
 
22
22
  raise
@@ -30,6 +30,12 @@ class Capybara::Selenium::ChromeNode < Capybara::Selenium::Node
30
30
 
31
31
  private
32
32
 
33
+ def file_errors
34
+ ::Selenium::WebDriver.logger.suppress_deprecations do
35
+ [::Selenium::WebDriver::Error::ExpectedError]
36
+ end
37
+ end
38
+
33
39
  def bridge
34
40
  driver.browser.send(:bridge)
35
41
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Capybara
4
- VERSION = '3.15.0'
4
+ VERSION = '3.15.1'
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: capybara
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.15.0
4
+ version: 3.15.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Thomas Walpole
@@ -10,7 +10,7 @@ autorequire:
10
10
  bindir: bin
11
11
  cert_chain:
12
12
  - gem-public_cert.pem
13
- date: 2019-03-19 00:00:00.000000000 Z
13
+ date: 2019-04-20 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: addressable
@@ -414,6 +414,7 @@ files:
414
414
  - lib/capybara/selenium/extensions/find.rb
415
415
  - lib/capybara/selenium/extensions/html5_drag.rb
416
416
  - lib/capybara/selenium/extensions/scroll.rb
417
+ - lib/capybara/selenium/logger_suppressor.rb
417
418
  - lib/capybara/selenium/node.rb
418
419
  - lib/capybara/selenium/nodes/chrome_node.rb
419
420
  - lib/capybara/selenium/nodes/firefox_node.rb