capybara 3.15.0 → 3.15.1

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
  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