appium_lib 15.1.0 → 15.2.0

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: 796adeac9cf88dc053e753f5247424776c3fc76e7315faab0707a701b51626d1
4
- data.tar.gz: 324af242f927a23024b497aa8ecbedd68dc83553473b2901e3a6dfc2da01849a
3
+ metadata.gz: f88a026a704b43d222f8d8bf91db42122ff2980d5035aa392ab4071713806d7f
4
+ data.tar.gz: 8d7dd97d70126fe283dc11d60a215301119f9463d2a90e03df701bf547ac9b78
5
5
  SHA512:
6
- metadata.gz: '065363852318ced51ba308b9bc4b9708b66650d746e840f672721e58ae8a32351fd4be26df57f78794ba23f5de98ed22af77fceafeccf38cb80b3efc7545ab2e'
7
- data.tar.gz: c03a4fd8b6966e60fd65fc33202a07a6fd4220f57eac3220acc82e8d33ec3562ccfa520ffc18996ac7758ba5019939320393733ad48c543371816788f67c36c2
6
+ metadata.gz: eb4fd237d52479e5209a04198184b280fc818bcca6a3e1f7c4498207229d4672cd78241b676aa266c076418f5885510c46fe02c5259aa7a9e11612bef111c77e
7
+ data.tar.gz: 7995667f533503dbc6e48d09bce54596ee771cab6675b6d3ea64d38f709310527a075fdf54e48505a095ac52151d641f2fdfe49ff78a8a6487951484faab7d83
data/CHANGELOG.md CHANGED
@@ -3,8 +3,10 @@ Commit based release not is [release_notes.md](./release_notes.md)
3
3
 
4
4
  Release tags are https://github.com/appium/ruby_lib/releases .
5
5
 
6
+ ## 15.2.0 - 2024-07-20
7
+ - Raise defined errors instead of Ruby general errors by appium_lib's own errors
6
8
 
7
- ## [15.1.0] - 2024-05-19
9
+ ## 15.1.0 - 2024-05-19
8
10
  - Use appium_lib_core 9.0.0
9
11
 
10
12
  ## 15.0.1 - 2024-04-26
data/appium_lib.gemspec CHANGED
@@ -24,7 +24,7 @@ Gem::Specification.new do |s|
24
24
  s.add_development_dependency 'minitest-reporters', '~> 1.1'
25
25
  s.add_development_dependency 'pry'
26
26
  s.add_development_dependency 'rake', '~> 13.0'
27
- s.add_development_dependency 'rubocop', '1.63.5'
27
+ s.add_development_dependency 'rubocop', '1.65.0'
28
28
  s.add_development_dependency 'yard', '~> 0.9.11'
29
29
 
30
30
  s.files = `git ls-files`.split("\n").reject { |v| v.match(/\A^(ios_tests|android_tests|grid|test_apps)\/.+/) }
@@ -150,7 +150,7 @@ module Appium
150
150
  index = results.length
151
151
  index -= 1 if index >= 0
152
152
  else
153
- raise 'Index must be >= 1' unless index >= 1
153
+ raise ArgumentError, 'Index must be >= 1' unless index >= 1
154
154
 
155
155
  index -= 1 if index >= 1
156
156
  end
@@ -29,7 +29,7 @@ module Appium
29
29
  # Android needs to combine button and image button to match iOS.
30
30
  if value.is_a? Numeric
31
31
  index = value
32
- raise "#{index} is not a valid index. Must be >= 1" if index <= 0
32
+ raise ArgumentError, "#{index} is not a valid index. Must be >= 1" if index <= 0
33
33
 
34
34
  # 1 indexed
35
35
  return find_element :uiautomator, _button_visible_selectors(index: index)
@@ -25,7 +25,7 @@ module Appium
25
25
  # Android needs to combine button and image button to match iOS.
26
26
  if value.is_a? Numeric
27
27
  index = value
28
- raise "#{index} is not a valid index. Must be >= 1" if index <= 0
28
+ raise ArgumentError, "#{index} is not a valid index. Must be >= 1" if index <= 0
29
29
 
30
30
  # zero index
31
31
  _button_visible_selectors_xpath(index: index - 1)
@@ -25,7 +25,7 @@ module Appium
25
25
  # Android needs to combine button and image button to match iOS.
26
26
  if value.is_a? Numeric
27
27
  index = value
