testa_appium_driver 0.1.13 → 0.1.16
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/.gitattributes +23 -0
- data/.gitignore +2 -3
- data/.rubocop.yml +5 -13
- data/Gemfile +1 -1
- data/Gemfile.lock +76 -0
- data/appium-driver.iml +74 -0
- data/lib/testa_appium_driver/android/class_selectors.rb +7 -7
- data/lib/testa_appium_driver/android/driver.rb +1 -0
- data/lib/testa_appium_driver/android/locator/attributes.rb +29 -25
- data/lib/testa_appium_driver/android/locator.rb +1 -1
- data/lib/testa_appium_driver/android/selenium_element.rb +6 -2
- data/lib/testa_appium_driver/common/constants.rb +2 -1
- data/lib/testa_appium_driver/common/locator/scroll_actions.rb +33 -33
- data/lib/testa_appium_driver/common/locator.rb +66 -78
- data/lib/testa_appium_driver/common/scroll_actions/json_wire_scroll_actions.rb +1 -1
- data/lib/testa_appium_driver/common/scroll_actions/w3c_scroll_actions.rb +87 -20
- data/lib/testa_appium_driver/common/scroll_actions.rb +43 -23
- data/lib/testa_appium_driver/common/selenium_element.rb +2 -2
- data/lib/testa_appium_driver/driver.rb +41 -20
- data/lib/testa_appium_driver/ios/locator/attributes.rb +24 -20
- data/lib/testa_appium_driver/ios/locator.rb +1 -0
- data/lib/testa_appium_driver/ios/selenium_element.rb +3 -2
- data/lib/testa_appium_driver/ios/type_selectors.rb +2 -2
- data/lib/testa_appium_driver/version.rb +1 -1
- data/testa_appium_driver.gemspec +2 -2
- metadata +11 -18
- data/.idea/deployment.xml +0 -22
- data/.idea/inspectionProfiles/Project_Default.xml +0 -9
- data/.idea/misc.xml +0 -6
- data/.idea/modules.xml +0 -8
- data/.idea/runConfigurations/Android_Test.xml +0 -42
- data/.idea/runConfigurations.xml +0 -10
- data/.idea/sshConfigs.xml +0 -13
- data/.idea/vcs.xml +0 -6
- data/.idea/webServers.xml +0 -21
- data/testa_appium_driver.iml +0 -41
@@ -1,10 +1,14 @@
|
|
1
1
|
require_relative 'scroll_actions/json_wire_scroll_actions'
|
2
2
|
require_relative 'scroll_actions/w3c_scroll_actions'
|
3
3
|
|
4
|
-
module TestaAppiumDriver
|
4
|
+
module ::TestaAppiumDriver
|
5
5
|
|
6
6
|
# Class for handling scroll actions
|
7
7
|
class ScrollActions
|
8
|
+
include W3cScrollActions
|
9
|
+
include JsonWireScrollActions
|
10
|
+
|
11
|
+
attr_accessor :locator
|
8
12
|
# @param [TestaAppiumDriver::Locator, nil] scrollable container that will be used to determine the bounds for scrolling
|
9
13
|
# @param [Hash] params
|
10
14
|
# acceptable params
|
@@ -15,6 +19,7 @@ module TestaAppiumDriver
|
|
15
19
|
def initialize(scrollable, params = {})
|
16
20
|
@scrollable = scrollable
|
17
21
|
@locator = params[:locator]
|
22
|
+
# TODO: raise error if locator is for multiple, but not for scroll each, chekc other cases aswell
|
18
23
|
@deadzone = params[:deadzone]
|
19
24
|
@max_scrolls = params[:max_scrolls]
|
20
25
|
@default_scroll_strategy = params[:default_scroll_strategy]
|
@@ -36,8 +41,8 @@ module TestaAppiumDriver
|
|
36
41
|
@bounds = @scrollable.bounds
|
37
42
|
end
|
38
43
|
|
39
|
-
def align(with, scroll_to_find)
|
40
|
-
w3c_align(with, scroll_to_find)
|
44
|
+
def align(with, scroll_to_find, max_attempts)
|
45
|
+
w3c_align(with, scroll_to_find, max_attempts)
|
41
46
|
@locator
|
42
47
|
end
|
43
48
|
|
@@ -195,12 +200,43 @@ module TestaAppiumDriver
|
|
195
200
|
w3c_drag_to(x0, y0, x1, y1)
|
196
201
|
end
|
197
202
|
|
198
|
-
|
203
|
+
|
204
|
+
def is_aligned?(with, element)
|
205
|
+
align_bounds = @locator.bounds(force_cache_element: element)
|
206
|
+
case with
|
207
|
+
when :top
|
208
|
+
@align_offset = align_bounds.top_left.y - @bounds.top_left.y - @deadzone[:top]
|
209
|
+
when :bottom
|
210
|
+
@align_offset = @bounds.bottom_right.y - @deadzone[:bottom] - align_bounds.bottom_right.y
|
211
|
+
when :right
|
212
|
+
@align_offset = @bounds.bottom_right.x - @deadzone[:right] - align_bounds.bottom_right.x
|
213
|
+
when :left
|
214
|
+
@align_offset = align_bounds.top_left.x - @bounds.top_left.x - @deadzone[:left]
|
215
|
+
else
|
216
|
+
raise "Unsupported align with option: #{with}"
|
217
|
+
end
|
218
|
+
@align_offset < SCROLL_ALIGNMENT_THRESHOLD
|
219
|
+
end
|
220
|
+
|
221
|
+
|
199
222
|
|
200
223
|
def is_end_of_scroll?
|
201
|
-
|
202
|
-
|
203
|
-
|
224
|
+
if @driver.device == :android
|
225
|
+
# $__ctx.puts "end_of_scroll?"
|
226
|
+
# $__ctx.puts "old: #{@previous_elements}"
|
227
|
+
# $__ctx.puts "device: #{@driver.device}"
|
228
|
+
|
229
|
+
old_elements = @previous_elements
|
230
|
+
@previous_elements = @scrollable.first_and_last_leaf
|
231
|
+
# $__ctx.puts "new: #{@previous_elements}"
|
232
|
+
|
233
|
+
old_elements == @previous_elements
|
234
|
+
else
|
235
|
+
# for is, check location of first and last elements
|
236
|
+
old_elements = @previous_elements
|
237
|
+
@previous_elements = @scrollable.first_and_last_child&.map(&:location)
|
238
|
+
old_elements == @previous_elements
|
239
|
+
end
|
204
240
|
end
|
205
241
|
|
206
242
|
def default_deadzone!
|
@@ -227,21 +263,5 @@ module TestaAppiumDriver
|
|
227
263
|
end
|
228
264
|
end
|
229
265
|
|
230
|
-
def is_aligned?(with, element)
|
231
|
-
align_bounds = @locator.bounds(force_cache_element: element)
|
232
|
-
case with
|
233
|
-
when :top
|
234
|
-
@align_offset = align_bounds.top_left.y - @bounds.top_left.y + @deadzone[:top]
|
235
|
-
when :bottom
|
236
|
-
@align_offset = @bounds.bottom_right.y - @deadzone[:bottom] - align_bounds.bottom_right.y
|
237
|
-
when :right
|
238
|
-
@align_offset = @bounds.bottom_right.x - @deadzone[:right] - align_bounds.bottom_right.x
|
239
|
-
when :left
|
240
|
-
@align_offset = align_bounds.top_left.x - @bounds.top_left.x + @deadzone[:left]
|
241
|
-
else
|
242
|
-
raise "Unsupported align with option: #{with}"
|
243
|
-
end
|
244
|
-
@align_offset < SCROLL_ALIGNMENT_THRESHOLD
|
245
|
-
end
|
246
266
|
end
|
247
267
|
end
|
@@ -1,6 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require 'em/pure_ruby'
|
3
|
+
#require 'em/pure_ruby'
|
4
4
|
require 'appium_lib_core'
|
5
5
|
|
6
6
|
require_relative 'common/bounds'
|
@@ -10,7 +10,7 @@ require_relative 'common/locator'
|
|
10
10
|
require_relative 'common/scroll_actions'
|
11
11
|
require_relative 'common/selenium_element'
|
12
12
|
|
13
|
-
module TestaAppiumDriver
|
13
|
+
module ::TestaAppiumDriver
|
14
14
|
class Driver
|
15
15
|
include Helpers
|
16
16
|
|
@@ -27,25 +27,24 @@ module TestaAppiumDriver
|
|
27
27
|
# - default_find_strategy: default strategy to be used for finding elements. Available strategies :uiautomator or :xpath
|
28
28
|
# - default_scroll_strategy: default strategy to be used for scrolling. Available strategies: :uiautomator(android only), :w3c
|
29
29
|
def initialize(opts = {})
|
30
|
-
opts[:shouldEnforceXpath1] = false
|
31
30
|
|
32
31
|
@testa_opts = opts[:testa_appium_driver] || {}
|
33
32
|
|
34
33
|
core = Appium::Core.for(opts)
|
35
|
-
|
36
|
-
@
|
37
|
-
@
|
34
|
+
@driver = core.start_driver
|
35
|
+
@automation_name = @driver.capabilities["automationName"].downcase.to_sym
|
36
|
+
@device = @driver.capabilities.platform_name.downcase.to_sym
|
37
|
+
|
38
|
+
extend_for(@device, @automation_name)
|
38
39
|
|
39
40
|
handle_testa_opts
|
40
41
|
|
41
|
-
@driver = core.start_driver
|
42
42
|
invalidate_cache
|
43
43
|
|
44
|
+
#disable_wait_for_idle
|
45
|
+
#disable_implicit_wait
|
44
46
|
|
45
|
-
|
46
|
-
disable_implicit_wait
|
47
|
-
|
48
|
-
Selenium::WebDriver::Element.set_driver(self, opts[:caps][:udid])
|
47
|
+
::Appium::Core::Element.set_driver(self, @driver.capabilities["udid"])
|
49
48
|
end
|
50
49
|
|
51
50
|
|
@@ -84,7 +83,11 @@ module TestaAppiumDriver
|
|
84
83
|
from_element_id = from_element.instance_of?(TestaAppiumDriver::Locator) ? from_element.strategies_and_selectors : nil
|
85
84
|
|
86
85
|
begin
|
86
|
+
begin
|
87
87
|
ss = strategies_and_selectors[ss_index % strategies_and_selectors.count]
|
88
|
+
rescue ZeroDivisionError
|
89
|
+
puts "aa"
|
90
|
+
end
|
88
91
|
ss_index +=1
|
89
92
|
|
90
93
|
puts "Executing #{from_element_id ? "from #{from_element.strategy}: #{from_element.strategies_and_selectors} => " : ""}#{ss.keys[0]}: #{ss.values[0]}"
|
@@ -153,7 +156,7 @@ module TestaAppiumDriver
|
|
153
156
|
@implicit_wait_ms = @implicit_wait_ms/1000 if @implicit_wait_ms > 100000
|
154
157
|
@implicit_wait_uiautomator_ms = @driver.get_settings["waitForSelectorTimeout"]
|
155
158
|
@driver.manage.timeouts.implicit_wait = 0
|
156
|
-
@driver.update_settings({waitForSelectorTimeout:
|
159
|
+
@driver.update_settings({waitForSelectorTimeout: 0})
|
157
160
|
end
|
158
161
|
|
159
162
|
|
@@ -246,26 +249,28 @@ module TestaAppiumDriver
|
|
246
249
|
@driver.long_press_keycode(code)
|
247
250
|
end
|
248
251
|
|
249
|
-
def click(x, y)
|
252
|
+
def click(x, y, double: false)
|
250
253
|
ws = driver.window_size
|
251
254
|
window_width = ws.width.to_i
|
252
255
|
window_height = ws.height.to_i
|
253
|
-
if x.kind_of?
|
256
|
+
if x.kind_of?(Integer)
|
254
257
|
if x < 0
|
255
258
|
x = window_width + x
|
256
259
|
end
|
257
|
-
elsif x.kind_of?
|
260
|
+
elsif x.kind_of?(Float) && x <= 1.0 && x >= 0
|
258
261
|
x = window_width*x
|
259
262
|
else
|
260
|
-
raise "x value #{x} not supported"
|
263
|
+
raise "x value #{x} not supported. Use integer as pixel or float (0..1) as percentage of screen"
|
261
264
|
end
|
262
265
|
|
263
|
-
if y.kind_of?
|
266
|
+
if y.kind_of?(Integer)
|
264
267
|
if y < 0
|
265
268
|
y = window_height + y
|
266
269
|
end
|
267
|
-
elsif y.kind_of?
|
270
|
+
elsif y.kind_of?(Float) && y <= 1.0 && y >= 0
|
268
271
|
y = window_height*y
|
272
|
+
else
|
273
|
+
raise "y value #{x} not supported. Use integer as pixel or float (0..1) as percentage of screen"
|
269
274
|
end
|
270
275
|
|
271
276
|
|
@@ -274,24 +279,40 @@ module TestaAppiumDriver
|
|
274
279
|
f1.create_pointer_move(duration: 0, x: x, y: y, origin: ::Selenium::WebDriver::Interactions::PointerMove::VIEWPORT)
|
275
280
|
f1.create_pointer_down(:left)
|
276
281
|
f1.create_pointer_up(:left)
|
282
|
+
if double
|
283
|
+
f1.create_pause(0.1)
|
284
|
+
f1.create_pointer_down(:left)
|
285
|
+
f1.create_pointer_up(:left)
|
286
|
+
end
|
277
287
|
@driver.perform_actions [f1]
|
278
288
|
end
|
279
289
|
|
290
|
+
def double_click(x,y)
|
291
|
+
click(x,y, double: true)
|
292
|
+
end
|
293
|
+
|
280
294
|
|
281
295
|
|
282
296
|
# @return [Array<Selenium::WebDriver::Element] array of 2 elements, the first element without children and the last element without children in the current page
|
283
297
|
def first_and_last_leaf(from_element = @driver)
|
284
|
-
elements = from_element.find_elements(xpath: "
|
298
|
+
elements = from_element.find_elements(xpath: ".//*[not(*)]")
|
285
299
|
return nil if elements.count == 0
|
286
300
|
[elements[0], elements[-1]]
|
287
301
|
end
|
288
302
|
|
303
|
+
def first_and_last_child(from_element = @driver)
|
304
|
+
elements = from_element.find_elements(xpath: "./*")
|
305
|
+
return nil if elements.count == 0
|
306
|
+
|
307
|
+
[elements[0], elements[-1]]
|
308
|
+
end
|
309
|
+
|
289
310
|
private
|
290
311
|
def extend_for(device, automation_name)
|
291
312
|
case device
|
292
313
|
when :android
|
293
314
|
case automation_name
|
294
|
-
when :uiautomator2
|
315
|
+
when :uiautomator2, :espresso, :Espresso
|
295
316
|
require_relative 'android/driver'
|
296
317
|
else
|
297
318
|
raise "Testa appium driver not supported for #{automation_name} automation"
|
@@ -2,10 +2,17 @@ module TestaAppiumDriver
|
|
2
2
|
module Attributes
|
3
3
|
|
4
4
|
#noinspection RubyNilAnalysis
|
5
|
-
def
|
6
|
-
elements = execute(*args)
|
5
|
+
def testa_attribute(name, *args)
|
7
6
|
|
8
|
-
if
|
7
|
+
if self.instance_of?(::Selenium::WebDriver::Element) || self.instance_of?(::Appium::Core::Element)
|
8
|
+
@driver = get_driver
|
9
|
+
elements = self
|
10
|
+
else
|
11
|
+
elements = execute(*args)
|
12
|
+
end
|
13
|
+
|
14
|
+
|
15
|
+
if elements.instance_of?(::Selenium::WebDriver::Element) || elements.instance_of?(::Appium::Core::Element)
|
9
16
|
r = elements.send(:attribute, name.to_s)
|
10
17
|
r = TestaAppiumDriver::Bounds.from_ios(r, @driver) if name.to_s == "rect"
|
11
18
|
else
|
@@ -17,65 +24,62 @@ module TestaAppiumDriver
|
|
17
24
|
|
18
25
|
|
19
26
|
def accessibility_container(*args)
|
20
|
-
|
27
|
+
testa_attribute("accessibilityContainer", *args)
|
21
28
|
end
|
22
29
|
|
23
30
|
def accessible?(*args)
|
24
|
-
|
31
|
+
testa_attribute("accessible", *args).to_s == "true"
|
25
32
|
end
|
26
33
|
|
27
34
|
|
28
35
|
def class_name(*args)
|
29
|
-
|
36
|
+
testa_attribute("class", *args)
|
30
37
|
end
|
31
38
|
|
32
39
|
def enabled?(*args)
|
33
|
-
|
40
|
+
testa_attribute("enabled", *args).to_s == "true"
|
34
41
|
end
|
35
42
|
|
36
43
|
def frame(*args)
|
37
|
-
|
44
|
+
testa_attribute("frame", *args)
|
38
45
|
end
|
39
46
|
|
40
47
|
def index(*args)
|
41
|
-
|
48
|
+
testa_attribute("index", *args)
|
42
49
|
end
|
43
50
|
|
44
51
|
def label(*args)
|
45
|
-
|
52
|
+
testa_attribute("label", *args)
|
46
53
|
end
|
47
54
|
|
48
55
|
def name(*args)
|
49
|
-
|
56
|
+
testa_attribute("name", *args)
|
50
57
|
end
|
51
58
|
|
52
59
|
|
53
60
|
def rect(*args)
|
54
|
-
|
61
|
+
testa_attribute("rect", *args)
|
55
62
|
end
|
56
63
|
|
57
64
|
def selected?(*args)
|
58
|
-
|
65
|
+
testa_attribute("selected", *args).to_s == "true"
|
59
66
|
end
|
60
67
|
|
61
68
|
def type(*args)
|
62
|
-
|
69
|
+
testa_attribute("type", *args)
|
63
70
|
end
|
64
71
|
|
65
72
|
def value(*args)
|
66
|
-
|
73
|
+
testa_attribute("value", *args)
|
67
74
|
end
|
68
75
|
|
69
76
|
def visible?(*args)
|
70
|
-
|
77
|
+
testa_attribute("visible", *args).to_s == "true"
|
71
78
|
end
|
72
79
|
|
73
80
|
|
74
81
|
alias_method :bounds, :rect
|
75
82
|
alias_method :text, :label
|
76
83
|
end
|
77
|
-
|
78
|
-
class Locator
|
79
|
-
include TestaAppiumDriver::Attributes
|
80
|
-
end
|
84
|
+
|
81
85
|
end
|
@@ -5,10 +5,10 @@ module TestaAppiumDriver
|
|
5
5
|
# @return [TestaAppiumDriver::Locator]
|
6
6
|
def add_selector(*args, &block)
|
7
7
|
# if class selector is executed from driver, create new locator instance
|
8
|
-
if self.kind_of?(TestaAppiumDriver::Driver) || self.instance_of?(Selenium::WebDriver::Element)
|
8
|
+
if self.kind_of?(TestaAppiumDriver::Driver) || self.instance_of?(::Selenium::WebDriver::Element) || self.instance_of?(::Appium::Core::Element)
|
9
9
|
args.last[:default_find_strategy] = @default_find_strategy
|
10
10
|
args.last[:default_scroll_strategy] = @default_scroll_strategy
|
11
|
-
if self.instance_of?(Selenium::WebDriver::Element)
|
11
|
+
if self.instance_of?(::Selenium::WebDriver::Element) || self.instance_of?(::Appium::Core::Element)
|
12
12
|
driver = self.get_driver
|
13
13
|
else
|
14
14
|
driver = self
|
data/testa_appium_driver.gemspec
CHANGED
@@ -12,7 +12,7 @@ Gem::Specification.new do |spec|
|
|
12
12
|
spec.description = "Testa appium driver is a wrapper around ruby_lib_core. It leverages all driver features and makes them simple and easy to use, significantly reduces the amount of code needed and enables you to define locators that can be reused"
|
13
13
|
spec.homepage = "https://github.com/Karazum/testa_appium_driver"
|
14
14
|
spec.license = "MIT"
|
15
|
-
spec.required_ruby_version = ">= 2.
|
15
|
+
spec.required_ruby_version = ">= 2.7.6"
|
16
16
|
|
17
17
|
#spec.metadata["allowed_push_host"] = "Set to 'https://mygemserver.com'"
|
18
18
|
|
@@ -30,7 +30,7 @@ Gem::Specification.new do |spec|
|
|
30
30
|
spec.executables = spec.files.grep(%r{\Aexe/}) { |f| File.basename(f) }
|
31
31
|
spec.require_paths = ["lib"]
|
32
32
|
|
33
|
-
spec.add_runtime_dependency "appium_lib_core", ["
|
33
|
+
spec.add_runtime_dependency "appium_lib_core", ["~> 5.4.0"]
|
34
34
|
spec.add_runtime_dependency "json", ["~> 2.3"]
|
35
35
|
|
36
36
|
spec.add_development_dependency "rubocop", ["= 1.19.0"]
|
metadata
CHANGED
@@ -1,29 +1,29 @@
|
|
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.16
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- karlo.razumovic
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-
|
11
|
+
date: 2022-08-30 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: appium_lib_core
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- -
|
17
|
+
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 5.
|
19
|
+
version: 5.4.0
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- -
|
24
|
+
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: 5.
|
26
|
+
version: 5.4.0
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: json
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -75,24 +75,18 @@ executables: []
|
|
75
75
|
extensions: []
|
76
76
|
extra_rdoc_files: []
|
77
77
|
files:
|
78
|
+
- ".gitattributes"
|
78
79
|
- ".gitignore"
|
79
|
-
- ".idea/deployment.xml"
|
80
|
-
- ".idea/inspectionProfiles/Project_Default.xml"
|
81
|
-
- ".idea/misc.xml"
|
82
|
-
- ".idea/modules.xml"
|
83
|
-
- ".idea/runConfigurations.xml"
|
84
|
-
- ".idea/runConfigurations/Android_Test.xml"
|
85
|
-
- ".idea/sshConfigs.xml"
|
86
|
-
- ".idea/vcs.xml"
|
87
|
-
- ".idea/webServers.xml"
|
88
80
|
- ".rspec"
|
89
81
|
- ".rubocop.yml"
|
90
82
|
- CHANGELOG.md
|
91
83
|
- CODE_OF_CONDUCT.md
|
92
84
|
- Gemfile
|
85
|
+
- Gemfile.lock
|
93
86
|
- LICENSE.txt
|
94
87
|
- README.md
|
95
88
|
- Rakefile
|
89
|
+
- appium-driver.iml
|
96
90
|
- bin/console
|
97
91
|
- bin/setup
|
98
92
|
- lib/testa_appium_driver.rb
|
@@ -120,7 +114,6 @@ files:
|
|
120
114
|
- lib/testa_appium_driver/ios/type_selectors.rb
|
121
115
|
- lib/testa_appium_driver/version.rb
|
122
116
|
- testa_appium_driver.gemspec
|
123
|
-
- testa_appium_driver.iml
|
124
117
|
homepage: https://github.com/Karazum/testa_appium_driver
|
125
118
|
licenses:
|
126
119
|
- MIT
|
@@ -137,14 +130,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
137
130
|
requirements:
|
138
131
|
- - ">="
|
139
132
|
- !ruby/object:Gem::Version
|
140
|
-
version: 2.
|
133
|
+
version: 2.7.6
|
141
134
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
142
135
|
requirements:
|
143
136
|
- - ">="
|
144
137
|
- !ruby/object:Gem::Version
|
145
138
|
version: '0'
|
146
139
|
requirements: []
|
147
|
-
rubygems_version: 3.1.
|
140
|
+
rubygems_version: 3.1.6
|
148
141
|
signing_key:
|
149
142
|
specification_version: 4
|
150
143
|
summary: Appium made easy
|
data/.idea/deployment.xml
DELETED
@@ -1,22 +0,0 @@
|
|
1
|
-
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
-
<project version="4">
|
3
|
-
<component name="PublishConfigData" autoUpload="On explicit save action" serverName="supertesta.com" preserveTimestamps="false" autoUploadExternalChanges="true">
|
4
|
-
<serverData>
|
5
|
-
<paths name="supertesta.com">
|
6
|
-
<serverdata>
|
7
|
-
<mappings>
|
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 local="$PROJECT_DIR$" web="/" />
|
16
|
-
</mappings>
|
17
|
-
</serverdata>
|
18
|
-
</paths>
|
19
|
-
</serverData>
|
20
|
-
<option name="myAutoUpload" value="ON_EXPLICIT_SAVE" />
|
21
|
-
</component>
|
22
|
-
</project>
|
@@ -1,9 +0,0 @@
|
|
1
|
-
<component name="InspectionProjectProfileManager">
|
2
|
-
<profile version="1.0">
|
3
|
-
<option name="myName" value="Project Default" />
|
4
|
-
<inspection_tool class="Rubocop" enabled="false" level="WARNING" enabled_by_default="false" />
|
5
|
-
<inspection_tool class="RubyClassMethodNamingConvention" enabled="true" level="WARNING" enabled_by_default="true">
|
6
|
-
<option name="m_maxLength" value="40" />
|
7
|
-
</inspection_tool>
|
8
|
-
</profile>
|
9
|
-
</component>
|
data/.idea/misc.xml
DELETED
data/.idea/modules.xml
DELETED
@@ -1,8 +0,0 @@
|
|
1
|
-
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
-
<project version="4">
|
3
|
-
<component name="ProjectModuleManager">
|
4
|
-
<modules>
|
5
|
-
<module fileurl="file://$PROJECT_DIR$/testa_appium_driver.iml" filepath="$PROJECT_DIR$/testa_appium_driver.iml" />
|
6
|
-
</modules>
|
7
|
-
</component>
|
8
|
-
</project>
|
@@ -1,42 +0,0 @@
|
|
1
|
-
<component name="ProjectRunConfigurationManager">
|
2
|
-
<configuration default="false" name="Android Test" type="RSpecRunConfigurationType" factoryName="RSpec">
|
3
|
-
<module name="testa_appium_driver" />
|
4
|
-
<predefined_log_file enabled="true" id="RUBY_RSPEC" />
|
5
|
-
<RSPEC_RUN_CONFIG_SETTINGS_ID NAME="RUBY_ARGS" VALUE="" />
|
6
|
-
<RSPEC_RUN_CONFIG_SETTINGS_ID NAME="WORK DIR" VALUE="$PROJECT_DIR$" />
|
7
|
-
<RSPEC_RUN_CONFIG_SETTINGS_ID NAME="SHOULD_USE_SDK" VALUE="false" />
|
8
|
-
<RSPEC_RUN_CONFIG_SETTINGS_ID NAME="ALTERN_SDK_NAME" VALUE="" />
|
9
|
-
<RSPEC_RUN_CONFIG_SETTINGS_ID NAME="myPassParentEnvs" VALUE="true" />
|
10
|
-
<EXTENSION ID="BundlerRunConfigurationExtension" bundleExecEnabled="false" />
|
11
|
-
<EXTENSION ID="JRubyRunConfigurationExtension" NailgunExecEnabled="false" />
|
12
|
-
<EXTENSION ID="RubyCoverageRunConfigurationExtension" track_test_folders="true" runner="rcov" ENABLE_FORKED_COVERAGE="true" />
|
13
|
-
<EXTENSION ID="net.ashald.envfile">
|
14
|
-
<option name="IS_ENABLED" value="false" />
|
15
|
-
<option name="IS_SUBST" value="false" />
|
16
|
-
<option name="IS_PATH_MACRO_SUPPORTED" value="false" />
|
17
|
-
<option name="IS_IGNORE_MISSING_FILES" value="false" />
|
18
|
-
<option name="IS_ENABLE_EXPERIMENTAL_INTEGRATIONS" value="false" />
|
19
|
-
<ENTRIES>
|
20
|
-
<ENTRY IS_ENABLED="true" PARSER="runconfig" />
|
21
|
-
</ENTRIES>
|
22
|
-
</EXTENSION>
|
23
|
-
<EXTENSION ID="org.jetbrains.plugins.ruby.rails.run.RailsRunConfigurationExtension" SCRATCH_USE_RAILS_RUNNER="false" />
|
24
|
-
<RSPEC_RUN_CONFIG_SETTINGS_ID NAME="TESTS_FOLDER_PATH" VALUE="" />
|
25
|
-
<RSPEC_RUN_CONFIG_SETTINGS_ID NAME="TEST_SCRIPT_PATH" VALUE="$PROJECT_DIR$/spec/testa_appium_driver_android_spec.rb" />
|
26
|
-
<RSPEC_RUN_CONFIG_SETTINGS_ID NAME="TEST_SCRIPT_PATHS" VALUE="$PROJECT_DIR$/spec/testa_appium_driver_android_spec.rb" />
|
27
|
-
<RSPEC_RUN_CONFIG_SETTINGS_ID NAME="SPEC_RUNNER_PATH" VALUE="" />
|
28
|
-
<RSPEC_RUN_CONFIG_SETTINGS_ID NAME="TEST_FILE_MASK" VALUE="**/*_spec.rb" />
|
29
|
-
<RSPEC_RUN_CONFIG_SETTINGS_ID NAME="SPEC_EXAMPLE_NAME" VALUE="" />
|
30
|
-
<RSPEC_RUN_CONFIG_SETTINGS_ID NAME="TEST_TEST_TYPE" VALUE="TEST_SCRIPT" />
|
31
|
-
<RSPEC_RUN_CONFIG_SETTINGS_ID NAME="SPEC_ARGS" VALUE="" />
|
32
|
-
<RSPEC_RUN_CONFIG_SETTINGS_ID NAME="RUNNER_VERSION" VALUE="3.10.1" />
|
33
|
-
<RSPEC_RUN_CONFIG_SETTINGS_ID NAME="USE_CUSTOM_SPEC_RUNNER" VALUE="false" />
|
34
|
-
<RSPEC_RUN_CONFIG_SETTINGS_ID NAME="DRB" VALUE="false" />
|
35
|
-
<RSPEC_RUN_CONFIG_SETTINGS_ID NAME="ZEUS" VALUE="false" />
|
36
|
-
<RSPEC_RUN_CONFIG_SETTINGS_ID NAME="SPRING" VALUE="false" />
|
37
|
-
<RSPEC_RUN_CONFIG_SETTINGS_ID NAME="FULL_BACKTRACE" VALUE="false" />
|
38
|
-
<method v="2">
|
39
|
-
<option name="Make" enabled="true" />
|
40
|
-
</method>
|
41
|
-
</configuration>
|
42
|
-
</component>
|
data/.idea/runConfigurations.xml
DELETED
@@ -1,10 +0,0 @@
|
|
1
|
-
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
-
<project version="4">
|
3
|
-
<component name="RunConfigurationProducerService">
|
4
|
-
<option name="ignoredProducers">
|
5
|
-
<set>
|
6
|
-
<option value="com.android.tools.idea.compose.preview.runconfiguration.ComposePreviewRunConfigurationProducer" />
|
7
|
-
</set>
|
8
|
-
</option>
|
9
|
-
</component>
|
10
|
-
</project>
|
data/.idea/sshConfigs.xml
DELETED
@@ -1,13 +0,0 @@
|
|
1
|
-
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
-
<project version="4">
|
3
|
-
<component name="SshConfigs">
|
4
|
-
<configs>
|
5
|
-
<sshConfig authType="PASSWORD" host="supertesta.com" id="ea45cb27-d516-4292-a1f7-430f02857685" port="22" customName="Supertesta.com" nameFormat="CUSTOM" username="testa">
|
6
|
-
<option name="customName" value="Supertesta.com" />
|
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>
|
11
|
-
</configs>
|
12
|
-
</component>
|
13
|
-
</project>
|
data/.idea/vcs.xml
DELETED
data/.idea/webServers.xml
DELETED
@@ -1,21 +0,0 @@
|
|
1
|
-
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
-
<project version="4">
|
3
|
-
<component name="WebServers">
|
4
|
-
<option name="servers">
|
5
|
-
<webServer id="b1f6f214-0ed7-4869-998b-43dc6e5c154a" name="supertesta.com" url="http://something">
|
6
|
-
<fileTransfer rootFolder="/ruby_apps" accessType="SFTP" host="supertesta.com" port="22" sshConfigId="ea45cb27-d516-4292-a1f7-430f02857685" sshConfig="Supertesta.com">
|
7
|
-
<advancedOptions>
|
8
|
-
<advancedOptions dataProtectionLevel="Private" keepAliveTimeout="0" passiveMode="true" shareSSLContext="true" />
|
9
|
-
</advancedOptions>
|
10
|
-
</fileTransfer>
|
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>
|
19
|
-
</option>
|
20
|
-
</component>
|
21
|
-
</project>
|