appium_lib_core 5.0.0.beta4 → 5.0.0.rc1

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: 6bc30b79d80c1606288087e36a6ed024c3be91ffbc6c5b8b04c9c9c1537d1d9e
4
- data.tar.gz: 06b4f5cdbadb770ce7ce4eecd3fcdaf78c002c13982b6a0573e30a0c3aee9d02
3
+ metadata.gz: fc513ad9f9ba5689303763b09a884af18e1a9eb80e78a6e05cf838551905f732
4
+ data.tar.gz: 59241d4d8626cf39eeb63a51291f18deca6759bdba95a8e2bb942173e0b5df9e
5
5
  SHA512:
6
- metadata.gz: c68d806651e436131ebd91c9f9b520a8de1a95ad82ee67988c7f475b6ce2c016b50fa15e1ee4f0813f55d59e5237bea34c209096436807ba7f8eb2ac9afbb123
7
- data.tar.gz: 3982388d81e2d3d59b51cde803e5e83521772700fc8a82d0733ba650c25b2f46578bb9490113a8792a5b5e24d22488110ff3a6e727cb8d22a210c6bf4fb8632e
6
+ metadata.gz: 867c6a7bfbdf95243fae3a6292f0349bf9bda1fbb83b44cb7d2e12e8f5e0ecb2f41fb6103aeebdcaaded1024cbb16cd2d758d73bef9bf00697325d75b5c2d027
7
+ data.tar.gz: 345771f473fca33668d101f00be374ebb3b345b6795c5392b9955da73bb45588e5589b70ba8c983ce161e35c311b2f18adfd7bac3a8d816ba93863820b05b4f6
data/CHANGELOG.md CHANGED
@@ -5,6 +5,7 @@ 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
8
9
 
9
10
  ### Bug fixes
10
11
 
@@ -17,6 +18,11 @@ Read `release_notes.md` for commit level details.
17
18
  - Support Ruby 2.5+
18
19
  - Raises `::Appium::Core::Error::ArgumentError` instead of `ArgumentError` for this library specific argument errors
19
20
 
21
+ ## [4.7.0] - 2021-07-17
22
+
23
+ ### Enhancements
24
+ - Add `satellites` option in `Appium::Core::Base::Driver#set_location`
25
+
20
26
  ## [4.6.0] - 2021-06-03
21
27
 
22
28
  ### Enhancements
@@ -25,7 +31,7 @@ Read `release_notes.md` for commit level details.
25
31
  ## [4.5.0] - 2021-03-14
26
32
 
27
33
  ### Enhancements
28
- - Add `speed` argument for `Appium::Core::Base::Driver#set_location` since Appium 1.21.0
34
+ - Add `speed` argument for `Appium::Core::Base::Driver#set_location` since Appium 1.21.0
29
35
  - Add `multiple` and `match_neighbour_threshold` arguments for `Appium::Core::Base::Driver#find_image_occurrence`
30
36
 
31
37
  ## [4.4.1(4.4.0)] - 2021-02-15(2021-02-13)
data/Rakefile CHANGED
@@ -38,6 +38,7 @@ namespace :test do
38
38
  namespace :unit do
39
39
  desc('Run all iOS related unit tests in test directory')
40
40
  Rake::TestTask.new(:ios) do |t|
41
+ ENV['UNIT_TEST'] = '1'
41
42
  t.libs << 'test'
42
43
  t.libs << 'lib'
43
44
  t.test_files = FileList['test/unit/ios/**/*_test.rb']
@@ -45,6 +46,7 @@ namespace :test do
45
46
 
46
47
  desc('Run all Android related unit tests in test directory')
47
48
  Rake::TestTask.new(:android) do |t|
49
+ ENV['UNIT_TEST'] = '1'
48
50
  t.libs << 'test'
49
51
  t.libs << 'lib'
50
52
  t.test_files = FileList['test/unit/android/**/*_test.rb']
@@ -52,6 +54,7 @@ namespace :test do
52
54
 
53
55
  desc('Run all common related unit tests in test directory')
54
56
  Rake::TestTask.new(:common) do |t|
57
+ ENV['UNIT_TEST'] = '1'
55
58
  t.libs << 'test'
56
59
  t.libs << 'lib'
