testa_appium_driver 0.1.5 → 0.1.6

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 57c9443d16200ae583fc1d8a4cae4b27890566bfd0cd919dc7aae5b7e9f371f9
4
- data.tar.gz: 4fd4ec8bd0b7bb3f0f9ccea250873878e17553ef06993d7f11d8c03db224a065
3
+ metadata.gz: eb79ce18b9e98f651e83630eff7efe2d71d77031231f88c04521e7d4f1baf483
4
+ data.tar.gz: 94d1b8a88844c8726b1b87cd500ca07842b7b92190df7ef223f2cac4f929c9d9
5
5
  SHA512:
6
- metadata.gz: abadbdf89242733883b65c781d2b6875a7a373f5667a7aab7ba4c77bd13bacc4069d7a9ac031d3cc541bc292c9dd48e5bf520dff9dcbb996b8abe6bc5e565e1a
7
- data.tar.gz: 221a32b22c15d0ee23a75cb65fb61862700ff176c13a8fd573878a83896f65f518401a768218b3460fcaef12dc32780199a0e96fa718f07c3a8ac9d43087f0a4
6
+ metadata.gz: 9c2abf9c966c5e8d192c52e48226fcf0d73994315b3d865e48ce03f41aced48f3785dcaf7d46fd26b6e21fa51e0035cae6b00e416fffde3ae1ab0a5cf703b982
7
+ data.tar.gz: e7e087b4b4227eb4d355df738f53d4ea72903b80fe51d3408c8c7ec6ac855a2066f40882dbae55de3418a1827895bcbefa14aa9b3322d767e22cd94393c1a67c
data/.idea/deployment.xml CHANGED
@@ -1,14 +1,22 @@
1
1
  <?xml version="1.0" encoding="UTF-8"?>
2
2
  <project version="4">
3
- <component name="PublishConfigData">
3
+ <component name="PublishConfigData" autoUpload="On explicit save action" serverName="supertesta.com" autoUploadExternalChanges="true">
4
4
  <serverData>
5
5
  <paths name="supertesta.com">
6
6
  <serverdata>
7
7
  <mappings>
8
- <mapping local="$PROJECT_DIR$" web="/" />
8
+ <mapping deploy="/testa_docker/path_data/testa_appium_driver" local="$PROJECT_DIR$" web="/" />
9
+ </mappings>
10
+ </serverdata>
11
+ </paths>
12
+ <paths name="testa.fun">
13
+ <serverdata>
14
+ <mappings>
15
+ <mapping deploy="/testa_docker/path_data/testa_appium_driver" local="$PROJECT_DIR$" web="/" />
9
16
  </mappings>
10
17
  </serverdata>
11
18
  </paths>
12
19
  </serverData>
20
+ <option name="myAutoUpload" value="ON_EXPLICIT_SAVE" />
13
21
  </component>
14
22
  </project>
data/.idea/sshConfigs.xml CHANGED
@@ -5,6 +5,9 @@
5
5
  <sshConfig authType="PASSWORD" host="supertesta.com" id="ea45cb27-d516-4292-a1f7-430f02857685" port="22" customName="Supertesta.com" nameFormat="CUSTOM" username="testa">
6
6
  <option name="customName" value="Supertesta.com" />
7
7
  </sshConfig>
8
+ <sshConfig authType="PASSWORD" host="testa.fun" id="54640192-a130-4edc-ac3c-f3bc32df1130" port="22" customName="testa.fun" nameFormat="CUSTOM" username="root">
9
+ <option name="customName" value="testa.fun" />
10
+ </sshConfig>
8
11
  </configs>
9
12
  </component>
10
13
  </project>
data/.idea/webServers.xml CHANGED
@@ -9,6 +9,13 @@
9
9
  </advancedOptions>
10
10
  </fileTransfer>
11
11
  </webServer>
12
+ <webServer id="e1897dc5-c089-49e3-802d-1c69de9874a7" name="testa.fun" url="http://something">
13
+ <fileTransfer rootFolder="/ruby_apps" accessType="SFTP" host="testa.fun" port="22" sshConfigId="54640192-a130-4edc-ac3c-f3bc32df1130" sshConfig="testa.fun">
14
+ <advancedOptions>
15
+ <advancedOptions dataProtectionLevel="Private" keepAliveTimeout="0" passiveMode="true" shareSSLContext="true" />
16
+ </advancedOptions>
17
+ </fileTransfer>
18
+ </webServer>
12
19
  </option>