28
- raise "#{index} is not a valid index. Must be >= 1" if index <= 0
28
+ raise ArgumentError, "#{index} is not a valid index. Must be >= 1" if index <= 0
29
29
 
30
30
  result = find_elements :uiautomator, _button_visible_selectors(index: index)
31
31
  raise _no_such_element if result.empty?
@@ -56,11 +56,11 @@ module Appium
56
56
  # @param opts [Hash] file: '/path/to/appium.txt', verbose: true
57
57
  # @return [hash] the symbolized hash with updated :app and :require keys
58
58
  def load_settings(opts = {})
59
- raise 'opts must be a hash' unless opts.is_a? Hash
60
- raise 'opts must not be empty' if opts.empty?
59
+ raise ArgumentError, 'opts must be a hash' unless opts.is_a? Hash
60
+ raise ArgumentError, 'opts must not be empty' if opts.empty?
61
61
 
62
62
  toml = opts[:file]
63
- raise 'Must pass a capability file which has [caps] and [appium_lib]' unless toml
63
+ raise ArgumentError, 'Must pass a capability file which has [caps] and [appium_lib]' unless toml
64
64
 
65
65
  verbose = opts.fetch :verbose, false
66
66
 
@@ -69,7 +69,7 @@ module Appium
69
69
  toml_exists = File.exist? toml
70
70
  Appium::Logger.info "Exists? #{toml_exists}" if verbose
71
71
 
72
- raise "toml doesn't exist #{toml}" unless toml_exists
72
+ raise ArgumentError, "toml doesn't exist #{toml}" unless toml_exists
73
73
 
74
74
  require 'tomlrb'
75
75
  Appium::Logger.info "Loading #{toml}" if verbose
@@ -151,7 +151,7 @@ module Appium
151
151
  # @param [Array<Module>] modules An array of modules
152
152
  # @param [Driver] driver A driver to extend for
153
153
  def promote_singleton_appium_methods(modules, driver = $driver)
154
- raise 'Global $driver is nil' if driver.nil?
154
+ raise ArgumentError, 'Global $driver is nil' if driver.nil?
155
155
 
156
156
  target_modules = []
157
157
 
@@ -160,7 +160,7 @@ module Appium
160
160
  target_modules << modules.const_get(sub_module)
161
161
  end
162
162
  else
163
- raise 'modules must be a module or an array' unless modules.is_a? Array
163
+ raise ArgumentError, 'modules must be a module or an array' unless modules.is_a? Array
164
164
 
165
165
  target_modules = modules
166
166
  end
@@ -205,7 +205,7 @@ module Appium
205
205
  # Appium.promote_appium_methods Minitest::Spec
206
206
  #
207
207
  def promote_appium_methods(class_array, driver = $driver)
208
- raise 'Driver is nil' if driver.nil?
208
+ raise ArgumentError, 'Driver is nil' if driver.nil?
209
209
 
210
210
  # Wrap single class into an array
211
211
  class_array = [class_array] unless class_array.instance_of? Array
@@ -156,7 +156,7 @@ module Appium
156
156
 
157
157
  $driver&.driver_quit if global_driver
158
158
 
159
- raise 'opts must be a hash' unless opts.is_a? Hash
159
+ raise ArgumentError, 'opts must be a hash' unless opts.is_a? Hash
160
160
 
161
161
  @core = ::Appium::Core.for(opts)
162
162
  extend ::Appium::Core::Device
@@ -329,7 +329,7 @@ module Appium
329
329
  # action.click(element).perform # The `click` is a part of `PointerActions`
330
330
  #
331
331
  def action
332
- @driver.action
332
+ @driver&.action
333
333
  end
334
334
 
335
335
  # Returns the server's version info
@@ -384,12 +384,12 @@ module Appium
384
384
  #
385
385
  # @return [String] APP_PATH as an absolute path
386
386
  def self.absolute_app_path(opts)
387
- raise 'opts must be a hash' unless opts.is_a? Hash
387
+ raise ArgumentError, 'opts must be a hash' unless opts.is_a? Hash
388
388
 
389
389
  # FIXME: 'caps' and 'app' will be correct
390
390
  caps = opts[:caps] || opts['caps'] || {}
391
391
  app_path = caps[:app] || caps['app']
392
- raise 'absolute_app_path invoked and app is not set!' if app_path.nil? || app_path.empty?
392
+ raise ArgumentError, 'absolute_app_path invoked and app is not set!' if app_path.nil? || app_path.empty?
393
393
  # Sauce storage API. http://saucelabs.com/docs/rest#storage