57
60
  t.test_files = FileList['test/unit/common/**/*_test.rb']
@@ -59,6 +62,7 @@ namespace :test do
59
62
 
60
63
  desc('Run all Windows related unit tests in test directory')
61
64
  Rake::TestTask.new(:windows) do |t|
65
+ ENV['UNIT_TEST'] = '1'
62
66
  t.libs << 'test'
63
67
  t.libs << 'lib'
64
68
  t.test_files = FileList['test/unit/windows/**/*_test.rb']
@@ -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.beta4'
25
+ spec.add_runtime_dependency 'selenium-webdriver', '4.0.0.rc1'
26
26
  spec.add_runtime_dependency 'faye-websocket', '~> 0.11.0'
27
27
 
28
28
  spec.add_development_dependency 'bundler', '>= 1.14'
@@ -30,8 +30,8 @@ Gem::Specification.new do |spec|
30
30
  spec.add_development_dependency 'yard', '~> 0.9.11'
31
31
  spec.add_development_dependency 'minitest', '~> 5.0'
32
32
  spec.add_development_dependency 'minitest-reporters', '~> 1.1'
33
- spec.add_development_dependency 'webmock', '~> 3.13.0'
34
- spec.add_development_dependency 'rubocop', '1.12.0'
33
+ spec.add_development_dependency 'webmock', '~> 3.14.0'
34
+ spec.add_development_dependency 'rubocop', '1.12.1'
35
35
  spec.add_development_dependency 'appium_thor', '~> 1.0'
36
36
  spec.add_development_dependency 'pry'
37
37
  spec.add_development_dependency 'pry-byebug'
@@ -103,7 +103,7 @@ jobs:
103
103
  - template: ./functional/ios_setup.yml
104
104
  parameters:
105
105
  xcodeVersion: ${{ parameters.xcodeForIOS }}
106
- - script: brew install ffmpeg && brew tap wix/brew && brew install wix/brew/applesimutils
106
+ - script: brew install ffmpeg && brew tap wix/brew && brew install applesimutils
107
107
  displayName: Install ffmpeg and applesimutils
108
108
  - template: ./functional/run_appium.yml
109
109
  - script: bundle exec rake test:func:ios TESTS=test/functional/ios/ios/mjpeg_server_test.rb,test/functional/ios/ios/mobile_commands_test.rb
@@ -9,7 +9,7 @@ We can invoke them via `execute_script` command with `mobile:` arguments.
9
9
  - https://github.com/appium/appium/blob/master/docs/en/writing-running-appium/android
10
10
  - iOS:
11
11
  - https://github.com/appium/appium/tree/master/docs/en/writing-running-appium/ios
12
-
12
+
13
13
 
14
14
  ```ruby
15
15
  # Android shell : https://github.com/appium/appium/blob/master/docs/en/writing-running-appium/android/android-shell.md
@@ -28,7 +28,8 @@ 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
- @driver.execute_script 'mobile: scrollToPage', { element: el.ref, scrollToPage: -100 }
31
+ _, element_id = el.ref
32
+ @driver.execute_script 'mobile: scrollToPage', { element: element_id, scrollToPage: -100 }
32
33
  end
33
34
  assert error.message.include? 'be a non-negative integer'
34
35
  ```
@@ -133,7 +133,7 @@ module Appium
133
133
 
134
134
  # command for Appium 2.0.
135
135
  def add_command(method:, url:, name:, &block)
136
- raise ::Appium::Core::Error::ArgumentError, "#{name} is already defined" if @available_commands.key? name
136
+ ::Appium::Logger.info "Overriding the method '#{name}' for '#{url}'" if @available_commands.key? name
137
137
 
138
138
  @available_commands[name] = [method, url]
139
139
 
@@ -207,7 +207,8 @@ module Appium
207
207
  # For W3C
208
208
  # https://github.com/SeleniumHQ/selenium/commit/b618499adcc3a9f667590652c5757c0caa703289
209
209
  # execute_atom :isDisplayed, element
210
- execute :is_element_displayed, id: element.ref
210
+ _, element_id = element.ref
211
+ execute :is_element_displayed, id: element_id
211
212
  end
212
213
 
213
214
  # For Appium
