appium_lib 9.15.1 → 9.15.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.rubocop.yml +13 -15
- data/CHANGELOG.md +8 -0
- data/appium_lib.gemspec +7 -10
- data/docs/android_docs.md +259 -181
- data/docs/ios_docs.md +322 -244
- data/docs/ios_xcuitest.md +1 -1
- data/docs/w3c.md +21 -0
- data/lib/appium_lib/android/common/helper.rb +13 -13
- data/lib/appium_lib/android/element/button.rb +2 -0
- data/lib/appium_lib/android/element/generic.rb +2 -2
- data/lib/appium_lib/android/element/text.rb +2 -0
- data/lib/appium_lib/android/element/textfield.rb +2 -0
- data/lib/appium_lib/android/uiautomator2/element/button.rb +3 -0
- data/lib/appium_lib/android/uiautomator2/helper.rb +10 -8
- data/lib/appium_lib/appium.rb +4 -0
- data/lib/appium_lib/common/helper.rb +9 -8
- data/lib/appium_lib/common/multi_touch.rb +2 -0
- data/lib/appium_lib/common/touch_actions.rb +6 -5
- data/lib/appium_lib/driver.rb +72 -19
- data/lib/appium_lib/ios/common/helper.rb +36 -30
- data/lib/appium_lib/ios/element/button.rb +2 -0
- data/lib/appium_lib/ios/element/generic.rb +1 -0
- data/lib/appium_lib/ios/element/text.rb +2 -0
- data/lib/appium_lib/ios/element/textfield.rb +5 -2
- data/lib/appium_lib/ios/xcuitest/command/gestures.rb +4 -4
- data/lib/appium_lib/ios/xcuitest/element/button.rb +2 -0
- data/lib/appium_lib/ios/xcuitest/element/generic.rb +1 -0
- data/lib/appium_lib/ios/xcuitest/element/text.rb +2 -0
- data/lib/appium_lib/ios/xcuitest/element/textfield.rb +3 -0
- data/lib/appium_lib/ios/xcuitest/helper.rb +3 -4
- data/lib/appium_lib/version.rb +2 -2
- data/release_notes.md +10 -0
- metadata +39 -53
@@ -6,6 +6,7 @@ module Appium
|
|
6
6
|
|
7
7
|
def start_element(type, attrs = [])
|
8
8
|
return if filter && !filter.eql?(type)
|
9
|
+
|
9
10
|
page = attrs.inject({}) do |hash, attr|
|
10
11
|
hash[attr[0]] = attr[1] if %w(name label value hint visible).include?(attr[0])
|
11
12
|
hash
|
@@ -15,19 +16,17 @@ module Appium
|
|
15
16
|
|
16
17
|
# @private
|
17
18
|
def _print_attr(type, name, label, value, hint, visible) # rubocop:disable Metrics/ParameterLists
|
19
|
+
puts type.to_s if name || label || value || hint || visible
|
20
|
+
|
18
21
|
if name == label && name == value
|
19
|
-
puts type.to_s if name || label || value || hint || visible
|
20
22
|
puts " name, label, value: #{name}" if name
|
21
23
|
elsif name == label
|
22
|
-
puts type.to_s if name || label || value || hint || visible
|
23
24
|
puts " name, label: #{name}" if name
|
24
25
|
puts " value: #{value}" if value
|
25
26
|
elsif name == value
|
26
|
-
puts type.to_s if name || label || value || hint || visible
|
27
27
|
puts " name, value: #{name}" if name
|
28
28
|
puts " label: #{label}" if label
|
29
29
|
else
|
30
|
-
puts type.to_s if name || label || value || hint || visible
|
31
30
|
puts " name: #{name}" if name
|
32
31
|
puts " label: #{label}" if label
|
33
32
|
puts " value: #{value}" if value
|
@@ -60,23 +59,23 @@ module Appium
|
|
60
59
|
def page(opts = {})
|
61
60
|
class_name = opts.is_a?(Hash) ? opts.fetch(:class, nil) : opts
|
62
61
|
|
62
|
+
source = get_source
|
63
|
+
|
63
64
|
# current_context may be nil which breaks start_with
|
64
65
|
if current_context && current_context.start_with?('WEBVIEW')
|
65
|
-
s = get_source
|
66
66
|
parser = @android_html_parser ||= Nokogiri::HTML::SAX::Parser.new(Appium::Common::HTMLElements.new)
|
67
67
|
parser.document.reset
|
68
68
|
parser.document.filter = class_name
|
69
|
-
parser.parse
|
69
|
+
parser.parse source
|
70
70
|
result = parser.document.result
|
71
71
|
puts result
|
72
72
|
result
|
73
73
|
else
|
74
|
-
s = get_source
|
75
74
|
parser = Nokogiri::XML::SAX::Parser.new(UITestElementsPrinter.new)
|
76
75
|
if class_name
|
77
76
|
parser.document.filter = class_name.is_a?(Symbol) ? class_name.to_s : class_name
|
78
77
|
end
|
79
|
-
parser.parse
|
78
|
+
parser.parse source
|
80
79
|
nil
|
81
80
|
end
|
82
81
|
end
|
@@ -94,6 +93,7 @@ module Appium
|
|
94
93
|
# @return [Element]
|
95
94
|
def ele_index(class_name, index)
|
96
95
|
raise 'Index must be >= 1' unless index == 'last()' || (index.is_a?(Integer) && index >= 1)
|
96
|
+
|
97
97
|
elements = tags(class_name)
|
98
98
|
|
99
99
|
if index == 'last()'
|
@@ -105,6 +105,7 @@ module Appium
|
|
105
105
|
end
|
106
106
|
|
107
107
|
raise _no_such_element if result.nil?
|
108
|
+
|
108
109
|
result
|
109
110
|
end
|
110
111
|
|
@@ -147,6 +148,7 @@ module Appium
|
|
147
148
|
def find_ele_by_predicate(class_name: '*', value:)
|
148
149
|
elements = find_eles_by_predicate(class_name: class_name, value: value)
|
149
150
|
raise _no_such_element if elements.empty?
|
151
|
+
|
150
152
|
elements.first
|
151
153
|
end
|
152
154
|
|
@@ -156,12 +158,12 @@ module Appium
|
|
156
158
|
# @param class_name [String] the tag name to match
|
157
159
|
# @return [Array<Element>]
|
158
160
|
def find_eles_by_predicate(class_name: '*', value:)
|
159
|
-
predicate =
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
|
161
|
+
predicate = if class_name == '*'
|
162
|
+
%(name ==[c] "#{value}" || label ==[c] "#{value}" || value ==[c] "#{value}")
|
163
|
+
else
|
164
|
+
%(type == "#{class_name}" && ) +
|
165
|
+
%((name ==[c] "#{value}" || label ==[c] "#{value}" || value ==[c] "#{value}"))
|
166
|
+
end
|
165
167
|
@driver.find_elements :predicate, predicate
|
166
168
|
end
|
167
169
|
|
@@ -192,6 +194,7 @@ module Appium
|
|
192
194
|
def find_ele_by_predicate_include(class_name: '*', value:)
|
193
195
|
elements = find_eles_by_predicate_include(class_name: class_name, value: value)
|
194
196
|
raise _no_such_element if elements.empty?
|
197
|
+
|
195
198
|
elements.first
|
196
199
|
end
|
197
200
|
|
@@ -280,17 +283,17 @@ module Appium
|
|
280
283
|
# @return [String]
|
281
284
|
def string_visible_contains(element, value)
|
282
285
|
contains = {
|
283
|
-
target:
|
284
|
-
substring:
|
286
|
+
target: value,
|
287
|
+
substring: true,
|
285
288
|
insensitive: true
|
286
289
|
}
|
287
290
|
|
288
291
|
{
|
289
|
-
typeArray:
|
292
|
+
typeArray: [element],
|
290
293
|
onlyVisible: true,
|
291
|
-
name:
|
292
|
-
label:
|
293
|
-
value:
|
294
|
+
name: contains,
|
295
|
+
label: contains,
|
296
|
+
value: contains
|
294
297
|
}
|
295
298
|
end
|
296
299
|
|
@@ -319,17 +322,17 @@ module Appium
|
|
319
322
|
# @return [String]
|
320
323
|
def string_visible_exact(element, value)
|
321
324
|
exact = {
|
322
|
-
target:
|
323
|
-
substring:
|
325
|
+
target: value,
|
326
|
+
substring: false,
|
324
327
|
insensitive: false
|
325
328
|
}
|
326
329
|
|
327
330
|
{
|
328
|
-
typeArray:
|
331
|
+
typeArray: [element],
|
329
332
|
onlyVisible: true,
|
330
|
-
name:
|
331
|
-
label:
|
332
|
-
value:
|
333
|
+
name: exact,
|
334
|
+
label: exact,
|
335
|
+
value: exact
|
333
336
|
}
|
334
337
|
end
|
335
338
|
|
@@ -359,6 +362,7 @@ module Appium
|
|
359
362
|
def _all_pred(opts)
|
360
363
|
predicate = opts[:predicate]
|
361
364
|
raise 'predicate must be provided' unless predicate
|
365
|
+
|
362
366
|
visible = opts.fetch :visible, true
|
363
367
|
%($.mainApp().getAllWithPredicate("#{predicate}", #{visible});)
|
364
368
|
end
|
@@ -386,10 +390,11 @@ module Appium
|
|
386
390
|
|
387
391
|
def _validate_object(*objects)
|
388
392
|
raise 'objects must be an array' unless objects.is_a? Array
|
393
|
+
|
389
394
|
objects.each do |obj|
|
390
395
|
next unless obj # obj may be nil. if so, ignore.
|
391
396
|
|
392
|
-
valid_keys = [
|
397
|
+
valid_keys = %i[target substring insensitive]
|
393
398
|
unknown_keys = obj.keys - valid_keys
|
394
399
|
raise "Unknown keys: #{unknown_keys}" unless unknown_keys.empty?
|
395
400
|
|
@@ -434,7 +439,7 @@ module Appium
|
|
434
439
|
# }
|
435
440
|
#
|
436
441
|
def _by_json(opts)
|
437
|
-
valid_keys
|
442
|
+
valid_keys = %i(typeArray onlyFirst onlyVisible name label value)
|
438
443
|
unknown_keys = opts.keys - valid_keys
|
439
444
|
raise "Unknown keys: #{unknown_keys}" unless unknown_keys.empty?
|
440
445
|
|
@@ -468,7 +473,7 @@ module Appium
|
|
468
473
|
JS
|
469
474
|
|
470
475
|
res = execute_script element_or_elements_by_type
|
471
|
-
res
|
476
|
+
res || raise(Appium::Ios::CommandError, 'mainWindow is nil')
|
472
477
|
end
|
473
478
|
|
474
479
|
# For Appium(automation name), not XCUITest
|
@@ -491,8 +496,9 @@ module Appium
|
|
491
496
|
# see eles_by_json
|
492
497
|
def ele_by_json(opts)
|
493
498
|
opts[:onlyFirst] = true
|
494
|
-
result
|
499
|
+
result = _by_json(opts).first
|
495
500
|
raise _no_such_element if result.nil?
|
501
|
+
|
496
502
|
result
|
497
503
|
end
|
498
504
|
end # module Ios
|
@@ -16,6 +16,7 @@ module Appium
|
|
16
16
|
def button(value)
|
17
17
|
# return button at index.
|
18
18
|
return ele_index button_class, value if value.is_a? Numeric
|
19
|
+
|
19
20
|
ele_by_json_visible_contains button_class, value
|
20
21
|
end
|
21
22
|
|
@@ -25,6 +26,7 @@ module Appium
|
|
25
26
|
# @return [Array<UIAButton|XCUIElementTypeButton>]
|
26
27
|
def buttons(value = false)
|
27
28
|
return tags button_class unless value
|
29
|
+
|
28
30
|
eles_by_json_visible_contains button_class, value
|
29
31
|
end
|
30
32
|
|
@@ -33,6 +33,7 @@ module Appium
|
|
33
33
|
def raise_error_if_no_element(element)
|
34
34
|
error_message = 'An element could not be located on the page using the given search parameters.'
|
35
35
|
raise(::Selenium::WebDriver::Error::NoSuchElementError, error_message) if element.nil?
|
36
|
+
|
36
37
|
element
|
37
38
|
end
|
38
39
|
|
@@ -15,6 +15,7 @@ module Appium
|
|
15
15
|
# @return [UIAStaticText|XCUIElementTypeStaticText]
|
16
16
|
def text(value)
|
17
17
|
return ele_index static_text_class, value if value.is_a? Numeric
|
18
|
+
|
18
19
|
ele_by_json_visible_contains static_text_class, value
|
19
20
|
end
|
20
21
|
|
@@ -24,6 +25,7 @@ module Appium
|
|
24
25
|
# @return [Array<UIAStaticText|XCUIElementTypeStaticText>]
|
25
26
|
def texts(value = false)
|
26
27
|
return tags static_text_class unless value
|
28
|
+
|
27
29
|
eles_by_json_visible_contains static_text_class, value
|
28
30
|
end
|
29
31
|
|
@@ -25,11 +25,12 @@ module Appium
|
|
25
25
|
if value.is_a? Numeric
|
26
26
|
index = value
|
27
27
|
raise "#{index} is not a valid index. Must be >= 1" if index <= 0
|
28
|
+
|
28
29
|
index -= 1 # eles_by_json and _textfields_with_predicate is 0 indexed.
|
29
30
|
result = eles_by_json(_textfield_visible)[index]
|
30
31
|
raise _no_such_element if result.nil?
|
31
|
-
return result
|
32
32
|
|
33
|
+
return result
|
33
34
|
end
|
34
35
|
|
35
36
|
ele_by_json _textfield_contains_string value
|
@@ -41,6 +42,7 @@ module Appium
|
|
41
42
|
# @return [Array<TextField>]
|
42
43
|
def textfields(value = false)
|
43
44
|
return eles_by_json _textfield_visible unless value
|
45
|
+
|
44
46
|
eles_by_json _textfield_contains_string value
|
45
47
|
end
|
46
48
|
|
@@ -55,6 +57,7 @@ module Appium
|
|
55
57
|
def last_textfield
|
56
58
|
result = eles_by_json(_textfield_visible).last
|
57
59
|
raise _no_such_element if result.nil?
|
60
|
+
|
58
61
|
result
|
59
62
|
end
|
60
63
|
|
@@ -82,7 +85,7 @@ module Appium
|
|
82
85
|
# Appium
|
83
86
|
def _textfield_exact_string(value)
|
84
87
|
exact = { target: value, substring: false, insensitive: false }
|
85
|
-
exact_obj = { name:
|
88
|
+
exact_obj = { name: exact, label: exact, value: exact }
|
86
89
|
_textfield_visible.merge(exact_obj)
|
87
90
|
end
|
88
91
|
|
@@ -36,7 +36,7 @@ module Appium
|
|
36
36
|
predicate_string: nil)
|
37
37
|
return 'Set "up", "down", "left" or "right" for :direction' unless %w(up down left right).include?(direction)
|
38
38
|
|
39
|
-
args =
|
39
|
+
args = { direction: direction }
|
40
40
|
args[:element] = element.ref if element
|
41
41
|
args[:distance] = distance if distance
|
42
42
|
args[:name] = name if name
|
@@ -68,7 +68,7 @@ module Appium
|
|
68
68
|
# double_tap x: 100, y: 100
|
69
69
|
# double_tap element: find_element(:accessibility_id, "some item")
|
70
70
|
# ```
|
71
|
-
def double_tap(x: nil, y: nil, element: nil)
|
71
|
+
def double_tap(x: nil, y: nil, element: nil) # rubocop:disable Naming/UncommunicativeMethodParamName
|
72
72
|
return 'Set x, y or element' if (x.nil? || y.nil?) && element.nil?
|
73
73
|
|
74
74
|
args = element.nil? ? { x: x, y: y } : { element: element.ref }
|
@@ -85,7 +85,7 @@ module Appium
|
|
85
85
|
# touch_and_hold x: 100, y: 100, duration: 2.0
|
86
86
|
# touch_and_hold element: find_element(:accessibility_id, "some item")
|
87
87
|
# ```
|
88
|
-
def touch_and_hold(x: nil, y: nil, element: nil, duration: 1.0)
|
88
|
+
def touch_and_hold(x: nil, y: nil, element: nil, duration: 1.0) # rubocop:disable Naming/UncommunicativeMethodParamName
|
89
89
|
return 'Set x, y or element' if (x.nil? || y.nil?) && element.nil?
|
90
90
|
|
91
91
|
args = element.nil? ? { x: x, y: y } : { element: element.ref }
|
@@ -113,7 +113,7 @@ module Appium
|
|
113
113
|
# tap x: 100, y: 100
|
114
114
|
# tap x: 100, y: 100, element: find_element(:accessibility_id, "some item")
|
115
115
|
# ```
|
116
|
-
def tap(x:, y:, element: nil)
|
116
|
+
def tap(x:, y:, element: nil) # rubocop:disable Naming/UncommunicativeMethodParamName
|
117
117
|
args = { x: x, y: y }
|
118
118
|
args[:element] = element.ref if element
|
119
119
|
@driver.execute_script 'mobile: tap', args
|
@@ -17,6 +17,7 @@ module Appium
|
|
17
17
|
def button(value)
|
18
18
|
# return button at index.
|
19
19
|
return ele_index button_class, value if value.is_a? Numeric
|
20
|
+
|
20
21
|
raise_error_if_no_element buttons(value).first
|
21
22
|
end
|
22
23
|
|
@@ -26,6 +27,7 @@ module Appium
|
|
26
27
|
# @return [Array<UIAButton|XCUIElementTypeButton>]
|
27
28
|
def buttons(value = false)
|
28
29
|
return tags button_class unless value
|
30
|
+
|
29
31
|
elements = find_eles_by_predicate_include(class_name: button_class, value: value)
|
30
32
|
select_visible_elements elements
|
31
33
|
end
|
@@ -37,6 +37,7 @@ module Appium
|
|
37
37
|
def raise_error_if_no_element(element)
|
38
38
|
error_message = 'An element could not be located on the page using the given search parameters.'
|
39
39
|
raise(::Selenium::WebDriver::Error::NoSuchElementError, error_message) if element.nil?
|
40
|
+
|
40
41
|
element
|
41
42
|
end
|
42
43
|
|
@@ -16,6 +16,7 @@ module Appium
|
|
16
16
|
# @return [UIAStaticText|XCUIElementTypeStaticText]
|
17
17
|
def text(value)
|
18
18
|
return ele_index static_text_class, value if value.is_a? Numeric
|
19
|
+
|
19
20
|
raise_error_if_no_element texts(value).first
|
20
21
|
end
|
21
22
|
|
@@ -25,6 +26,7 @@ module Appium
|
|
25
26
|
# @return [Array<UIAStaticText|XCUIElementTypeStaticText>]
|
26
27
|
def texts(value = false)
|
27
28
|
return tags static_text_class unless value
|
29
|
+
|
28
30
|
elements = find_eles_by_predicate_include(class_name: static_text_class, value: value)
|
29
31
|
select_visible_elements elements
|
30
32
|
end
|
@@ -24,9 +24,11 @@ module Appium
|
|
24
24
|
if value.is_a? Numeric
|
25
25
|
index = value
|
26
26
|
raise "#{index} is not a valid index. Must be >= 1" if index <= 0
|
27
|
+
|
27
28
|
index -= 1 # eles_by_json and _textfields_with_predicate is 0 indexed.
|
28
29
|
result = _textfields_with_predicate[index]
|
29
30
|
raise _no_such_element if result.nil?
|
31
|
+
|
30
32
|
return result
|
31
33
|
|
32
34
|
end
|
@@ -56,6 +58,7 @@ module Appium
|
|
56
58
|
def last_textfield
|
57
59
|
result = _textfields_with_predicate.last
|
58
60
|
raise _no_such_element if result.nil?
|
61
|
+
|
59
62
|
result
|
60
63
|
end
|
61
64
|
|
@@ -26,6 +26,7 @@ module Appium
|
|
26
26
|
def last_ele(class_name)
|
27
27
|
visible_elements = tags class_name
|
28
28
|
raise _no_such_element if visible_elements.empty?
|
29
|
+
|
29
30
|
visible_elements.last
|
30
31
|
end
|
31
32
|
|
@@ -59,8 +60,7 @@ module Appium
|
|
59
60
|
c_names = class_names.map { |class_name| %(type == "#{class_name}") }.join(' || ')
|
60
61
|
|
61
62
|
predicate = if value
|
62
|
-
%((#{c_names}) && )
|
63
|
-
%((name contains[c] "#{value}" || label contains[c] "#{value}" || value contains[c] "#{value}"))
|
63
|
+
%((#{c_names}) && (name contains[c] "#{value}" || label contains[c] "#{value}" || value contains[c] "#{value}")) # rubocop:disable Metrics/LineLength
|
64
64
|
else
|
65
65
|
c_names
|
66
66
|
end
|
@@ -82,8 +82,7 @@ module Appium
|
|
82
82
|
c_names = class_names.map { |class_name| %(type == "#{class_name}") }.join(' || ')
|
83
83
|
|
84
84
|
predicate = if value
|
85
|
-
%((#{c_names}) && )
|
86
|
-
%((name ==[c] "#{value}" || label ==[c] "#{value}" || value ==[c] "#{value}"))
|
85
|
+
%((#{c_names}) && (name ==[c] "#{value}" || label ==[c] "#{value}" || value ==[c] "#{value}"))
|
87
86
|
else
|
88
87
|
c_names
|
89
88
|
end
|
data/lib/appium_lib/version.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
module Appium
|
2
2
|
# Version and Date are defined on the 'Appium' module, not 'Appium::Common'
|
3
|
-
VERSION = '9.15.
|
4
|
-
DATE = '2018-
|
3
|
+
VERSION = '9.15.2'.freeze unless defined? ::Appium::VERSION
|
4
|
+
DATE = '2018-11-07'.freeze unless defined? ::Appium::DATE
|
5
5
|
end
|
data/release_notes.md
CHANGED
@@ -1,3 +1,13 @@
|
|
1
|
+
#### v9.15.1 2018-08-27
|
2
|
+
|
3
|
+
- [14d1835](https://github.com/appium/ruby_lib/commit/14d1835fc2d8385af5b8b4489d6b6bb077e510e4) [Release 9 15 1 (#817)](https://github.com/appium/ruby_lib/issues/817)
|
4
|
+
- [5f6c18e](https://github.com/appium/ruby_lib/commit/5f6c18ed9774fe027ee748e812ff91ee6d15a130) [Add extend core (#816)](https://github.com/appium/ruby_lib/issues/816)
|
5
|
+
- [c6e5321](https://github.com/appium/ruby_lib/commit/c6e532186b7552212ba61ab2e351dba247a35312) [Tweak gemspec (#814)](https://github.com/appium/ruby_lib/issues/814)
|
6
|
+
- [2864eec](https://github.com/appium/ruby_lib/commit/2864eec1d05fb69a461c37e4295f159aebe406ca) [add tests and tweak helpers which handle xml (#813)](https://github.com/appium/ruby_lib/issues/813)
|
7
|
+
- [e04afe9](https://github.com/appium/ruby_lib/commit/e04afe92dbe6ea38773c234deb97cb4a7f8ffdd2) [Revert "Use ::REXML::Document by default in CountElements (#811)" (#812)](https://github.com/appium/ruby_lib/issues/811)
|
8
|
+
- [1dcc665](https://github.com/appium/ruby_lib/commit/1dcc6650974a57369cc6b087b577cc1146bdaa1f) [Use ::REXML::Document by default in CountElements (#811)](https://github.com/appium/ruby_lib/issues/811)
|
9
|
+
|
10
|
+
|
1
11
|
#### v9.15.0 2018-08-10
|
2
12
|
|
3
13
|
- [b09ea84](https://github.com/appium/ruby_lib/commit/b09ea848cc595d8d3ef6494e0a26770521b9432c) [Release 9 15 0 (#810)](https://github.com/appium/ruby_lib/issues/810)
|
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: 9.15.
|
4
|
+
version: 9.15.2
|
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: 2018-
|
12
|
+
date: 2018-11-07 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: appium_lib_core
|
@@ -25,20 +25,6 @@ dependencies:
|
|
25
25
|
- - "~>"
|
26
26
|
- !ruby/object:Gem::Version
|
27
27
|
version: 2.0.0
|
28
|
-
- !ruby/object:Gem::Dependency
|
29
|
-
name: tomlrb
|
30
|
-
requirement: !ruby/object:Gem::Requirement
|
31
|
-
requirements:
|
32
|
-
- - "~>"
|
33
|
-
- !ruby/object:Gem::Version
|
34
|
-
version: '1.1'
|
35
|
-
type: :runtime
|
36
|
-
prerelease: false
|
37
|
-
version_requirements: !ruby/object:Gem::Requirement
|
38
|
-
requirements:
|
39
|
-
- - "~>"
|
40
|
-
- !ruby/object:Gem::Version
|
41
|
-
version: '1.1'
|
42
28
|
- !ruby/object:Gem::Dependency
|
43
29
|
name: nokogiri
|
44
30
|
requirement: !ruby/object:Gem::Requirement
|
@@ -60,137 +46,137 @@ dependencies:
|
|
60
46
|
- !ruby/object:Gem::Version
|
61
47
|
version: 1.8.1
|
62
48
|
- !ruby/object:Gem::Dependency
|
63
|
-
name:
|
49
|
+
name: tomlrb
|
64
50
|
requirement: !ruby/object:Gem::Requirement
|
65
51
|
requirements:
|
66
52
|
- - "~>"
|
67
53
|
- !ruby/object:Gem::Version
|
68
|
-
version: '
|
69
|
-
type: :
|
54
|
+
version: '1.1'
|
55
|
+
type: :runtime
|
70
56
|
prerelease: false
|
71
57
|
version_requirements: !ruby/object:Gem::Requirement
|
72
58
|
requirements:
|
73
59
|
- - "~>"
|
74
60
|
- !ruby/object:Gem::Version
|
75
|
-
version: '
|
61
|
+
version: '1.1'
|
76
62
|
- !ruby/object:Gem::Dependency
|
77
|
-
name:
|
63
|
+
name: fakefs
|
78
64
|
requirement: !ruby/object:Gem::Requirement
|
79
65
|
requirements:
|
80
66
|
- - "~>"
|
81
67
|
- !ruby/object:Gem::Version
|
82
|
-
version: 0.
|
68
|
+
version: 0.13.0
|
83
69
|
type: :development
|
84
70
|
prerelease: false
|
85
71
|
version_requirements: !ruby/object:Gem::Requirement
|
86
72
|
requirements:
|
87
73
|
- - "~>"
|
88
74
|
- !ruby/object:Gem::Version
|
89
|
-
version: 0.
|
75
|
+
version: 0.13.0
|
90
76
|
- !ruby/object:Gem::Dependency
|
91
|
-
name:
|
77
|
+
name: hashdiff
|
92
78
|
requirement: !ruby/object:Gem::Requirement
|
93
79
|
requirements:
|
94
80
|
- - "~>"
|
95
81
|
- !ruby/object:Gem::Version
|
96
|
-
version:
|
97
|
-
- - ">="
|
98
|
-
- !ruby/object:Gem::Version
|
99
|
-
version: 5.3.4
|
82
|
+
version: 0.3.7
|
100
83
|
type: :development
|
101
84
|
prerelease: false
|
102
85
|
version_requirements: !ruby/object:Gem::Requirement
|
103
86
|
requirements:
|
104
87
|
- - "~>"
|
105
88
|
- !ruby/object:Gem::Version
|
106
|
-
version:
|
107
|
-
- - ">="
|
108
|
-
- !ruby/object:Gem::Version
|
109
|
-
version: 5.3.4
|
89
|
+
version: 0.3.7
|
110
90
|
- !ruby/object:Gem::Dependency
|
111
|
-
name:
|
91
|
+
name: posix-spawn
|
112
92
|
requirement: !ruby/object:Gem::Requirement
|
113
93
|
requirements:
|
114
94
|
- - "~>"
|
115
95
|
- !ruby/object:Gem::Version
|
116
|
-
version: 0.
|
96
|
+
version: '0.3'
|
117
97
|
type: :development
|
118
98
|
prerelease: false
|
119
99
|
version_requirements: !ruby/object:Gem::Requirement
|
120
100
|
requirements:
|
121
101
|
- - "~>"
|
122
102
|
- !ruby/object:Gem::Version
|
123
|
-
version: 0.
|
103
|
+
version: '0.3'
|
124
104
|
- !ruby/object:Gem::Dependency
|
125
|
-
name:
|
105
|
+
name: pry
|
126
106
|
requirement: !ruby/object:Gem::Requirement
|
127
107
|
requirements:
|
128
|
-
- - "
|
108
|
+
- - ">="
|
129
109
|
- !ruby/object:Gem::Version
|
130
|
-
version: '
|
110
|
+
version: '0'
|
131
111
|
type: :development
|
132
112
|
prerelease: false
|
133
113
|
version_requirements: !ruby/object:Gem::Requirement
|
134
114
|
requirements:
|
135
|
-
- - "
|
115
|
+
- - ">="
|
136
116
|
- !ruby/object:Gem::Version
|
137
|
-
version: '
|
117
|
+
version: '0'
|
138
118
|
- !ruby/object:Gem::Dependency
|
139
|
-
name:
|
119
|
+
name: rake
|
140
120
|
requirement: !ruby/object:Gem::Requirement
|
141
121
|
requirements:
|
142
122
|
- - "~>"
|
143
123
|
- !ruby/object:Gem::Version
|
144
|
-
version: 0
|
124
|
+
version: '12.0'
|
145
125
|
type: :development
|
146
126
|
prerelease: false
|
147
127
|
version_requirements: !ruby/object:Gem::Requirement
|
148
128
|
requirements:
|
149
129
|
- - "~>"
|
150
130
|
- !ruby/object:Gem::Version
|
151
|
-
version: 0
|
131
|
+
version: '12.0'
|
152
132
|
- !ruby/object:Gem::Dependency
|
153
133
|
name: rubocop
|
154
134
|
requirement: !ruby/object:Gem::Requirement
|
155
135
|
requirements:
|
156
136
|
- - "~>"
|
157
137
|
- !ruby/object:Gem::Version
|
158
|
-
version: 0.
|
138
|
+
version: 0.60.0
|
159
139
|
type: :development
|
160
140
|
prerelease: false
|
161
141
|
version_requirements: !ruby/object:Gem::Requirement
|
162
142
|
requirements:
|
163
143
|
- - "~>"
|
164
144
|
- !ruby/object:Gem::Version
|
165
|
-
version: 0.
|
145
|
+
version: 0.60.0
|
166
146
|
- !ruby/object:Gem::Dependency
|
167
|
-
name:
|
147
|
+
name: spec
|
168
148
|
requirement: !ruby/object:Gem::Requirement
|
169
149
|
requirements:
|
170
150
|
- - "~>"
|
171
151
|
- !ruby/object:Gem::Version
|
172
|
-
version:
|
152
|
+
version: '5.3'
|
153
|
+
- - ">="
|
154
|
+
- !ruby/object:Gem::Version
|
155
|
+
version: 5.3.4
|
173
156
|
type: :development
|
174
157
|
prerelease: false
|
175
158
|
version_requirements: !ruby/object:Gem::Requirement
|
176
159
|
requirements:
|
177
160
|
- - "~>"
|
178
161
|
- !ruby/object:Gem::Version
|
179
|
-
version:
|
162
|
+
version: '5.3'
|
163
|
+
- - ">="
|
164
|
+
- !ruby/object:Gem::Version
|
165
|
+
version: 5.3.4
|
180
166
|
- !ruby/object:Gem::Dependency
|
181
|
-
name:
|
167
|
+
name: yard
|
182
168
|
requirement: !ruby/object:Gem::Requirement
|
183
169
|
requirements:
|
184
|
-
- - "
|
170
|
+
- - "~>"
|
185
171
|
- !ruby/object:Gem::Version
|
186
|
-
version:
|
172
|
+
version: 0.9.11
|
187
173
|
type: :development
|
188
174
|
prerelease: false
|
189
175
|
version_requirements: !ruby/object:Gem::Requirement
|
190
176
|
requirements:
|
191
|
-
- - "
|
177
|
+
- - "~>"
|
192
178
|
- !ruby/object:Gem::Version
|
193
|
-
version:
|
179
|
+
version: 0.9.11
|
194
180
|
description: Ruby library for Appium.
|
195
181
|
email:
|
196
182
|
- code@bootstraponline.com
|