394
394
  return app_path if app_path.start_with? 'sauce-storage:'
395
395
  return app_path if app_path =~ URI::DEFAULT_PARSER.make_regexp # public URL for Sauce
@@ -431,7 +431,7 @@ module Appium
431
431
  # @param png_save_path [String] the full path to save the png
432
432
  # @return [File]
433
433
  def screenshot(png_save_path)
434
- @driver.save_screenshot png_save_path
434
+ @driver&.save_screenshot png_save_path
435
435
  end
436
436
 
437
437
  # Takes a png screenshot of particular element's area
@@ -445,7 +445,7 @@ module Appium
445
445
  # @param [String] png_save_path the full path to save the png
446
446
  # @return [File]
447
447
  def element_screenshot(element, png_save_path)
448
- @driver.take_element_screenshot element, png_save_path
448
+ @driver&.take_element_screenshot element, png_save_path
449
449
  nil
450
450
  end
451
451
 
@@ -469,6 +469,9 @@ module Appium
469
469
  # size.height #=> Integer
470
470
  #
471
471
  def window_size
472
+ # maybe exception is expected as no driver created
473
+ raise NoDriverInstanceError if @driver.nil?
474
+
472
475
  @driver.window_size
473
476
  end
474
477
 
@@ -484,6 +487,8 @@ module Appium
484
487
  # size.y #=> Integer
485
488
  #
486
489
  def window_rect
490
+ raise NoDriverInstanceError if @driver.nil?
491
+
487
492
  @driver.window_rect
488
493
  end
489
494
 
@@ -555,7 +560,7 @@ module Appium
555
560
 
556
561
  # Set implicit wait to zero.
557
562
  def no_wait
558
- @driver.manage.timeouts.implicit_wait = 0
563
+ @driver&.manage&.timeouts&.implicit_wait = 0
559
564
  end
560
565
 
561
566
  # Set implicit wait. Default to @default_wait.
@@ -570,7 +575,7 @@ module Appium
570
575
  # @return [void]
571
576
  def set_wait(timeout = nil)
572
577
  timeout = @default_wait if timeout.nil?
573
- @driver.manage.timeouts.implicit_wait = timeout
578
+ @driver&.manage&.timeouts&.implicit_wait = timeout
574
579
  end
575
580
 
576
581
  # Returns existence of element.
@@ -589,9 +594,9 @@ module Appium
589
594
  # do not uset set_wait here.
590
595
  # it will cause problems with other methods reading the default_wait of 0
591
596
  # which then gets converted to a 1 second wait.
592
- @driver.manage.timeouts.implicit_wait = pre_check
597
+ @driver&.manage&.timeouts&.implicit_wait = pre_check
593
598
  # the element exists unless an error is raised.
594
- exists = true
599
+ exists = true
595
600
 
596
601
  begin
597
602
  yield # search for element
@@ -600,7 +605,7 @@ module Appium
600
605
  end
601
606
 
602
607
  # restore wait
603
- @driver.manage.timeouts.implicit_wait = post_check if post_check != pre_check
608
+ @driver&.manage&.timeouts&.implicit_wait = post_check if post_check != pre_check
604
609
 
605
610
  exists
606
611
  end
@@ -610,6 +615,8 @@ module Appium
610
615
  # @param [*args] args The args to pass to the script
611
616
  # @return [Object]
612
617
  def execute_script(script, *args)
618
+ raise NoDriverInstanceError if @driver.nil?
619
+
613
620
  @driver.execute_script script, *args
614
621
  end
615
622
 
@@ -618,6 +625,8 @@ module Appium
618
625
  ###
619
626
  # Get the window handles of open browser windows
620
627
  def execute_async_script(script, *args)
628
+ raise NoDriverInstanceError if @driver.nil?
629
+
621
630
  @driver.execute_async_script script, *args
622
631
  end
623
632
 
@@ -650,41 +659,59 @@ module Appium
650
659
  # r.logs #=> The `logs` key part as `{'log' => [], 'warn' => [], 'error' => []}`
651
660
  #
652
661
  def execute_driver(script: '', type: 'webdriverio', timeout_ms: nil)
662
+ raise NoDriverInstanceError if @driver.nil?
663
+
653
664
  @driver.execute_driver(script: script, type: type, timeout_ms: timeout_ms)
654
665
  end