@@ -215,7 +216,8 @@ module Appium
215
216
  def element_attribute(element, name)
216
217
  # For W3C in Selenium Client
217
218
  # execute_atom :getAttribute, element, name
218
- execute :get_element_attribute, id: element.ref, name: name
219
+ _, element_id = element.ref
220
+ execute :get_element_attribute, id: element_id, name: name
219
221
  end
220
222
 
221
223
  # For Appium
@@ -227,26 +229,39 @@ module Appium
227
229
 
228
230
  # For Appium
229
231
  # override
230
- def find_element_by(how, what, parent = nil)
232
+ def find_element_by(how, what, parent_ref = [])
231
233
  how, what = convert_locator(how, what)
232
234
 
233
- id = if parent
234
- execute :find_child_element, { id: parent }, { using: how, value: what }
235
+ return execute_atom(:findElements, Support::RelativeLocator.new(what).as_json).first if how == 'relative'
236
+
237
+ parent_type, parent_id = parent_ref
238
+ id = case parent_type
239
+ when :element
240
+ execute :find_child_element, { id: parent_id }, { using: how, value: what.to_s }
241
+ when :shadow_root
242
+ execute :find_shadow_child_element, { id: parent_id }, { using: how, value: what.to_s }
235
243
  else
236
- execute :find_element, {}, { using: how, value: what }
244
+ execute :find_element, {}, { using: how, value: what.to_s }
237
245
  end
246
+
238
247
  ::Appium::Core::Element.new self, element_id_from(id)
239
248
  end
240
249
 
241
250
  # For Appium
242
251
  # override
243
- def find_elements_by(how, what, parent = nil)
252
+ def find_elements_by(how, what, parent_ref = [])
244
253
  how, what = convert_locator(how, what)
245
254
 
246
- ids = if parent
247
- execute :find_child_elements, { id: parent }, { using: how, value: what }
255
+ return execute_atom :findElements, Support::RelativeLocator.new(what).as_json if how == 'relative'
256
+
257
+ parent_type, parent_id = parent_ref
258
+ ids = case parent_type
259
+ when :element
260
+ execute :find_child_elements, { id: parent_id }, { using: how, value: what.to_s }
261
+ when :shadow_root
262
+ execute :find_shadow_child_elements, { id: parent_id }, { using: how, value: what.to_s }
248
263
  else
249
- execute :find_elements, {}, { using: how, value: what }
264
+ execute :find_elements, {}, { using: how, value: what.to_s }
250
265
  end
251
266
 
252
267
  ids.map { |id| ::Appium::Core::Element.new self, element_id_from(id) }
@@ -283,9 +298,10 @@ module Appium
283
298
 
284
299
  # For Appium
285
300
  # No implementation for W3C webdriver module
286
- def set_location(lat, lon, alt = 0.0, speed: nil)
301
+ def set_location(lat, lon, alt = 0.0, speed: nil, satellites: nil)
287
302
  loc = { latitude: lat, longitude: lon, altitude: alt }
288
303
  loc[:speed] = speed unless speed.nil?
304
+ loc[:satellites] = satellites unless satellites.nil?
289
305
  execute :set_location, {}, { location: loc }
290
306
  end
291
307
 
@@ -326,12 +342,12 @@ module Appium
326
342
  execute :get_log_events, {}, args
327
343
  end
328
344
 
329
- def take_viewport_screenshot
345
+ def viewport_screenshot
330
346
  execute_script('mobile: viewportScreenshot')
331
347
  end
332
348
 
333
- def take_element_screenshot(element)
334
- execute :take_element_screenshot, id: element.ref
349
+ def element_screenshot(element_id)
350
+ execute :take_element_screenshot, id: element_id
335
351
  end
336
352
 
337
353
  private
@@ -57,8 +57,6 @@ module Appium
57
57
  # @return [::Appium::Core::Base::Bridge]
58
58
  #
59
59
  def create_bridge(**opts)
60
- # TODO: probably Appium does not need this.
61
- opts[:url] ||= service_url(opts)
62
60
  caps = opts.delete(:capabilities)
63
61
  # NOTE: This is deprecated
64
62
  cap_array = caps.is_a?(Hash) ? [caps] : Array(caps)