13
20
  </component>
14
21
  </project>
@@ -36,15 +36,19 @@ module TestaAppiumDriver
36
36
 
37
37
 
38
38
  # resolve selector which will be used for finding element
39
- def strategy_and_selector
39
+ def strategies_and_selectors
40
+ ss = []
40
41
  if @can_use_id_strategy
41
- return FIND_STRATEGY_ID, @can_use_id_strategy
42
+ ss.push({"#{FIND_STRATEGY_ID}": @can_use_id_strategy})
42
43
  end
43
- if (@strategy.nil? && @default_find_strategy == FIND_STRATEGY_UIAUTOMATOR) || @strategy == FIND_STRATEGY_UIAUTOMATOR
44
- [FIND_STRATEGY_UIAUTOMATOR, ui_selector]
45
- elsif (@strategy.nil? && @default_find_strategy == FIND_STRATEGY_XPATH) || @strategy == FIND_STRATEGY_XPATH
46
- [FIND_STRATEGY_XPATH, @xpath_selector]
44
+ if @strategy.nil? || @strategy == FIND_STRATEGY_UIAUTOMATOR
45
+ ss.push({"#{FIND_STRATEGY_UIAUTOMATOR}": ui_selector})
47
46
  end
47
+
48
+ if @strategy.nil? || @strategy == FIND_STRATEGY_XPATH
49
+ ss.push({"#{FIND_STRATEGY_XPATH}": @xpath_selector})
50
+ end
51
+ ss
48
52
  end
49
53
 
50
54
 
@@ -25,6 +25,8 @@ module TestaAppiumDriver
25
25
  attr_accessor :default_find_strategy
26
26
  attr_accessor :default_scroll_strategy
27
27
 
28
+ attr_accessor :index_for_multiple
29
+
28
30
 
29
31
  # locator parameters are:
30
32
  # single: true or false
@@ -38,6 +40,7 @@ module TestaAppiumDriver
38
40
  def initialize(driver, from_element, params = {})
39
41
  # @type [TestaAppiumDriver::Driver]
40
42
  @driver = driver
43
+ @index_for_multiple = nil
41
44
 
42
45
  params, selectors = extract_selectors_from_params(params)
43
46
  single = params[:single]
@@ -57,7 +60,8 @@ module TestaAppiumDriver
57
60
  @default_find_strategy = params[:default_find_strategy]
58
61
  @default_scroll_strategy = params[:default_scroll_strategy]
59
62
 
60
- @can_use_id_strategy = selectors.keys.count == 1 && !selectors[:id].nil?
63
+
64
+ @can_use_id_strategy = is_only_id_selector?(selectors)
61
65
  if @can_use_id_strategy
62
66
  if @driver.device == :android
63
67
  @can_use_id_strategy = resolve_id(selectors[:id])
@@ -76,10 +80,22 @@ module TestaAppiumDriver
76
80
  end
77
81
 
78
82
 
83
+ def is_only_id_selector?(selectors)
84
+ # since, name and id is the same thing for iOS,
85
+ if @driver.device == :android
86
+ selectors.keys.count == 1 && !selectors[:id].nil?
87
+ else
88
+ # if it iOS we assign the name to id
89
+ selectors.keys.count == 2 && !selectors[:id].nil? && selectors[:id] == selectors[:name]
90
+ end
91
+ end
92
+
93
+
79
94
  # method missing is used to fetch the element before executing additional commands like click, send_key, count
80
95
  def method_missing(method, *args, &block)
81
96
  r = execute.send(method, *args, &block)
82
97
  @driver.invalidate_cache
98
+ r = r[@index_for_multiple] if !@index_for_multiple.nil? && !@single
83
99
  r
84
100
  end
85
101
 
@@ -100,10 +116,12 @@ module TestaAppiumDriver
100
116
 
101
117
 
102
118
 
103
- strategy, selector = strategy_and_selector
104
119
 
105
120
 