655
666
 
656
667
  def window_handles
668
+ raise NoDriverInstanceError if @driver.nil?
669
+
657
670
  @driver.window_handles
658
671
  end
659
672
 
660
673
  # Get the current window handle
661
674
  def window_handle
675
+ raise NoDriverInstanceError if @driver.nil?
676
+
662
677
  @driver.window_handle
663
678
  end
664
679
 
665
680
  def navigate
681
+ raise NoDriverInstanceError if @driver.nil?
682
+
666
683
  @driver.navigate
667
684
  end
668
685
 
669
686
  def manage
687
+ raise NoDriverInstanceError if @driver.nil?
688
+
670
689
  @driver.manage
671
690
  end
672
691
 
673
692
  def get(url)
693
+ raise NoDriverInstanceError if @driver.nil?
694
+
674
695
  @driver.get(url)
675
696
  end
676
697
 
677
698
  def current_url
699
+ raise NoDriverInstanceError if @driver.nil?
700
+
678
701
  @driver.current_url
679
702
  end
680
703
 
681
704
  def title
705
+ raise NoDriverInstanceError if @driver.nil?
706
+
682
707
  @driver.title
683
708
  end
684
709
 
685
710
  # @return [TargetLocator]
686
711
  # @see TargetLocator
687
712
  def switch_to
713
+ raise NoDriverInstanceError if @driver.nil?
714
+
688
715
  @driver.switch_to
689
716
  end
690
717
  ###
@@ -712,6 +739,8 @@ module Appium
712
739
  # @param [*args] args The args to use
713
740
  # @return [Array<Element>] Array is empty when no elements are found.
714
741
  def find_elements(*args)
742
+ raise NoDriverInstanceError if @driver.nil?
743
+
715
744
  @driver.find_elements(*args)
716
745
  end
717
746
 
@@ -728,6 +757,8 @@ module Appium
728
757
  # @param [*args] args The args to use
729
758
  # @return [Element]
730
759
  def find_element(*args)
760
+ raise NoDriverInstanceError if @driver.nil?
761
+
731
762
  @driver.find_element(*args)
732
763
  end
733
764
 
@@ -743,6 +774,8 @@ module Appium
743
774
  # @driver.find_element_by_image './test/functional/data/test_element_image.png'
744
775
  #
745
776
  def find_element_by_image(png_img_path)
777
+ raise NoDriverInstanceError if @driver.nil?
778
+
746
779
  @driver.find_element_by_image(png_img_path)
747
780
  end
748
781
 
@@ -758,6 +791,8 @@ module Appium
758
791
  # @driver.find_elements_by_image ['./test/functional/data/test_element_image.png']
759
792
  #
760
793
  def find_elements_by_image(png_img_paths)
794
+ raise NoDriverInstanceError if @driver.nil?
795
+
761
796
  @driver.find_elements_by_image(png_img_paths)
762
797
  end
763
798
 
@@ -771,6 +806,8 @@ module Appium
771
806
  # @option opts [Float] :altitude the altitude, defaulting to 75
772
807
  # @return [Selenium::WebDriver::Location] the location constructed by the selenium webdriver
773
808
  def set_location(opts = {})
809
+ raise NoDriverInstanceError if @driver.nil?
810
+
774
811
  latitude = opts.fetch(:latitude)
775
812
  longitude = opts.fetch(:longitude)
776
813
  altitude = opts.fetch(:altitude, 75)
@@ -794,10 +831,13 @@ module Appium
794
831
  # # 'appium:anotherEvent' => 1572959315}
795
832
  #
796
833
  def log_event(vendor:, event:)
834
+ raise NoDriverInstanceError if @driver.nil?
835
+
797
836
  @driver.logs.event vendor: vendor, event: event
798
837
  end
799
838
 
800
839
  def log_event=(log_event)
840
+ raise if @driver.nil?
801
841
  unless log_event.is_a?(Hash)
802
842
  raise ::Appium::Core::Error::ArgumentError('log_event should be Hash like { vendor: "appium", event: "funEvent"}')
803
843
  end
@@ -817,6 +857,8 @@ module Appium
817
857
  # log_events #=> {'commands' => [{'cmd' => 123455, ....}], 'startTime' => 1572954894127, }
818
858
  #
819
859
  def log_events(type = nil)
860
+ raise NoDriverInstanceError if @driver.nil?
861
+
820
862
  @driver.logs.events(type)