@@ -125,8 +123,17 @@ module Appium
125
123
  # Other place holders can be specified with +:+ prefix like +:id+.
126
124
  # Then, the +:id+ will be replaced with a given value as the seconds argument of +execute+
127
125
  # @param [Symbol] name The name of method that is called as the driver instance method.
128
- # @param [Proc] block The block to involve as the method
129
- # @raise [ArgumentError] If the given +name+ is already defined or +method+ are invalid value.
126
+ # @param [Proc] block The block to involve as the method.
127
+ # Please define a method that has the same +name+ with arguments you want.
128
+ # The method must has +execute+ method. tHe +execute+ is calls the +url+
129
+ # with the given parameters.
130
+ # The first argument should be +name+ as symbol.
131
+ # The second argument should be hash. If keys in the hash matches +:+ prefix
132
+ # string in the given url, the matched string in the given url will be
133
+ # values in the hash.
134
+ # The third argument should be hash. The hash will be the request body.
135
+ # Please read examples below for more details.
136
+ # @raise [ArgumentError] If the given +method+ is invalid value.
130
137
  #
131
138
  # @example
132
139
  #
@@ -153,6 +160,7 @@ module Appium
153
160
  # # ':session_id' in the given 'url' is replaced with current 'session id'.
154
161
  # @driver.test_command(1)
155
162
  #
163
+ #
156
164
  # @driver.add_command(
157
165
  # method: :post,
158
166
  # url: 'session/:session_id/element/:id/custom/action',
@@ -167,7 +175,8 @@ module Appium
167
175
  # # ':session_id' in the given url is replaced with current 'session id'.
168
176
  # # ':id' in the given url is replaced with the given 'element_id'.
169
177
  # e = @driver.find_element :accessibility_id, 'an element'
170
- # @driver.test_action_command(e.ref, 'action')
178
+ # _, element_id = e.ref
179
+ # @driver.test_action_command(element_id, 'action')
171
180
  #
172
181
  def add_command(method:, url:, name:, &block)
173
182
  unless AVAILABLE_METHODS.include? method
@@ -434,30 +443,6 @@ module Appium
434
443
  end
435
444
  alias set_context context=
436
445
 
437
- # Set the value to element directly
438
- #
439
- # @example
440
- #
441
- # @driver.set_immediate_value element, 'hello'
442
- #
443
- def set_immediate_value(element, *value)
444
- ::Appium::Logger.warn '[DEPRECATION] driver#set_immediate_value(element, *value) is deprecated. ' \
445
- 'Use Element#immediate_value(*value) instead'
446
- @bridge.set_immediate_value(element, *value)
447
- end
448
-
449
- # Replace the value to element directly
450
- #
451
- # @example
452
- #
453
- # @driver.replace_value element, 'hello'
454
- #
455
- def replace_value(element, *value)
456
- ::Appium::Logger.warn '[DEPRECATION] driver#replace_value(element, *value) is deprecated. ' \
457
- 'Use Element#replace_value(*value) instead'
458
- @bridge.replace_value(element, *value)
459
- end
460
-
461
446
  # Place a file in a specific location on the device.
462
447
  # On iOS, the server should have ifuse libraries installed and configured properly for this feature to work on
463
448
  # real devices.
@@ -52,19 +52,26 @@ module Appium
52
52
  # @param [String, Number] latitude Set the latitude.
53
53
  # @param [String, Number] longitude Set the longitude.
54
54
  # @param [String, Number] altitude Set the altitude.
55
- # @param [String, Number] speed Set the speed to apply the location on Android real devices @since Appium 1.21.0.
55
+ # @param [String, Number] speed Set the speed to apply the location on Android real devices
56
+ # in meters/second @since Appium 1.21.0 and in knots for emulators @since Appium 1.22.0.
57
+ # @param [String, Number] satellites Sets the count of geo satellites being tracked in range 1..12 @since Appium 1.22.0.
58
+ # This number is respected on Emulators.
56
59
  # @param [::Selenium::WebDriver::Location]
57
60
  #
58
61
  # @example
59
62
  #
60
63
  # driver.location = ::Selenium::WebDriver::Location.new(10, 10, 10)
61
64
  #