106
- @driver.execute(@from_element, selector, @single, strategy, @default_find_strategy, skip_cache)
121
+
122
+ r = @driver.execute(@from_element, @single, strategies_and_selectors, skip_cache)
123
+ r = r[@index_for_multiple] if !@index_for_multiple.nil? && !@single
124
+ r
107
125
  end
108
126
 
109
127
 
@@ -111,12 +129,8 @@ module TestaAppiumDriver
111
129
  # @return [TestaAppiumDriver::Locator]
112
130
  def wait_until_exists(timeout = nil)
113
131
  timeout = @driver.get_timeouts["implicit"] / 1000 if timeout.nil?
114
- start_time = Time.now.to_f
115
- until exists?
116
- raise "wait until exists timeout exceeded" if start_time + timeout < Time.now.to_f
117
- sleep EXISTS_WAIT
118
- end
119
- self
132
+ args = {timeout: timeout}
133
+ _wait(:until, args)
120
134
  end
121
135
 
122
136
 
@@ -124,12 +138,19 @@ module TestaAppiumDriver
124
138
  # @return [TestaAppiumDriver::Locator]
125
139
  def wait_while_exists(timeout = nil)
126
140
  timeout = @driver.get_timeouts["implicit"] / 1000 if timeout.nil?
127
- start_time = Time.now.to_f
128
- while exists?
129
- raise "wait until exists timeout exceeded" if start_time + timeout < Time.now.to_f
130
- sleep EXISTS_WAIT
131
- end
132
- self
141
+ args = {timeout: timeout}
142
+ _wait(:while, args)
143
+ end
144
+
145
+
146
+ def wait_while(timeout = nil, args = {})
147
+ args[:timeout] = timeout
148
+ _wait(:while, args)
149
+ end
150
+
151
+ def wait_until(timeout = nil, args = {})
152
+ args[:timeout] = timeout
153
+ _wait(:until, args)
133
154
  end
134
155
 
135
156
 
@@ -179,7 +200,7 @@ module TestaAppiumDriver
179
200
  locator.can_use_id_strategy = false
180
201
  locator
181
202
  else
182
- from_element = self.execute[instance]
203
+ from_element = self.index_for_multiple = instance
183
204
  params = {}.merge({single: true, scrollable_locator: @scrollable_locator})
184
205
  #params[:strategy] = FIND_STRATEGY_XPATH
185
206
  #params[:strategy_reason] = "retrieved instance of a array"
@@ -216,7 +237,8 @@ module TestaAppiumDriver
216
237
  xpath: @xpath_selector,
217
238
  scrollable: @scrollable_locator.nil? ? nil : @scrollable_locator.to_s,
218
239
  scroll_orientation: @scroll_orientation,
219
- resolved: strategy_and_selector
240
+ resolved: strategies_and_selectors,
241
+ index_for_multiple: @index_for_multiple
220
242
  }
221
243
  end
222
244
 
@@ -401,6 +423,51 @@ module TestaAppiumDriver
401
423
 
402
424
  private
403
425
 
426
+ def _wait(type, args)
427
+ interval = EXISTS_WAIT
428
+ interval = args[:interval] unless args[:interval].nil?
429
+
430
+ message = "wait #{type} exists timeout exceeded"
431
+ message = args[:message] unless args[:message].nil?
432
+
433
+ if args[:timeout].nil?
434
+ timeout = @driver.get_timeouts["implicit"] / 1000
435
+ else
436
+ timeout = args[:timeout]
437
+ end
438
+
439
+ args.delete(:message)
440
+ args.delete(:interval)
441
+ args.delete(:timeout)
442
+
443
+
444
+
445
+ start_time = Time.now.to_f
446
+ if type == :while
447
+ while exists? && _attributes_match(args)
448
+ raise message if start_time + timeout < Time.now.to_f
449
+ sleep interval
450
+ end
451
+ else
452
+ until exists? && _attributes_match(args)
453
+ raise message if start_time + timeout < Time.now.to_f
454
+ sleep interval
455
+ end
456
+ end
457
+ self
458
+ end
459
+
460
+ def _attributes_match(attributes)
461
+ all_match = true
462
+ attributes.each do |key, value|
463
+ unless attribute(key) == value
464
+ all_match = false
465
+ break
466
+ end
467
+ end
468
+ all_match
469
+ end
470
+
404
471
  #noinspection RubyNilAnalysis
