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
|