appium_lib_core 5.0.0.rc1 → 5.0.0.rc5

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: fc513ad9f9ba5689303763b09a884af18e1a9eb80e78a6e05cf838551905f732
4
- data.tar.gz: 59241d4d8626cf39eeb63a51291f18deca6759bdba95a8e2bb942173e0b5df9e
3
+ metadata.gz: 19a2c4c9f752e5f2e4287ce8b0d53bc428bafaa997b58c40bc0b796b878eadeb
4
+ data.tar.gz: 451e46bc56fa768879ab680520dff4ec137455ca020e1176f3022160d1a46009
5
5
  SHA512:
6
- metadata.gz: 867c6a7bfbdf95243fae3a6292f0349bf9bda1fbb83b44cb7d2e12e8f5e0ecb2f41fb6103aeebdcaaded1024cbb16cd2d758d73bef9bf00697325d75b5c2d027
7
- data.tar.gz: 345771f473fca33668d101f00be374ebb3b345b6795c5392b9955da73bb45588e5589b70ba8c983ce161e35c311b2f18adfd7bac3a8d816ba93863820b05b4f6
6
+ metadata.gz: e9e155e17e026514e12657489569b17b389d62cb9d7cd79e8a753e12b37571d4a9d3a3f28227b935b2d3d101747a7ce66d28ff7eb08f6c9cfb7c1c94ca7f3f03
7
+ data.tar.gz: 13e2620a48fe753b5647a0ffcb6bf370f54796aa3b87ca34522659c219474804dfa7843394307ad84b36dc377a10d2bd5bec782467354abb252e945c27cdd748
@@ -11,7 +11,7 @@ jobs:
11
11
  strategy:
12
12
  fail-fast: false
13
13
  matrix:
14
- ruby: [2.5, 2.6, 2.7, 3.0]
14
+ ruby: [2.6, 2.7, 3.0]
15
15
 
16
16
  runs-on: ubuntu-latest
17
17
 
@@ -37,8 +37,7 @@ jobs:
37
37
  strategy:
38
38
  fail-fast: false
39
39
  matrix:
40
- # Does not add 2.7 on Windows so far since a command fails only on Windows
41
- ruby: [2.5, 2.6]
40
+ ruby: [2.6, 2.7, 3.0]
42
41
 
43
42
  runs-on: windows-latest
44
43
 
data/CHANGELOG.md CHANGED
@@ -5,19 +5,32 @@ Read `release_notes.md` for commit level details.
5
5
  ## [Unreleased]
6
6
 
7
7
  ### Enhancements
8
- - Allow to override an existing method by `Appium::Core::Base::Driver#add_command` since Appium drivers/plugins allow to override them
9
8
 
10
9
  ### Bug fixes
11
10
 
12
11
  ### Deprecations
13
12
 
14
- ## [5.0.0.beta]
13
+ ## [5.0.0]
14
+
15
+ ### Enhancements
15
16
 
16
- - Update base selenium webdriver version to `4.0.0.beta2`
17
- - Support only W3C spec
18
- - Support Ruby 2.5+
17
+ - Update base selenium webdriver version to `4.0.0`
18
+ - Support only W3C spec as following Selenium v4 client
19
+ - Support Ruby 2.6+
20
+ - `element.id` returns the element id instead of `element.ref`. `element.ref` now returns an array.
21
+ - Removed `desired_capabilities` as capabilities for `Appium::Core#for`. Please use `capabilities` key name instead
22
+ - Removals that already had _duplication_ mark
23
+ - Removed `driver#screenshot`. Please use `driver#save_screenshot` instead
24
+ - Removed `driver#send_keys` to send keys to an active element. Please use `driver.action.send_keys('happy testing').perform` instead
25
+ - Removed `forceMjsonwp` to send only MJSONWP capabilities since Selenium cleint v4 no longer supports MJSONWP
26
+ - No longer set default `timeouts` as `0`. ruby_lib_core calls `/timeouts` endpoint only when `appium_lib: { wait: 5 }` is provided explicitly
19
27
  - Raises `::Appium::Core::Error::ArgumentError` instead of `ArgumentError` for this library specific argument errors
20
28
 