405
472
  def perform_driver_method(name, *args)
406
473
  elements = execute
@@ -63,42 +63,46 @@ module TestaAppiumDriver
63
63
  # Cache stores last executed find_element with given selector, strategy and from_element. If given values are the same within
64
64
  # last 5 seconds element is retrieved from cache.
65
65
  # @param [TestaAppiumDriver::Locator, TestaAppiumDriver::Driver] from_element element from which start the search
66
- # @param [String] selector resolved string of a [TestaAppiumDriver::Locator] selector xpath for xpath strategy, java UiSelectors for uiautomator or id for ID strategy
67
66
  # @param [Boolean] single fetch single or multiple results
68
- # @param [Symbol, nil] strategy [TestaAppiumDriver::FIND_STRATEGY_UIAUTOMATOR], [TestaAppiumDriver::FIND_STRATEGY_XPATH] or [TestaAppiumDriver::FIND_STRATEGY_ID]
69
- # @param [Symbol] default_strategy if strategy is not enforced, default can be used
67
+ # @param [Array<Hash>] strategies_and_selectors array of usable strategies and selectors
70
68
  # @param [Boolean] skip_cache to skip checking and storing cache
71
69
  # @return [Selenium::WebDriver::Element, Array] element is returned if single is true, array otherwise
72
- def execute(from_element, selector, single, strategy, default_strategy, skip_cache = false)
70
+ def execute(from_element, single, strategies_and_selectors, skip_cache = false)
73
71
 
74
72
  # if user wants to wait for element to exist, he can use wait_until_present
75
73
  disable_wait_for_idle
74
+ disable_implicit_wait
75
+ start_time = Time.now.to_f
76
+ ss_index = 0
77
+
76
78
 
77
79
 
78
- # if not restricted to a strategy, use the default one
79
- strategy = default_strategy if strategy.nil?
80
80
 
81
81
  # resolve from_element unique id, so that we can cache it properly
82
82
  from_element_id = from_element.kind_of?(TestaAppiumDriver::Locator) ? from_element.strategy_and_selector[1] : nil
83
83
 
84
- puts "Executing #{from_element_id ? "from #{from_element.strategy}: #{from_element.strategy_and_selector} => " : ""}#{strategy}: #{selector}"
85
84
  begin
86
- if @cache[:selector] != selector || # cache miss, selector is different
85
+ ss = strategies_and_selectors[ss_index % strategies_and_selectors.count]
86
+ ss_index +=1
87
+
88
+ puts "Executing #{from_element_id ? "from #{from_element.strategy}: #{from_element.strategy_and_selector} => " : ""}#{ss.keys[0]}: #{ss.values[0]}"
89
+
90
+ if @cache[:selector] != ss.values[0] || # cache miss, selector is different
87
91
  @cache[:time] + 5 <= Time.now || # cache miss, older than 5 seconds
88
- @cache[:strategy] != strategy || # cache miss, different find strategy
92
+ @cache[:strategy] != ss.keys[0] || # cache miss, different find strategy
89
93
  @cache[:from_element_id] != from_element_id || # cache miss, search is started from different element
90
94
  skip_cache # cache is skipped
91
95
 
92
96
  if single
93
- execute_result = from_element.find_element("#{strategy}": selector)
97
+ execute_result = from_element.find_element(ss)
94
98
  else
95
- execute_result = from_element.find_elements("#{strategy}": selector)
99
+ execute_result = from_element.find_elements(ss)
96
100
  end
97
101
 
98
102
 
99
103
  unless skip_cache
100
- @cache[:selector] = selector
101
- @cache[:strategy] = strategy
104
+ @cache[:selector] = ss.values[0]
105
+ @cache[:strategy] = ss.keys[0]
102
106
  @cache[:time] = Time.now
103
107
  @cache[:from_element_id] = from_element_id
104
108
  @cache[:element] = execute_result
@@ -109,8 +113,14 @@ module TestaAppiumDriver
109
113
  puts "Using cache from #{@cache[:time].strftime("%H:%M:%S.%L")}, strategy: #{@cache[:strategy]}"
110
114
  end
111
115
  rescue => e