62
- def set_location(latitude, longitude, altitude, speed: nil)
63
- if speed.nil?
65
+ def set_location(latitude, longitude, altitude, speed: nil, satellites: nil)
66
+ if speed.nil? && satellites.nil?
64
67
  self.location = ::Selenium::WebDriver::Location.new(Float(latitude), Float(longitude), Float(altitude))
65
68
  else
66
69
  loc = ::Selenium::WebDriver::Location.new(Float(latitude), Float(longitude), Float(altitude))
67
- @bridge.set_location loc.latitude, loc.longitude, loc.altitude, speed: Float(speed)
70
+
71
+ speed = Float(speed) unless speed.nil?
72
+ satellites = Integer(satellites) unless satellites.nil?
73
+
74
+ @bridge.set_location loc.latitude, loc.longitude, loc.altitude, speed: speed, satellites: satellites
68
75
  end
69
76
  end
70
77
  end
@@ -82,11 +82,12 @@ 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
85
86
  case format
86
87
  when :base64
87
- bridge.take_element_screenshot(element)
88
+ bridge.element_screenshot element_id
88
89
  when :png
89
- bridge.take_element_screenshot(element).unpack('m')[0]
90
+ bridge.element_screenshot(element_id).unpack('m')[0]
90
91
  else
91
92
  raise Core::Error::UnsupportedOperationError, "unsupported format: #{format.inspect}"
92
93
  end
@@ -106,7 +107,7 @@ module Appium
106
107
  ::Appium::Logger.warn 'name used for saved screenshot does not match file type. '\
107
108
  'It should end with .png extension'
108
109
  end
109
- viewport_screenshot_encode64 = bridge.take_viewport_screenshot
110
+ viewport_screenshot_encode64 = bridge.viewport_screenshot
110
111
  File.open(png_path, 'wb') { |f| f << viewport_screenshot_encode64.unpack('m')[0] }
111
112
  end
112
113
  end
@@ -17,12 +17,12 @@ module Appium
17
17
  class Base
18
18
  module Device
19
19
  module Value
20
- def set_immediate_value(element, *value)
21
- execute :set_immediate_value, { id: element.ref }, generate_value_and_text(value)
20
+ def set_immediate_value(element_id, *value)
21
+ execute :set_immediate_value, { id: element_id }, generate_value_and_text(value)
22
22
  end
23
23
 
24
- def replace_value(element, *value)
25
- execute :replace_value, { id: element.ref }, generate_value_and_text(value)
24
+ def replace_value(element_id, *value)
25
+ execute :replace_value, { id: element_id }, generate_value_and_text(value)
26
26
  end
27
27
 
28
28
  private
@@ -195,7 +195,10 @@ module Appium
195
195
  end
196
196
 
197
197
  def args_with_ele_ref(args)
198
- args[:element] = args[:element].ref if args.key? :element
198
+ if args.key? :element
199
+ _, element_id = args[:element].ref
200
+ args[:element] = element_id
201
+ end
199
202
  args
200
203
  end
201
204
  end # class TouchAction
@@ -59,20 +59,20 @@ module Appium
59
59
  #
60
60
  # @example
61
61
  #
62
- # @driver.immediate_value 'hello'
62
+ # element.immediate_value 'hello'
63
63
  #
64
64
  def immediate_value(*value)
65
- @bridge.set_immediate_value(self, *value)
65
+ @bridge.set_immediate_value @id, *value
66
66
  end
67
67
 
68
68
  # Replace the value to element directly
69
69
  #
70
70
  # @example
71
71
  #
72
- # @driver.replace_value 'hello'
72
+ # element.replace_value 'hello'
73
73
  #
74
74
  def replace_value(*value)
75
- @bridge.replace_value(self, *value)
75
+ @bridge.replace_value @id, *value
76
76
  end
77
77
 
78
78
  # For use with location_rel.
@@ -108,7 +108,7 @@ module Appium
108
108
  # element.screenshot #=> "iVBORw0KGgoAAAANSUhEUgAABDgAAAB+CAIAAABOPDa6AAAAAX"
109
109
  #
110
110
  def screenshot
111
- bridge.take_element_screenshot(self)
111
+ bridge.element_screenshot @id
112
112
  end
113
113
 
