selenium-webdriver 4.1.0 → 4.28.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 +4 -4
- data/CHANGES +446 -1
- data/Gemfile +4 -0
- data/LICENSE +1 -1
- data/NOTICE +1 -1
- data/README.md +3 -3
- data/bin/linux/selenium-manager +0 -0
- data/bin/macos/selenium-manager +0 -0
- data/bin/windows/selenium-manager.exe +0 -0
- data/lib/selenium/server.rb +41 -43
- data/lib/selenium/webdriver/atoms/findElements.js +52 -50
- data/lib/selenium/webdriver/atoms/getAttribute.js +6 -100
- data/lib/selenium/webdriver/atoms/isDisplayed.js +24 -96
- data/lib/selenium/webdriver/atoms/mutationListener.js +0 -0
- data/lib/selenium/webdriver/atoms.rb +5 -3
- data/lib/selenium/webdriver/bidi/browsing_context.rb +100 -0
- data/lib/selenium/webdriver/bidi/log/base_log_entry.rb +35 -0
- data/lib/selenium/webdriver/bidi/log/console_log_entry.rb +35 -0
- data/lib/selenium/webdriver/{common/driver_extensions/has_location.rb → bidi/log/filter_by.rb} +14 -11
- data/lib/selenium/webdriver/bidi/log/generic_log_entry.rb +33 -0
- data/lib/selenium/webdriver/bidi/log/javascript_log_entry.rb +33 -0
- data/lib/selenium/webdriver/bidi/log_handler.rb +65 -0
- data/lib/selenium/webdriver/bidi/log_inspector.rb +147 -0
- data/lib/selenium/webdriver/bidi/network.rb +82 -0
- data/lib/selenium/webdriver/bidi/session.rb +51 -0
- data/lib/selenium/webdriver/bidi/struct.rb +42 -0
- data/lib/selenium/webdriver/bidi.rb +67 -0
- data/lib/selenium/webdriver/chrome/driver.rb +9 -29
- data/lib/selenium/webdriver/chrome/features.rb +9 -67
- data/lib/selenium/webdriver/chrome/options.rb +3 -223
- data/lib/selenium/webdriver/chrome/profile.rb +3 -83
- data/lib/selenium/webdriver/chrome/service.rb +5 -19
- data/lib/selenium/webdriver/chrome.rb +0 -16
- data/lib/selenium/webdriver/chromium/driver.rb +61 -0
- data/lib/selenium/webdriver/chromium/features.rb +99 -0
- data/lib/selenium/webdriver/chromium/options.rb +243 -0
- data/lib/selenium/webdriver/chromium/profile.rb +113 -0
- data/lib/selenium/webdriver/chromium.rb +29 -0
- data/lib/selenium/webdriver/common/action_builder.rb +60 -22
- data/lib/selenium/webdriver/common/child_process.rb +136 -0
- data/lib/selenium/webdriver/common/driver.rb +54 -89
- data/lib/selenium/webdriver/common/driver_extensions/downloads_files.rb +0 -2
- data/lib/selenium/webdriver/common/driver_extensions/full_page_screenshot.rb +0 -1
- data/lib/selenium/webdriver/common/driver_extensions/has_addons.rb +0 -2
- data/lib/selenium/webdriver/common/driver_extensions/has_apple_permissions.rb +0 -2
- data/lib/selenium/webdriver/common/driver_extensions/has_authentication.rb +0 -2
- data/lib/selenium/webdriver/common/driver_extensions/{has_remote_status.rb → has_bidi.rb} +10 -5
- data/lib/selenium/webdriver/common/driver_extensions/has_casting.rb +10 -1
- data/lib/selenium/webdriver/common/driver_extensions/has_cdp.rb +0 -2
- data/lib/selenium/webdriver/common/driver_extensions/has_context.rb +1 -4
- data/lib/selenium/webdriver/common/driver_extensions/has_debugger.rb +0 -2
- data/lib/selenium/webdriver/common/driver_extensions/has_devtools.rb +0 -2
- data/lib/selenium/webdriver/common/driver_extensions/has_fedcm_dialog.rb +55 -0
- data/lib/selenium/webdriver/common/driver_extensions/has_file_downloads.rb +65 -0
- data/lib/selenium/webdriver/common/driver_extensions/has_launching.rb +0 -2
- data/lib/selenium/webdriver/common/driver_extensions/has_log_events.rb +9 -3
- data/lib/selenium/webdriver/common/driver_extensions/has_network_conditions.rb +0 -2
- data/lib/selenium/webdriver/common/driver_extensions/has_network_interception.rb +8 -68
- data/lib/selenium/webdriver/common/driver_extensions/has_permissions.rb +0 -2
- data/lib/selenium/webdriver/common/driver_extensions/has_pinned_scripts.rb +1 -3
- data/lib/selenium/webdriver/common/driver_finder.rb +97 -0
- data/lib/selenium/webdriver/common/element.rb +8 -8
- data/lib/selenium/webdriver/common/error.rb +29 -4
- data/lib/selenium/webdriver/common/fedcm/account.rb +49 -0
- data/lib/selenium/webdriver/common/fedcm/dialog.rb +74 -0
- data/lib/selenium/webdriver/common/fedcm.rb +27 -0
- data/lib/selenium/webdriver/common/html5/shared_web_storage.rb +2 -2
- data/lib/selenium/webdriver/common/interactions/input_device.rb +10 -4
- data/lib/selenium/webdriver/common/interactions/interaction.rb +12 -25
- data/lib/selenium/webdriver/common/interactions/interactions.rb +24 -4
- data/lib/selenium/webdriver/common/interactions/key_actions.rb +5 -1
- data/lib/selenium/webdriver/common/interactions/key_input.rb +11 -27
- data/lib/selenium/webdriver/common/interactions/none_input.rb +10 -8
- data/lib/selenium/webdriver/common/interactions/pause.rb +49 -0
- data/lib/selenium/webdriver/common/interactions/pointer_actions.rb +59 -71
- data/lib/selenium/webdriver/common/{driver_extensions/has_network_connection.rb → interactions/pointer_cancel.rb} +19 -11
- data/lib/selenium/webdriver/common/interactions/pointer_event_properties.rb +63 -0
- data/lib/selenium/webdriver/common/interactions/pointer_input.rb +15 -84
- data/lib/selenium/webdriver/common/interactions/pointer_move.rb +60 -0
- data/lib/selenium/webdriver/common/interactions/pointer_press.rb +85 -0
- data/lib/selenium/webdriver/common/interactions/scroll.rb +59 -0
- data/lib/selenium/webdriver/common/interactions/scroll_origin.rb +48 -0
- data/lib/selenium/webdriver/common/interactions/typing_interaction.rb +54 -0
- data/lib/selenium/webdriver/common/interactions/wheel_actions.rb +114 -0
- data/lib/selenium/webdriver/common/interactions/wheel_input.rb +42 -0
- data/lib/selenium/webdriver/common/keys.rb +1 -0
- data/lib/selenium/webdriver/common/local_driver.rb +53 -0
- data/lib/selenium/webdriver/common/logger.rb +93 -28
- data/lib/selenium/webdriver/common/manager.rb +2 -29
- data/lib/selenium/webdriver/common/network.rb +64 -0
- data/lib/selenium/webdriver/common/options.rb +19 -19
- data/lib/selenium/webdriver/common/platform.rb +12 -52
- data/lib/selenium/webdriver/common/port_prober.rb +1 -1
- data/lib/selenium/webdriver/common/profile_helper.rb +1 -1
- data/lib/selenium/webdriver/common/proxy.rb +4 -4
- data/lib/selenium/webdriver/common/script.rb +45 -0
- data/lib/selenium/webdriver/common/search_context.rb +10 -8
- data/lib/selenium/webdriver/common/selenium_manager.rb +104 -0
- data/lib/selenium/webdriver/common/service.rb +24 -26
- data/lib/selenium/webdriver/common/service_manager.rb +9 -15
- data/lib/selenium/webdriver/common/shadow_root.rb +2 -3
- data/lib/selenium/webdriver/common/socket_lock.rb +3 -3
- data/lib/selenium/webdriver/common/socket_poller.rb +3 -3
- data/lib/selenium/webdriver/common/takes_screenshot.rb +6 -5
- data/lib/selenium/webdriver/common/target_locator.rb +5 -5
- data/lib/selenium/webdriver/common/timeouts.rb +2 -2
- data/lib/selenium/webdriver/common/virtual_authenticator/credential.rb +85 -0
- data/lib/selenium/webdriver/common/virtual_authenticator/virtual_authenticator.rb +72 -0
- data/lib/selenium/webdriver/common/virtual_authenticator/virtual_authenticator_options.rb +62 -0
- data/lib/selenium/webdriver/common/wait.rb +1 -1
- data/lib/selenium/webdriver/common/websocket_connection.rb +176 -0
- data/lib/selenium/webdriver/common/window.rb +6 -6
- data/lib/selenium/webdriver/common/zipper.rb +1 -1
- data/lib/selenium/webdriver/common.rb +27 -5
- data/lib/selenium/webdriver/devtools/console_event.rb +0 -2
- data/lib/selenium/webdriver/devtools/exception_event.rb +0 -2
- data/lib/selenium/webdriver/devtools/mutation_event.rb +0 -2
- data/lib/selenium/webdriver/devtools/network_interceptor.rb +173 -0
- data/lib/selenium/webdriver/devtools/pinned_script.rb +0 -2
- data/lib/selenium/webdriver/devtools/request.rb +1 -3
- data/lib/selenium/webdriver/devtools/response.rb +1 -3
- data/lib/selenium/webdriver/devtools.rb +17 -114
- data/lib/selenium/webdriver/edge/driver.rb +9 -3
- data/lib/selenium/webdriver/edge/features.rb +8 -4
- data/lib/selenium/webdriver/edge/options.rb +17 -5
- data/lib/selenium/webdriver/edge/profile.rb +2 -2
- data/lib/selenium/webdriver/edge/service.rb +8 -7
- data/lib/selenium/webdriver/edge.rb +0 -2
- data/lib/selenium/webdriver/firefox/driver.rb +9 -2
- data/lib/selenium/webdriver/firefox/features.rb +11 -7
- data/lib/selenium/webdriver/firefox/options.rb +10 -16
- data/lib/selenium/webdriver/firefox/profile.rb +21 -17
- data/lib/selenium/webdriver/firefox/profiles_ini.rb +1 -1
- data/lib/selenium/webdriver/firefox/service.rb +1 -18
- data/lib/selenium/webdriver/firefox/util.rb +46 -0
- data/lib/selenium/webdriver/firefox.rb +1 -14
- data/lib/selenium/webdriver/ie/driver.rb +7 -1
- data/lib/selenium/webdriver/ie/features.rb +34 -0
- data/lib/selenium/webdriver/ie/options.rb +6 -4
- data/lib/selenium/webdriver/ie/service.rb +1 -22
- data/lib/selenium/webdriver/ie.rb +4 -17
- data/lib/selenium/webdriver/remote/bidi_bridge.rb +66 -0
- data/lib/selenium/webdriver/remote/{commands.rb → bridge/commands.rb} +22 -9
- data/lib/selenium/webdriver/remote/bridge/locator_converter.rb +76 -0
- data/lib/selenium/webdriver/remote/bridge.rb +158 -100
- data/lib/selenium/webdriver/remote/capabilities.rb +5 -55
- data/lib/selenium/webdriver/remote/driver.rb +35 -14
- data/lib/selenium/webdriver/remote/features.rb +75 -0
- data/lib/selenium/webdriver/remote/http/common.rb +26 -6
- data/lib/selenium/webdriver/remote/http/curb.rb +10 -6
- data/lib/selenium/webdriver/remote/http/default.rb +8 -14
- data/lib/selenium/webdriver/remote/response.rb +14 -22
- data/lib/selenium/webdriver/remote/server_error.rb +2 -2
- data/lib/selenium/webdriver/remote.rb +3 -2
- data/lib/selenium/webdriver/safari/driver.rb +7 -1
- data/lib/selenium/webdriver/safari/features.rb +5 -3
- data/lib/selenium/webdriver/safari/options.rb +5 -1
- data/lib/selenium/webdriver/safari/service.rb +10 -4
- data/lib/selenium/webdriver/safari.rb +1 -15
- data/lib/selenium/webdriver/support/color.rb +22 -22
- data/lib/selenium/webdriver/support/event_firing_bridge.rb +4 -4
- data/lib/selenium/webdriver/support/guards/guard.rb +14 -14
- data/lib/selenium/webdriver/support/guards/guard_condition.rb +1 -3
- data/lib/selenium/webdriver/support/guards.rb +4 -4
- data/lib/selenium/webdriver/support/relative_locator.rb +0 -1
- data/lib/selenium/webdriver/support/select.rb +3 -1
- data/lib/selenium/webdriver/version.rb +1 -1
- data/lib/selenium/webdriver.rb +7 -5
- data/selenium-webdriver.gemspec +22 -16
- metadata +137 -47
- data/lib/selenium/webdriver/remote/http/persistent.rb +0 -65
- data/lib/selenium/webdriver/support/cdp/domain.rb.erb +0 -63
- data/lib/selenium/webdriver/support/cdp_client_generator.rb +0 -108
@@ -21,15 +21,13 @@ module Selenium
|
|
21
21
|
module WebDriver
|
22
22
|
module Support
|
23
23
|
class Guards
|
24
|
-
|
25
24
|
#
|
26
25
|
# Guard derived from RSpec example metadata.
|
27
26
|
# @api private
|
28
27
|
#
|
29
28
|
|
30
29
|
class Guard
|
31
|
-
|
32
|
-
attr_reader :guarded, :type, :messages, :reason
|
30
|
+
attr_reader :guarded, :type, :messages, :reason, :tracker
|
33
31
|
|
34
32
|
def initialize(guarded, type, guards = nil)
|
35
33
|
@guarded = guarded
|
@@ -38,24 +36,25 @@ module Selenium
|
|
38
36
|
@messages[:unknown] = 'TODO: Investigate why this is failing and file a bug report'
|
39
37
|
@type = type
|
40
38
|
|
41
|
-
@reason = @guarded
|
39
|
+
@reason = @guarded[:reason] || 'No reason given'
|
40
|
+
@guarded[:reason] = @reason
|
42
41
|
end
|
43
42
|
|
44
43
|
def message
|
45
|
-
details = case
|
44
|
+
details = case reason
|
46
45
|
when Integer
|
47
|
-
"Bug Filed: #{
|
46
|
+
"Bug Filed: #{tracker}/#{reason}"
|
48
47
|
when Symbol
|
49
|
-
|
50
|
-
when String
|
51
|
-
@reason
|
48
|
+
messages[reason]
|
52
49
|
else
|
53
|
-
|
50
|
+
"Guarded by #{guarded};"
|
54
51
|
end
|
55
52
|
|
56
|
-
case
|
53
|
+
case type
|
57
54
|
when :exclude
|
58
|
-
"Test
|
55
|
+
"Test skipped because it breaks test run; #{details}"
|
56
|
+
when :flaky
|
57
|
+
"Test skipped because it is unreliable in this configuration; #{details}"
|
59
58
|
when :exclusive
|
60
59
|
"Test does not apply to this configuration; #{details}"
|
61
60
|
else
|
@@ -73,9 +72,10 @@ module Selenium
|
|
73
72
|
@type == :only
|
74
73
|
end
|
75
74
|
|
76
|
-
# Bug is present on all configurations specified, but test can not be run because it breaks other tests
|
75
|
+
# Bug is present on all configurations specified, but test can not be run because it breaks other tests,
|
76
|
+
# or it is flaky and unreliable
|
77
77
|
def exclude?
|
78
|
-
@type == :exclude
|
78
|
+
@type == :exclude || @type == :flaky
|
79
79
|
end
|
80
80
|
|
81
81
|
# Test only applies to configurations specified
|
@@ -21,7 +21,6 @@ module Selenium
|
|
21
21
|
module WebDriver
|
22
22
|
module Support
|
23
23
|
class Guards
|
24
|
-
|
25
24
|
#
|
26
25
|
# Guard derived from RSpec example metadata.
|
27
26
|
# @api private
|
@@ -32,7 +31,7 @@ module Selenium
|
|
32
31
|
|
33
32
|
def initialize(name, condition = nil, &blk)
|
34
33
|
@name = name
|
35
|
-
@execution = if
|
34
|
+
@execution = if blk
|
36
35
|
proc(&blk)
|
37
36
|
else
|
38
37
|
proc { |guarded| guarded.include?(condition) }
|
@@ -44,7 +43,6 @@ module Selenium
|
|
44
43
|
|
45
44
|
list.empty? || @execution.call(list)
|
46
45
|
end
|
47
|
-
|
48
46
|
end # GuardCondition
|
49
47
|
end # Guards
|
50
48
|
end # Support
|
@@ -24,7 +24,7 @@ module Selenium
|
|
24
24
|
module WebDriver
|
25
25
|
module Support
|
26
26
|
class Guards
|
27
|
-
GUARD_TYPES = %i[except only exclude exclusive].freeze
|
27
|
+
GUARD_TYPES = %i[except only exclude exclusive flaky].freeze
|
28
28
|
|
29
29
|
attr_reader :messages
|
30
30
|
attr_accessor :bug_tracker
|
@@ -37,8 +37,8 @@ module Selenium
|
|
37
37
|
@messages = {}
|
38
38
|
end
|
39
39
|
|
40
|
-
def add_condition(name, condition = nil, &
|
41
|
-
@guard_conditions << GuardCondition.new(name, condition, &
|
40
|
+
def add_condition(name, condition = nil, &)
|
41
|
+
@guard_conditions << GuardCondition.new(name, condition, &)
|
42
42
|
end
|
43
43
|
|
44
44
|
def add_message(name, message)
|
@@ -48,7 +48,7 @@ module Selenium
|
|
48
48
|
def disposition
|
49
49
|
if !skipping_guard.nil?
|
50
50
|
[:skip, skipping_guard.message]
|
51
|
-
elsif !pending_guard.nil? && ENV
|
51
|
+
elsif !pending_guard.nil? && ENV.fetch('SKIP_PENDING', nil)
|
52
52
|
[:skip, pending_guard.message]
|
53
53
|
elsif !pending_guard.nil?
|
54
54
|
[:pending, pending_guard.message]
|
@@ -86,7 +86,7 @@ module Selenium
|
|
86
86
|
#
|
87
87
|
# <option value="foo">Bar</option>
|
88
88
|
#
|
89
|
-
# When
|
89
|
+
# When selecting by :value, selects all options that have a value matching the argument. That is, when given "foo" this
|
90
90
|
# would select an option like:
|
91
91
|
#
|
92
92
|
# <option value="foo">Bar</option>
|
@@ -215,6 +215,8 @@ module Selenium
|
|
215
215
|
end
|
216
216
|
|
217
217
|
def select_option(option)
|
218
|
+
raise Error::UnsupportedOperationError, 'You may not select a disabled option' unless option.enabled?
|
219
|
+
|
218
220
|
option.click unless option.selected?
|
219
221
|
end
|
220
222
|
|
data/lib/selenium/webdriver.rb
CHANGED
@@ -17,13 +17,13 @@
|
|
17
17
|
# specific language governing permissions and limitations
|
18
18
|
# under the License.
|
19
19
|
|
20
|
-
require 'childprocess'
|
21
20
|
require 'tmpdir'
|
22
21
|
require 'fileutils'
|
23
22
|
require 'date'
|
24
23
|
require 'json'
|
25
24
|
require 'set'
|
26
25
|
require 'uri'
|
26
|
+
require 'net/http'
|
27
27
|
|
28
28
|
require 'selenium/webdriver/atoms'
|
29
29
|
require 'selenium/webdriver/common'
|
@@ -34,8 +34,9 @@ module Selenium
|
|
34
34
|
Point = Struct.new(:x, :y)
|
35
35
|
Dimension = Struct.new(:width, :height)
|
36
36
|
Rectangle = Struct.new(:x, :y, :width, :height)
|
37
|
-
Location = Struct.new(:latitude, :longitude, :altitude)
|
38
37
|
|
38
|
+
autoload :BiDi, 'selenium/webdriver/bidi'
|
39
|
+
autoload :Chromium, 'selenium/webdriver/chromium'
|
39
40
|
autoload :Chrome, 'selenium/webdriver/chrome'
|
40
41
|
autoload :DevTools, 'selenium/webdriver/devtools'
|
41
42
|
autoload :Edge, 'selenium/webdriver/edge'
|
@@ -48,7 +49,7 @@ module Selenium
|
|
48
49
|
# @api private
|
49
50
|
|
50
51
|
def self.root
|
51
|
-
@root ||= File.expand_path('..', __dir__)
|
52
|
+
@root ||= File.expand_path('..', __dir__.to_s)
|
52
53
|
end
|
53
54
|
|
54
55
|
#
|
@@ -94,8 +95,9 @@ module Selenium
|
|
94
95
|
# @return [Logger]
|
95
96
|
#
|
96
97
|
|
97
|
-
def self.logger
|
98
|
-
|
98
|
+
def self.logger(**opts)
|
99
|
+
level = $DEBUG || ENV.key?('DEBUG') ? :debug : :info
|
100
|
+
@logger ||= WebDriver::Logger.new('Selenium', default_level: level, **opts)
|
99
101
|
end
|
100
102
|
end # WebDriver
|
101
103
|
end # Selenium
|
data/selenium-webdriver.gemspec
CHANGED
@@ -1,8 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
root = File.expand_path(File.dirname(__FILE__))
|
4
|
-
raise "cwd must be #{root} when reading gemspec" if root != Dir.pwd
|
5
|
-
|
6
4
|
$LOAD_PATH.push(File.expand_path('lib', root))
|
7
5
|
require 'selenium/webdriver/version'
|
8
6
|
|
@@ -24,11 +22,15 @@ Gem::Specification.new do |s|
|
|
24
22
|
s.homepage = 'https://selenium.dev'
|
25
23
|
s.metadata = {
|
26
24
|
'changelog_uri' => 'https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES',
|
27
|
-
'
|
25
|
+
'documentation_uri' => 'https://www.selenium.dev/documentation/?tab=ruby',
|
26
|
+
'github_repo' => 'ssh://github.com/SeleniumHQ/selenium',
|
27
|
+
'source_code_uri' => 'https://github.com/SeleniumHQ/selenium/tree/trunk/rb',
|
28
|
+
'rubygems_mfa_required' => 'true',
|
29
|
+
'funding_uri' => 'https://github.com/sponsors/SeleniumHQ'
|
28
30
|
}
|
29
31
|
|
30
32
|
s.required_rubygems_version = Gem::Requirement.new('> 1.3.1') if s.respond_to? :required_rubygems_version=
|
31
|
-
s.required_ruby_version = Gem::Requirement.new('>=
|
33
|
+
s.required_ruby_version = Gem::Requirement.new('>= 3.1')
|
32
34
|
|
33
35
|
s.files = [
|
34
36
|
'CHANGES',
|
@@ -40,24 +42,28 @@ Gem::Specification.new do |s|
|
|
40
42
|
'lib/selenium-webdriver.rb',
|
41
43
|
'lib/selenium/server.rb',
|
42
44
|
'lib/selenium/webdriver.rb'
|
43
|
-
]
|
45
|
+
]
|
46
|
+
s.files += Dir['bin/**/*']
|
47
|
+
s.files += Dir['lib/selenium/webdriver/**/*']
|
44
48
|
|
49
|
+
s.bindir = 'bin'
|
45
50
|
s.require_paths = ['lib']
|
46
51
|
|
47
|
-
s.
|
48
|
-
s.
|
49
|
-
s.
|
52
|
+
s.add_dependency 'base64', ['~> 0.2']
|
53
|
+
s.add_dependency 'logger', ['~> 1.4']
|
54
|
+
s.add_dependency 'rexml', ['~> 3.2', '>= 3.2.5']
|
55
|
+
s.add_dependency 'rubyzip', ['>= 1.2.2', '< 3.0']
|
56
|
+
s.add_dependency 'websocket', ['~> 1.0']
|
50
57
|
|
51
|
-
|
52
|
-
s.add_development_dependency 'ffi'
|
53
|
-
s.add_development_dependency 'pry', ['~> 0.14']
|
58
|
+
s.add_development_dependency 'git', ['~> 1.19']
|
54
59
|
s.add_development_dependency 'rack', ['~> 2.0']
|
55
|
-
s.add_development_dependency 'rake'
|
60
|
+
s.add_development_dependency 'rake', ['~> 13.0']
|
56
61
|
s.add_development_dependency 'rspec', ['~> 3.0']
|
57
|
-
s.add_development_dependency 'rubocop', ['~> 1.
|
58
|
-
s.add_development_dependency 'rubocop-performance'
|
59
|
-
s.add_development_dependency 'rubocop-
|
62
|
+
s.add_development_dependency 'rubocop', ['~> 1.60', '>=1.60.2']
|
63
|
+
s.add_development_dependency 'rubocop-performance', ['~> 1.15']
|
64
|
+
s.add_development_dependency 'rubocop-rake', ['~> 0.6.0']
|
65
|
+
s.add_development_dependency 'rubocop-rspec', ['~> 2.16']
|
60
66
|
s.add_development_dependency 'webmock', ['~> 3.5']
|
61
67
|
s.add_development_dependency 'webrick', ['~> 1.7']
|
62
|
-
s.add_development_dependency 'yard', ['~> 0.9.11']
|
68
|
+
s.add_development_dependency 'yard', ['~> 0.9.11', '>= 0.9.36']
|
63
69
|
end
|