112
- raise e
116
+ if start_time + @implicit_wait_ms/1000 < Time.now.to_f || ss_index < strategies_and_selectors.count
117
+ sleep EXISTS_WAIT if ss_index >= strategies_and_selectors.count
118
+ retry
119
+ else
120
+ raise e
121
+ end
113
122
  ensure
123
+ enable_implicit_wait
114
124
  enable_wait_for_idle
115
125
  end
116
126
 
@@ -121,9 +131,8 @@ module TestaAppiumDriver
121
131
  # method missing is used to forward methods to the actual appium driver
122
132
  # after the method is executed, find element cache is invalidated
123
133
  def method_missing(method, *args, &block)
124
- r = @driver.send(method, *args, &block)
125
134
  invalidate_cache
126
- r
135
+ @driver.send(method, *args, &block)
127
136
  end
128
137
 
129
138
  # disables implicit wait
@@ -24,11 +24,13 @@ module TestaAppiumDriver
24
24
 
25
25
 
26
26
  # @return [Array] returns 2 elements. The first is the resolved find element strategy and the second is the resolved selector
27
- def strategy_and_selector
27
+ def strategies_and_selectors
28
+ ss = []
28
29
  if @can_use_id_strategy
29
- return FIND_STRATEGY_NAME, @can_use_id_strategy
30
+ ss.push({"#{FIND_STRATEGY_NAME}": @can_use_id_strategy})
30
31
  end
31
- [FIND_STRATEGY_XPATH, @xpath_selector]
32
+ ss.push({"#{FIND_STRATEGY_XPATH}": @xpath_selector})
33
+ ss
32
34
  end
33
35
 
34
36
 
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module TestaAppiumDriver
4
- VERSION = "0.1.5"
4
+ VERSION = "0.1.6"
5
5
  end
@@ -11,12 +11,12 @@
11
11
  <orderEntry type="sourceFolder" forTests="false" />
12
12
  <orderEntry type="library" scope="PROVIDED" name="appium_lib_core (v4.7.0, ruby-2.6.5-p114) [gem]" level="application" />
13
13
  <orderEntry type="library" scope="PROVIDED" name="ast (v2.4.2, ruby-2.6.5-p114) [gem]" level="application" />
14
- <orderEntry type="library" scope="PROVIDED" name="bundler (v2.1.4, ruby-2.6.5-p114) [gem]" level="application" />
14
+ <orderEntry type="library" scope="PROVIDED" name="bundler (v2.2.24, ruby-2.6.5-p114) [gem]" level="application" />
15
15
  <orderEntry type="library" scope="PROVIDED" name="childprocess (v3.0.0, ruby-2.6.5-p114) [gem]" level="application" />
16
16
  <orderEntry type="library" scope="PROVIDED" name="diff-lcs (v1.4.4, ruby-2.6.5-p114) [gem]" level="application" />
17
17
  <orderEntry type="library" scope="PROVIDED" name="eventmachine (v1.2.7, ruby-2.6.5-p114) [gem]" level="application" />
18
18
  <orderEntry type="library" scope="PROVIDED" name="faye-websocket (v0.11.1, ruby-2.6.5-p114) [gem]" level="application" />
19
- <orderEntry type="library" scope="PROVIDED" name="json (v2.1.0, ruby-2.6.5-p114) [gem]" level="application" />
19
+ <orderEntry type="library" scope="PROVIDED" name="json (v2.5.1, ruby-2.6.5-p114) [gem]" level="application" />
20
20
  <orderEntry type="library" scope="PROVIDED" name="parallel (v1.20.1, ruby-2.6.5-p114) [gem]" level="application" />
21
21
  <orderEntry type="library" scope="PROVIDED" name="parser (v3.0.2.0, ruby-2.6.5-p114) [gem]" level="application" />
22
22
  <orderEntry type="library" scope="PROVIDED" name="rainbow (v3.0.0, ruby-2.6.5-p114) [gem]" level="application" />
@@ -28,8 +28,8 @@
28
28
  <orderEntry type="library" scope="PROVIDED" name="rspec-expectations (v3.10.1, ruby-2.6.5-p114) [gem]" level="application" />
29
29
  <orderEntry type="library" scope="PROVIDED" name="rspec-mocks (v3.10.2, ruby-2.6.5-p114) [gem]" level="application" />
30
30
  <orderEntry type="library" scope="PROVIDED" name="rspec-support (v3.10.2, ruby-2.6.5-p114) [gem]" level="application" />