29
+ ## [4.7.1] - 2021-09-26
30
+
31
+ ### Enhancements
32
+ - Allow to override an existing method by `Appium::Core::Base::Driver#add_command` since Appium drivers/plugins allow to override them
33
+
21
34
  ## [4.7.0] - 2021-07-17
22
35
 
23
36
  ### Enhancements
data/README.md CHANGED
@@ -79,7 +79,7 @@ $ PARALLEL=1 bundle exec parallel_test test/functional/ios -n 2
79
79
 
80
80
  - Runs on CI environment (on Azure)
81
81
  - Non `IGNORE_VERSION_SKIP` or `IGNORE_VERSION_SKIP=true` runs all tests ignoring `skip` them by Appium versions
82
- - `IGNORE_VERSION_SKIP=false` skips the following tests if the Appium version is lower than the requirement
82
+ - `IGNORE_VERSION_SKIP=false` skips the following tests if the Appium version is lower than the requirement
83
83
 
84
84
  ```
85
85
  $ IGNORE_VERSION_SKIP=true CI=true bundle exec rake test:func:android
@@ -93,9 +93,9 @@ $ IGNORE_VERSION_SKIP=true CI=true bundle exec rake test:func:android
93
93
  ```ruby
94
94
  require 'rubygems'
95
95
  require 'appium_lib_core'