821
863
  end
822
864
 
@@ -0,0 +1,22 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Licensed under the Apache License, Version 2.0 (the "License");
4
+ # you may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at
6
+ #
7
+ # http://www.apache.org/licenses/LICENSE-2.0
8
+ #
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ # See the License for the specific language governing permissions and
13
+ # limitations under the License.
14
+
15
+ module Appium
16
+ class Error < StandardError; end
17
+
18
+ # Driver instance hasn't been created yet.
19
+ class NoDriverInstanceError < Appium::Error; end
20
+
21
+ class ArgumentError < ArgumentError; end
22
+ end
@@ -107,7 +107,7 @@ module Appium
107
107
  # @param index [Integer] the index
108
108
  # @return [Element]
109
109
  def ele_index(class_name, index)
110
- raise 'Index must be >= 1' unless index == 'last()' || (index.is_a?(Integer) && index >= 1)
110
+ raise ArgumentError, 'Index must be >= 1' unless index == 'last()' || (index.is_a?(Integer) && index >= 1)
111
111
 
112
112
  elements = tags(class_name)
113
113
 
@@ -376,7 +376,7 @@ module Appium
376
376
  #
377
377
  def _all_pred(opts)
378
378
  predicate = opts[:predicate]
379
- raise 'predicate must be provided' unless predicate
379
+ raise ArgumentError, 'predicate must be provided' unless predicate
380
380
 
381
381
  visible = opts.fetch :visible, true