31
- <orderEntry type="library" scope="PROVIDED" name="rubocop (v1.19.0, ruby-2.6.5-p114) [gem]" level="application" />
32
- <orderEntry type="library" scope="PROVIDED" name="rubocop-ast (v1.10.0, ruby-2.6.5-p114) [gem]" level="application" />
31
+ <orderEntry type="library" scope="PROVIDED" name="rubocop (v1.20.0, ruby-2.6.5-p114) [gem]" level="application" />
32
+ <orderEntry type="library" scope="PROVIDED" name="rubocop-ast (v1.11.0, ruby-2.6.5-p114) [gem]" level="application" />
33
33
  <orderEntry type="library" scope="PROVIDED" name="ruby-progressbar (v1.11.0, ruby-2.6.5-p114) [gem]" level="application" />
34
34
  <orderEntry type="library" scope="PROVIDED" name="rubyzip (v2.3.2, ruby-2.6.5-p114) [gem]" level="application" />
35
35
  <orderEntry type="library" scope="PROVIDED" name="selenium-webdriver (v3.142.7, ruby-2.6.5-p114) [gem]" level="application" />
@@ -39,7 +39,41 @@
39
39
  </component>
40
40
  <component name="RakeTasksCache">
41
41
  <option name="myRootTask">
42
- <RakeTaskImpl id="rake" />
42
+ <RakeTaskImpl id="rake">
43
+ <subtasks>
44
+ <RakeTaskImpl description="Build testa_appium_driver-0.1.5.gem into the pkg directory" fullCommand="build" id="build" />
45
+ <RakeTaskImpl id="build">
46
+ <subtasks>
47
+ <RakeTaskImpl description="Generate SHA512 checksum if testa_appium_driver-0.1.5.gem into the checksums directory" fullCommand="build:checksum" id="checksum" />
48
+ </subtasks>
49
+ </RakeTaskImpl>
50
+ <RakeTaskImpl description="Remove any temporary products" fullCommand="clean" id="clean" />
51
+ <RakeTaskImpl description="Remove any generated files" fullCommand="clobber" id="clobber" />
52
+ <RakeTaskImpl description="Build and install testa_appium_driver-0.1.5.gem into system gems" fullCommand="install" id="install" />
53
+ <RakeTaskImpl id="install">
54
+ <subtasks>
55
+ <RakeTaskImpl description="Build and install testa_appium_driver-0.1.5.gem into system gems without network access" fullCommand="install:local" id="local" />
56
+ </subtasks>
57
+ </RakeTaskImpl>
58
+ <RakeTaskImpl description="Create tag v0.1.5 and build and push testa_appium_driver-0.1.5.gem to rubygems.org" fullCommand="release[remote]" id="release[remote]" />
59
+ <RakeTaskImpl description="Run RuboCop" fullCommand="rubocop" id="rubocop" />
60
+ <RakeTaskImpl id="rubocop">
61
+ <subtasks>
62
+ <RakeTaskImpl description="Auto-correct RuboCop offenses" fullCommand="rubocop:auto_correct" id="auto_correct" />
63
+ </subtasks>
64
+ </RakeTaskImpl>
65
+ <RakeTaskImpl description="Run RSpec code examples" fullCommand="spec" id="spec" />
66
+ <RakeTaskImpl description="" fullCommand="default" id="default" />
67
+ <RakeTaskImpl description="" fullCommand="release" id="release" />
68
+ <RakeTaskImpl id="release">
69
+ <subtasks>
70
+ <RakeTaskImpl description="" fullCommand="release:guard_clean" id="guard_clean" />
71
+ <RakeTaskImpl description="" fullCommand="release:rubygem_push" id="rubygem_push" />
72
+ <RakeTaskImpl description="" fullCommand="release:source_control_push" id="source_control_push" />
73
+ </subtasks>
74
+ </RakeTaskImpl>
75
+ </subtasks>
76
+ </RakeTaskImpl>
43
77
  </option>
44
78
  </component>
45
79
  </module>
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: testa_appium_driver
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.5
4
+ version: 0.1.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - karlo.razumovic
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-08-24 00:00:00.000000000 Z
11
+ date: 2021-09-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: appium_lib_core