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 +4 -4
- data/.idea/deployment.xml +10 -2
- data/.idea/sshConfigs.xml +3 -0
- data/.idea/webServers.xml +7 -0
- data/lib/testa_appium_driver/android/locator.rb +10 -6
- data/lib/testa_appium_driver/common/locator.rb +84 -17
- data/lib/testa_appium_driver/driver.rb +25 -16
- data/lib/testa_appium_driver/ios/locator.rb +5 -3
- data/lib/testa_appium_driver/version.rb +1 -1
- data/testa_appium_driver.iml +39 -5
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: eb79ce18b9e98f651e83630eff7efe2d71d77031231f88c04521e7d4f1baf483
|
4
|
+
data.tar.gz: 94d1b8a88844c8726b1b87cd500ca07842b7b92190df7ef223f2cac4f929c9d9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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
|
39
|
+
def strategies_and_selectors
|
40
|
+
ss = []
|
40
41
|
if @can_use_id_strategy
|
41
|
-
|
42
|
+
ss.push({"#{FIND_STRATEGY_ID}": @can_use_id_strategy})
|
42
43
|
end
|
43
|
-
if
|
44
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
115
|
-
until
|
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
|
-
|
128
|
-
while
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
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.
|
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:
|
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 [
|
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,
|
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
|
-
|
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] !=
|
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(
|
97
|
+
execute_result = from_element.find_element(ss)
|
94
98
|
else
|
95
|
-
execute_result = from_element.find_elements(
|
99
|
+
execute_result = from_element.find_elements(ss)
|
96
100
|
end
|
97
101
|
|
98
102
|
|
99
103
|
unless skip_cache
|
100
|
-
@cache[:selector] =
|
101
|
-
@cache[: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
|
-
|
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
|
-
|
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
|
27
|
+
def strategies_and_selectors
|
28
|
+
ss = []
|
28
29
|
if @can_use_id_strategy
|
29
|
-
|
30
|
+
ss.push({"#{FIND_STRATEGY_NAME}": @can_use_id_strategy})
|
30
31
|
end
|
31
|
-
|
32
|
+
ss.push({"#{FIND_STRATEGY_XPATH}": @xpath_selector})
|
33
|
+
ss
|
32
34
|
end
|
33
35
|
|
34
36
|
|
data/testa_appium_driver.iml
CHANGED
@@ -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.
|
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
|
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.
|
32
|
-
<orderEntry type="library" scope="PROVIDED" name="rubocop-ast (v1.
|
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.
|
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-
|
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
|