appium_lib 9.15.1 → 9.15.2
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/.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
|