382
382
  %($.mainApp().getAllWithPredicate("#{predicate}", #{visible});)
@@ -404,23 +404,23 @@ module Appium
404
404
  end
405
405
 
406
406
  def _validate_object(*objects)
407
- raise 'objects must be an array' unless objects.is_a? Array
407
+ raise ArgumentError, 'objects must be an array' unless objects.is_a? Array
408
408
 
409
409
  objects.each do |obj|
410
410
  next unless obj # obj may be nil. if so, ignore.
411
411
 
412
412
  valid_keys = %i[target substring insensitive]
413
413
  unknown_keys = obj.keys - valid_keys
414
- raise "Unknown keys: #{unknown_keys}" unless unknown_keys.empty?
414
+ raise ArgumentError, "Unknown keys: #{unknown_keys}" unless unknown_keys.empty?
415
415
 
416
416
  target = obj[:target]
417
- raise 'target must be a string' unless target.is_a? String
417
+ raise ArgumentError, 'target must be a string' unless target.is_a? String
418
418
 
419
419
  substring = obj[:substring]
420
- raise 'substring must be a boolean' unless [true, false].include? substring
420
+ raise ArgumentError, 'substring must be a boolean' unless [true, false].include? substring
421
421
 
422
422
  insensitive = obj[:insensitive]
423
- raise 'insensitive must be a boolean' unless [true, false].include? insensitive
423
+ raise ArgumentError, 'insensitive must be a boolean' unless [true, false].include? insensitive
424
424
  end
425
425
  end
426
426
 
@@ -456,16 +456,16 @@ module Appium
456
456
  def _by_json(opts)
457
457
  valid_keys = %i(typeArray onlyFirst onlyVisible name label value)
458
458
  unknown_keys = opts.keys - valid_keys
459
- raise "Unknown keys: #{unknown_keys}" unless unknown_keys.empty?
459
+ raise ArgumentError, "Unknown keys: #{unknown_keys}" unless unknown_keys.empty?
460
460
 
461
461
  type_array = opts[:typeArray]
462
- raise 'typeArray must be an array' unless type_array.is_a? Array
462
+ raise ArgumentError, 'typeArray must be an array' unless type_array.is_a? Array
463
463
 
464
464
  only_first = opts[:onlyFirst]
465
- raise 'onlyFirst must be a boolean' unless [true, false].include? only_first
465
+ raise ArgumentError, 'onlyFirst must be a boolean' unless [true, false].include? only_first
466
466
 
467
467
  only_visible = opts[:onlyVisible]
468
- raise 'onlyVisible must be a boolean' unless [true, false].include? only_visible
468
+ raise ArgumentError, 'onlyVisible must be a boolean' unless [true, false].include? only_visible
469
469
 
470
470
  # name/label/value are optional. when searching for class only, then none
471
471
  # will be present.
@@ -42,7 +42,7 @@ module Appium
42
42
  def textfield(value)
43
43
  if value.is_a? Numeric
44
44
  index = value
45
- raise "#{index} is not a valid index. Must be >= 1" if index <= 0
45
+ raise ArgumentError, "#{index} is not a valid index. Must be >= 1" if index <= 0
46
46
 
47
47
  index -= 1 # eles_by_json and _textfields_with_predicate is 0 indexed.
48
48
  result = eles_by_json(_textfield_visible)[index]
@@ -37,7 +37,7 @@ module Appium
37
37
  def textfield(value)
38
38
  if value.is_a? Numeric
39
39
  index = value
40
- raise "#{index} is not a valid index. Must be >= 1" if index <= 0
40
+ raise ArgumentError, "#{index} is not a valid index. Must be >= 1" if index <= 0
41
41
 
42
42
  index -= 1 # eles_by_json and _textfields_with_predicate is 0 indexed.
43
43
  result = _textfields_with_predicate[index]
@@ -14,6 +14,6 @@
14
14
 
15
15
  module Appium
16
16
  # Version and Date are defined on the 'Appium' module, not 'Appium::Common'
17
- VERSION = '15.1.0' unless defined? ::Appium::VERSION
18
- DATE = '2024-05-19' unless defined? ::Appium::DATE
17
+ VERSION = '15.2.0' unless defined? ::Appium::VERSION
18
+ DATE = '2024-07-20' unless defined? ::Appium::DATE
19
19
  end
data/release_notes.md CHANGED
@@ -1,3 +1,13 @@
1
+ #### v15.2.0 2024-07-20
2
+
3
+ - [d73525e](https://github.com/appium/ruby_lib/commit/d73525eec584c3c31690dcd55a6c52d641d43f9f) Release 15.2.0
4
+ - [6b5d969](https://github.com/appium/ruby_lib/commit/6b5d9693f10e64a521f6ac5d31c78d71e5f0f6be) feat: raise its own defined errors (#1035)
5
+ - [4a74c60](https://github.com/appium/ruby_lib/commit/4a74c60937e66bf028a66e4f05a324ce8b2077ce) chore: Update rubocop requirement from = 1.64.1 to = 1.65.0 (#1034)
6
+ - [fa4cea4](https://github.com/appium/ruby_lib/commit/fa4cea4e5bea0aa4e3ed7052ba77812c82684fe0) chore: Update rubocop requirement from = 1.64.0 to = 1.64.1 (#1033)
7
+ - [96ce262](https://github.com/appium/ruby_lib/commit/96ce26264d985b5260e99573486e8f712bfb12e3) chore: Update rubocop requirement from = 1.63.5 to = 1.64.0 (#1032)
8
+ - [14590cc](https://github.com/appium/ruby_lib/commit/14590cce6f6cbef8c20e12ae10b00bf3f7b5ab3a) chore: tweak changelog format
9
+
10
+
1
11
  #### v15.1.0 2024-05-19
2
12
 
3
13
  - [b1534cc](https://github.com/appium/ruby_lib/commit/b1534cc8e781e37f9632fa1cbaa6e2422b6a768d) Release 15.1.0
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: appium_lib
3
3
  version: !ruby/object:Gem::Version
4
- version: 15.1.0
4
+ version: 15.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - code@bootstraponline.com
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2024-05-20 00:00:00.000000000 Z
12
+ date: 2024-07-21 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: appium_lib_core
@@ -169,14 +169,14 @@ dependencies:
169
169
  requirements:
170
170
  - - '='
171
171
  - !ruby/object:Gem::Version
172
- version: 1.63.5
172
+ version: 1.65.0
173
173
  type: :development
174
174
  prerelease: false
175
175
  version_requirements: !ruby/object:Gem::Requirement
176
176
  requirements:
177
177
  - - '='
178
178
  - !ruby/object:Gem::Version
179
- version: 1.63.5
179
+ version: 1.65.0
180
180
  - !ruby/object:Gem::Dependency
181
181
  name: yard
182
182
  requirement: !ruby/object:Gem::Requirement
@@ -247,6 +247,7 @@ files:
247
247
  - lib/appium_lib/common/log.rb
248
248
  - lib/appium_lib/common/wait.rb
249
249
  - lib/appium_lib/driver.rb
250
+ - lib/appium_lib/error.rb
250
251
  - lib/appium_lib/ios/common/errors.rb
251
252
  - lib/appium_lib/ios/common/helper.rb
252
253
  - lib/appium_lib/ios/element/alert.rb