114
114
  # Return an element screenshot in the given format
@@ -123,9 +123,9 @@ module Appium
123
123
  def screenshot_as(format)
124
124
  case format
125
125
  when :base64
126
- bridge.take_element_screenshot(self)
126
+ bridge.element_screenshot @id
127
127
  when :png
128
- bridge.take_element_screenshot(self).unpack('m')[0]
128
+ bridge.element_screenshot(@id).unpack('m')[0]
129
129
  else
130
130
  raise Core::Error::UnsupportedOperationError, "unsupported format: #{format.inspect}"
131
131
  end
@@ -14,7 +14,7 @@
14
14
 
15
15
  module Appium
16
16
  module Core
17
- VERSION = '5.0.0.beta4' unless defined? ::Appium::Core::VERSION
18
- DATE = '2021-06-11' unless defined? ::Appium::Core::DATE
17
+ VERSION = '5.0.0.rc1' unless defined? ::Appium::Core::VERSION
18
+ DATE = '2021-09-09' unless defined? ::Appium::Core::DATE
19
19
  end
20
20
  end
data/release_notes.md CHANGED
@@ -1,3 +1,12 @@
1
+ #### v4.7.0 2021-07-17
2
+
3
+ - [0059974](https://github.com/appium/ruby_lib_core/commit/0059974b0b1d79a822db84d8b0169e8393e00ef9) Release 4.7.0
4
+ - [0f93a52](https://github.com/appium/ruby_lib_core/commit/0f93a52bbdc44bf916c9b974fe9fd09d48e5ff39) test: add more example and test (#328)
5
+ - [9e37b3b](https://github.com/appium/ruby_lib_core/commit/9e37b3bc15f72f7c0117a49945a3fe482598f374) feat: add satellites for Android emulators (#327)
6
+ - [3063a73](https://github.com/appium/ruby_lib_core/commit/3063a73fa291dc378daa53b7df2e4b0b8a6f03d2) ci: calls quit_driver to ensure close the previous session
7
+ - [43fb9e7](https://github.com/appium/ruby_lib_core/commit/43fb9e77f5492a92f4f8c5a5bda71be9c3a9e2c8) chore: tweak naming in an internal variable
8
+
9
+
1
10
  #### v4.6.0 2021-06-03
2
11
 
3
12
  - [0dacfab](https://github.com/appium/ruby_lib_core/commit/0dacfab1256e1447e1f7a5974dfcf48ee0a72b9d) Release 4.6.0
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: appium_lib_core
3
3
  version: !ruby/object:Gem::Version
4
- version: 5.0.0.beta4
4
+ version: 5.0.0.rc1
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-06-12 00:00:00.000000000 Z
11
+ date: 2021-09-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: selenium-webdriver
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - '='
18
18
  - !ruby/object:Gem::Version
19
- version: 4.0.0.beta4
19
+ version: 4.0.0.rc1
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.beta4
26
+ version: 4.0.0.rc1
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: faye-websocket
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -114,28 +114,28 @@ dependencies:
114
114
  requirements:
115
115
  - - "~>"
116
116
  - !ruby/object:Gem::Version
117
- version: 3.13.0
117
+ version: 3.14.0
118
118
  type: :development
119
119
  prerelease: false
120
120
  version_requirements: !ruby/object:Gem::Requirement
121
121
  requirements:
122
122
  - - "~>"
123
123
  - !ruby/object:Gem::Version
124
- version: 3.13.0
124
+ version: 3.14.0
125
125
  - !ruby/object:Gem::Dependency
126
126
  name: rubocop
127
127
  requirement: !ruby/object:Gem::Requirement
128
128
  requirements:
129
129
  - - '='
130
130
  - !ruby/object:Gem::Version
131
- version: 1.12.0
131
+ version: 1.12.1
132
132
  type: :development
133
133
  prerelease: false
134
134
  version_requirements: !ruby/object:Gem::Requirement
135
135
  requirements:
136
136
  - - '='
137
137
  - !ruby/object:Gem::Version
138
- version: 1.12.0
138
+ version: 1.12.1
139
139
  - !ruby/object:Gem::Dependency
140
140
  name: appium_thor
141
141
  requirement: !ruby/object:Gem::Requirement