96
-
96
+
97
97
  opts = {
98
- desired_capabilities: { # or { caps: {....} }
98
+ capabilities: { # or { caps: {....} }
99
99
  platformName: :ios,
100
100
  platformVersion: '11.0',
101
101
  deviceName: 'iPhone Simulator',
@@ -108,7 +108,7 @@ $ IGNORE_VERSION_SKIP=true CI=true bundle exec rake test:func:android
108
108
  }
109
109
  @core = Appium::Core.for(opts) # create a core driver with `opts`
110
110
  @driver = @core.start_driver
111
-
111
+
112
112
  # Launch iPhone Simulator and `MyiOS.app`
113
113
  @driver.find_element(:accessibility_id, 'some accessibility') # find an element
114
114
  ```
@@ -116,7 +116,7 @@ $ IGNORE_VERSION_SKIP=true CI=true bundle exec rake test:func:android
116
116
  ```bash
117
117
  # shell 1
118
118
  $ appium --log-level warn:error # show only warning and error logs
119
-
119
+
120
120
  # shell 2
121
121
  $ ruby test.rb
122
122
  ```
@@ -4,7 +4,7 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
4
  require 'appium_lib_core/version'
5
5
 
6
6
  Gem::Specification.new do |spec|
7
- spec.required_ruby_version = '>= 2.5'
7
+ spec.required_ruby_version = '>= 2.6'
8
8
 
9
9
  spec.name = 'appium_lib_core'
10
10
  spec.version = Appium::Core::VERSION
@@ -22,7 +22,7 @@ Gem::Specification.new do |spec|
22
22
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
23
23
  spec.require_paths = ['lib']
24
24
 
25
- spec.add_runtime_dependency 'selenium-webdriver', '4.0.0.rc1'
25
+ spec.add_runtime_dependency 'selenium-webdriver', '~> 4.0.0'
26
26
  spec.add_runtime_dependency 'faye-websocket', '~> 0.11.0'
27
27
 
28
28
  spec.add_development_dependency 'bundler', '>= 1.14'
@@ -28,8 +28,7 @@ To handle it, we would recommend you to handle the error based on the error mess
28
28
 
29
29
  ```ruby
30
30
  error = assert_raises ::Selenium::WebDriver::Error::UnknownError do
31
- _, element_id = el.ref
32
- @driver.execute_script 'mobile: scrollToPage', { element: element_id, scrollToPage: -100 }
31
+ @driver.execute_script 'mobile: scrollToPage', { element: el.id, scrollToPage: -100 }
33
32
  end
34
33
  assert error.message.include? 'be a non-negative integer'
35
34
  ```
@@ -53,7 +53,7 @@ module Appium
53
53
  # Override
54
54
  # Creates session handling both OSS and W3C dialects.
55
55
  #
56
- # @param [::Selenium::WebDriver::Remote::Capabilities, Hash] desired_capabilities A capability
56
+ # @param [::Selenium::WebDriver::Remote::Capabilities, Hash] capabilities A capability
57
57
  # @return [::Selenium::WebDriver::Remote::Capabilities]
58
58
  #
59
59
  # @example
@@ -78,7 +78,7 @@ module Appium
78
78
  @available_commands = ::Appium::Core::Commands::COMMANDS.dup
79
79
 
80
80
  caps = add_appium_prefix(capabilities)
81
- response = execute(:new_session, {}, { capabilities: { firstMatch: [caps] } })
81
+ response = execute(:new_session, {}, { capabilities: { alwaysMatch: caps, firstMatch: [] } })
82
82
 
83
83
  @session_id = response['sessionId']
84
84
  raise ::Selenium::WebDriver::Error::WebDriverError, 'no sessionId in returned payload' unless @session_id
@@ -207,8 +207,7 @@ module Appium
207
207
  # For W3C
208
208
  # https://github.com/SeleniumHQ/selenium/commit/b618499adcc3a9f667590652c5757c0caa703289
209
209
  # execute_atom :isDisplayed, element
210
- _, element_id = element.ref
211
- execute :is_element_displayed, id: element_id
210
+ execute :is_element_displayed, id: element.id
212
211
  end
213
212
 
214
213
  # For Appium
@@ -216,8 +215,7 @@ module Appium
216
215
  def element_attribute(element, name)
217
216
  # For W3C in Selenium Client
218
217
  # execute_atom :getAttribute, element, name
219
- _, element_id = element.ref
220
- execute :get_element_attribute, id: element_id, name: name
218
+ execute :get_element_attribute, id: element.id, name: name
221
219
  end
222
220
 
223
221
  # For Appium
@@ -22,6 +22,13 @@ module Appium
22
22
  # @return [::Selenium::WebDriver::Remote::Capabilities] Return instance of Appium::Core::Base::Capabilities
23
23
  # inherited ::Selenium::WebDriver::Remote::Capabilities
24
24
  def self.create_capabilities(opts_caps = {})
25
+ # TODO: Move to 'Options' way instead of 'Capabilities'.
26
+ # Selenium 5 will have Options instead of 'Capabilities'.
27
+ # https://github.com/SeleniumHQ/selenium/blob/trunk/rb/lib/selenium/webdriver/common/options.rb
28
+ # Then, Ruby client also shoud move to the Options way.
29
+ # Appium's capabilities could change by depending on Appium versions. So it does not have
30
+ # standard options like chrome and firefox etc. So, the implementation should differ from
31
+ # other browsers. But here should inherit `Options` to follow Selenium.
25
32
  ::Selenium::WebDriver::Remote::Capabilities.new(opts_caps)
26
33
  end
27
34
  end
@@ -57,23 +57,7 @@ module Appium
57
57
  # @return [::Appium::Core::Base::Bridge]
58
58
  #
59
59
  def create_bridge(**opts)
60
- caps = opts.delete(:capabilities)
61
- # NOTE: This is deprecated
62
- cap_array = caps.is_a?(Hash) ? [caps] : Array(caps)
63
-
64
- desired_capabilities = opts.delete(:desired_capabilities)
65
- if desired_capabilities
66
- if desired_capabilities.is_a?(Hash)
67
- desired_capabilities = ::Selenium::WebDriver::Remote::Capabilities(desired_capabilities)
68
- end
69
- cap_array << desired_capabilities
70
- end
71
-
72
- options = opts.delete(:options)
73
- cap_array << options if options
74
-
75
- capabilities = generate_capabilities(cap_array)
76
-
60
+ capabilities = opts.delete(:capabilities)
77
61
  bridge_opts = { http_client: opts.delete(:http_client), url: opts.delete(:url) }
78
62
  raise ::Appium::Core::Error::ArgumentError, "Unable to create a driver with parameters: #{opts}" unless opts.empty?
79
63
 
@@ -175,8 +159,7 @@ module Appium
175
159
  # # ':session_id' in the given url is replaced with current 'session id'.
176
160
  # # ':id' in the given url is replaced with the given 'element_id'.
177
161
  # e = @driver.find_element :accessibility_id, 'an element'
178
- # _, element_id = e.ref
179
- # @driver.test_action_command(element_id, 'action')
162
+ # @driver.test_action_command(e.id, 'action')
180
163
  #
181
164
  def add_command(method:, url:, name:, &block)
182
165
  unless AVAILABLE_METHODS.include? method
@@ -255,22 +238,6 @@ module Appium
255
238
  end
256
239
  alias is_keyboard_shown keyboard_shown?
257
240
 
258
- # [DEPRECATION]
259
- # Send keys for a current active element
260
- # @param [String] key Input text
261
- #
262
- # @example
263
- #
264
- # @driver.send_keys 'happy testing!'
265
- #
266
- def send_keys(*key)
267
- ::Appium::Logger.warn(
268
- '[DEPRECATION] Driver#send_keys is deprecated in W3C spec. Use driver.action.<command>.perform instead'
269
- )
270
- @bridge.send_keys_to_active_element(key)
271
- end
272
- alias type send_keys
273
-
274
241
  # Returns an instance of DriverSettings to call get/update.
275
242
  #
276
243
  # @example
@@ -82,12 +82,11 @@ module Appium
82
82
  # @@driver.element_screenshot_as element, :base64 #=> "iVBORw0KGgoAAAANSUhEUgAABDgAAAB+CAIAAABOPDa6AAAAAX"
83
83
  #
84
84
  def element_screenshot_as(element, format)
85
- _, element_id = element.ref
86
85
  case format
87
86
  when :base64
88
- bridge.element_screenshot element_id
87
+ bridge.element_screenshot element.id
89
88
  when :png
90
- bridge.element_screenshot(element_id).unpack('m')[0]
89
+ bridge.element_screenshot(element.id).unpack('m')[0]
91
90
  else
92
91
  raise Core::Error::UnsupportedOperationError, "unsupported format: #{format.inspect}"
93
92
  end
@@ -195,10 +195,7 @@ module Appium
195
195
  end
196
196
 
197
197
  def args_with_ele_ref(args)
198
- if args.key? :element
199
- _, element_id = args[:element].ref
200
- args[:element] = element_id
201
- end
198
+ args[:element] = args[:element].id if args.key? :element
202
199
  args
203
200
  end
204
201
  end # class TouchAction
@@ -40,7 +40,7 @@ module Appium
40
40
 
41
41
  def initialize(appium_lib_opts)
42
42
  @custom_url = appium_lib_opts.fetch :server_url, nil
43
- @default_wait = appium_lib_opts.fetch :wait, Driver::DEFAULT_IMPLICIT_WAIT
43
+ @default_wait = appium_lib_opts.fetch :wait, nil
44
44
  @enable_idempotency_header = appium_lib_opts.fetch :enable_idempotency_header, true
45
45
 
46
46
  # bump current session id into a particular file
@@ -135,11 +135,9 @@ module Appium
135
135
  attr_reader :export_session_path
136
136
 
137
137
  # Default wait time for elements to appear in Appium server side.
138
- # Defaults to {::Appium::Core::Driver::DEFAULT_IMPLICIT_WAIT}.<br>
139
138
  # Provide <code>{ appium_lib: { wait: 30 } }</code> to {::Appium::Core.for}
140
139
  # @return [Integer]
141
140
  attr_reader :default_wait
142
- DEFAULT_IMPLICIT_WAIT = 0
143
141
 
144
142
  # Appium's server port. 4723 is by default. Defaults to {::Appium::Core::Driver::DEFAULT_APPIUM_PORT}.<br>
145
143
  # Provide <code>{ appium_lib: { port: 8080 } }</code> to {::Appium::Core.for}.
@@ -187,8 +185,6 @@ module Appium
187
185
  # @option opts [Hash] :caps Appium capabilities.
188
186
  # @option opts [Hash] :capabilities The same as :caps.
189
187
  # This param is for compatibility with Selenium WebDriver format
190
- # @option opts [Hash] :desired_capabilities The same as :caps.
191
- # This param is for compatibility with Selenium WebDriver format
192
188
  # @option opts [Appium::Core::Options] :appium_lib Capabilities affect only ruby client
193
189
  # @option opts [String] :url The same as :custom_url in :appium_lib.
194
190
  # This param is for compatibility with Selenium WebDriver format
@@ -199,10 +195,8 @@ module Appium
199
195
  #
200
196
  # # format 1
201
197
  # @core = Appium::Core.for caps: {...}, appium_lib: {...}
202
- # # format 2. 'capabilities:' or 'desired_capabilities:' is also available instead of 'caps:'.
198
+ # # format 2. 'capabilities:' is also available instead of 'caps:'.
203
199
  # @core = Appium::Core.for url: "http://127.0.0.1:8080/wd/hub", capabilities: {...}, appium_lib: {...}
204
- # # format 3. 'appium_lib: {...}' can be blank
205
- # @core = Appium::Core.for url: "http://127.0.0.1:8080/wd/hub", desired_capabilities: {...}
206
200
  #
207
201
  #
208
202
  # require 'rubygems'
@@ -230,7 +224,7 @@ module Appium
230
224
  # @core.start_driver # Connect to 'http://127.0.0.1:8080/wd/hub' because of 'port: 8080'
231
225
  #
232
226
  # # Start iOS driver with .zip file over HTTP
233
- # # 'desired_capabilities:' or 'capabilities:' is also available instead of 'caps:'. Either is fine.
227
+ # # 'capabilities:' is also available instead of 'caps:'. Either is fine.
234
228
  # opts = {
235
229
  # capabilities: {
236
230
  # platformName: :ios,
@@ -254,7 +248,7 @@ module Appium
254
248
  # # Start iOS driver as another format. 'url' is available like below
255
249
  # opts = {
256
250
  # url: "http://custom-host:8080/wd/hub.com",
257
- # desired_capabilities: {
251
+ # capabilities: {
258
252
  # platformName: :ios,
259
253
  # platformVersion: '11.0',
260
254
  # deviceName: 'iPhone Simulator',
@@ -368,8 +362,8 @@ module Appium
368
362
 
369
363
  begin
370
364
  @driver = ::Appium::Core::Base::Driver.new(listener: @listener,
371
- http_client: @http_client,
372
- desired_capabilities: @caps,
365
+ http_client: @http_client,
366
+ capabilities: @caps, # ::Selenium::WebDriver::Remote::Capabilities
373
367
  url: @custom_url)
374
368
 
375
369
  if @direct_connect
@@ -411,6 +405,8 @@ module Appium
411
405
 
412
406
  # Ignore setting default wait if the target driver has no implementation
413
407
  def set_implicit_wait_by_default(wait)
408
+ return if @default_wait.nil?
409
+
414
410
  @driver.manage.timeouts.implicit_wait = wait
415
411
  rescue ::Selenium::WebDriver::Error::UnknownError => e
416
412
  unless e.message.include?('The operation requested is not yet implemented')
@@ -480,21 +476,6 @@ module Appium
480
476
  p_version.split('.').map(&:to_i)
481
477
  end
482
478
 
483
- # Takes a png screenshot and saves to the target path.
484
- #
485
- # @param png_save_path [String] the full path to save the png
486
- # @return [File]
487
- #
488
- # @example
489
- #
490
- # @core.screenshot '/tmp/hi.png' #=> nil
491
- # # same as '@driver.save_screenshot png_save_path'
492
- #
493
- def screenshot(png_save_path)
494
- ::Appium::Logger.warn '[DEPRECATION] screenshot will be removed. Please use driver.save_screenshot instead.'
495
- @driver.save_screenshot png_save_path
496
- end
497
-
498
479
  private
499
480
 
500
481
  # @private
@@ -567,10 +548,7 @@ module Appium
567
548
  def validate_keys(opts)
568
549
  flatten_ops = flatten_hash_keys(opts)
569
550
 
570
- # FIXME: Remove 'desired_capabilities' in the next major Selenium update
571
- unless opts.member?(:caps) || opts.member?(:capabilities) || opts.member?(:desired_capabilities)
572
- raise Error::NoCapabilityError
573
- end
551
+ raise Error::NoCapabilityError unless opts.member?(:caps) || opts.member?(:capabilities)
574
552
 
575
553
  if !opts.member?(:appium_lib) && flatten_ops.member?(:appium_lib)
576
554
  raise Error::CapabilityStructureError, 'Please check the value of appium_lib in the capability'
@@ -591,8 +569,7 @@ module Appium
591
569
 
592
570
  # @private
593
571
  def get_caps(opts)
594
- # FIXME: Remove 'desired_capabilities' in the next major Selenium update
595
- Core::Base::Capabilities.create_capabilities(opts[:caps] || opts[:capabilities] || opts[:desired_capabilities] || {})
572
+ Core::Base::Capabilities.create_capabilities(opts[:caps] || opts[:capabilities] || {})
596
573
  end
597
574
 
598
575
  # @private
@@ -20,6 +20,15 @@ module Appium
20
20
  include ::Appium::Core::Base::SearchContext
21
21
  include ::Appium::Core::Base::TakesScreenshot
22
22
 
23
+ # Retuns the element id.
24
+ #
25
+ # @return [String]
26
+ # @example
27
+ # e = @driver.find_element :accessibility_id, 'something'
28
+ # e.id
29
+ #
30
+ attr_reader :id
31
+
23
32
  # Returns the value of attributes like below. Read each platform to know more details.
24
33
  #
25
34
  # uiautomator2: https://github.com/appium/appium-uiautomator2-server/blob/203cc7e57ce477f3cff5d95b135d1b3450a6033a/app/src/main/java/io/appium/uiautomator2/utils/Attribute.java#L19
@@ -14,7 +14,7 @@
14
14
 
15
15
  module Appium
16
16
  module Core
17
- VERSION = '5.0.0.rc1' unless defined? ::Appium::Core::VERSION
18
- DATE = '2021-09-09' unless defined? ::Appium::Core::DATE
17
+ VERSION = '5.0.0.rc5' unless defined? ::Appium::Core::VERSION
18
+ DATE = '2021-10-15' unless defined? ::Appium::Core::DATE
19
19
  end
20
20
  end
data/release_notes.md CHANGED
@@ -1,3 +1,13 @@
1
+ #### v4.7.1 2021-09-26
2
+
3
+ - [cdd8906](https://github.com/appium/ruby_lib_core/commit/cdd890662585aa5051912d20d90ec3c3866ad8b1) Release 4.7.1
4
+ - [059b092](https://github.com/appium/ruby_lib_core/commit/059b0920becd60d691b0b4fac05cc0d96bcc59c7) ci: tweak brew install
5
+ - [fb32697](https://github.com/appium/ruby_lib_core/commit/fb32697d5ee7cf4ea4367aa9f9bf4458723d6fce) feat: allow to override an existing method by add_command (#330)
6
+ - [cbf7f1f](https://github.com/appium/ruby_lib_core/commit/cbf7f1fc2ce6bb8833e2a7324446d79cbc848834) chore(deps-dev): update webmock requirement from ~> 3.13.0 to ~> 3.14.0 (#329)
7
+ - [beefb17](https://github.com/appium/ruby_lib_core/commit/beefb179ac25e9337bf2badaf4eb0c4cfc5b1e45) chore(deps-dev): update rubocop requirement from = 1.12.0 to = 1.12.1 (#322)
8
+ - [3438b48](https://github.com/appium/ruby_lib_core/commit/3438b481523ec978d06bc243cd42eee8dc00356f) docs: tweak docstring
9
+
10
+
1
11
  #### v4.7.0 2021-07-17
2
12
 
3
13
  - [0059974](https://github.com/appium/ruby_lib_core/commit/0059974b0b1d79a822db84d8b0169e8393e00ef9) Release 4.7.0
metadata CHANGED
@@ -1,29 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: appium_lib_core
3
3
  version: !ruby/object:Gem::Version
4
- version: 5.0.0.rc1
4
+ version: 5.0.0.rc5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kazuaki MATSUO
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-09-09 00:00:00.000000000 Z
11
+ date: 2021-10-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: selenium-webdriver
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - '='
17
+ - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: 4.0.0.rc1
19
+ version: 4.0.0
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - '='
24
+ - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: 4.0.0.rc1
26
+ version: 4.0.0
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: faye-websocket
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -333,7 +333,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
333
333
  requirements:
334
334
  - - ">="
335
335
  - !ruby/object:Gem::Version
336
- version: '2.5'
336
+ version: '2.6'
337
337
  required_rubygems_version: !ruby/object:Gem::Requirement
338
338
  requirements:
339
339
  - - ">"