testa_appium_driver 0.1.27 → 0.1.30
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/lib/testa_appium_driver/android/driver.rb +6 -12
- data/lib/testa_appium_driver/common/scroll_actions/w3c_scroll_actions.rb +10 -15
- data/lib/testa_appium_driver/driver.rb +1 -1
- data/spec/spec_helper.rb +16 -0
- data/spec/testa_appium_driver_android_spec.rb +119 -0
- data/spec/testa_appium_driver_ios_spec.rb +121 -0
- metadata +37 -67
- data/.gitattributes +0 -23
- data/.gitignore +0 -17
- data/.rspec +0 -3
- data/.rubocop.yml +0 -6
- data/Gemfile.lock +0 -80
- data/testa_appium_driver.gemspec +0 -41
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3521033bcda4e9b61fd523c8aa716c6bcfd99dc9e2ff820bf823adea8f4582c0
|
4
|
+
data.tar.gz: 2443236705abef799f76de8a03db745b972f3ff9092b9b19a689a20aba329c21
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6648e41a86d22e367bfef3b77d9db4ae5381b2bd5d787a875d2f77d8c842c7bcc4b65a450d608bbe7a0b006af47ab0fe21ccb120cb26b9c8e1f2f441c7f22d02
|
7
|
+
data.tar.gz: edd62bab2c971aa7334bf2521a9a5c91447a8892e94a1834a74c7e09fb69368c5c3b91b9d2bea20c14c9f5b36a751dc85932896b4c4b917db0cb44a4f34f570c
|
@@ -7,8 +7,6 @@ module TestaAppiumDriver
|
|
7
7
|
class Driver
|
8
8
|
include ClassSelectors
|
9
9
|
|
10
|
-
|
11
|
-
|
12
10
|
# executes shell command
|
13
11
|
# @param [String] command Shell command name to execute for example echo or rm
|
14
12
|
# @param [Array<String>] args Array of command arguments, example: ['-f', '/sdcard/my_file.txt']
|
@@ -16,33 +14,30 @@ module TestaAppiumDriver
|
|
16
14
|
# @param [Boolean] includeStderr Whether to include stderr stream into the returned result.
|
17
15
|
def shell(command, args: nil, timeout: nil, includeStderr: true)
|
18
16
|
params = {
|
19
|
-
|
20
|
-
|
17
|
+
command: command,
|
18
|
+
includeStderr: includeStderr,
|
21
19
|
}
|
22
20
|
params[:args] = args unless args.nil?
|
23
21
|
params[:timeout] = timeout unless timeout.nil?
|
24
22
|
@driver.execute_script("mobile: shell", params)
|
25
23
|
end
|
26
24
|
|
27
|
-
|
28
25
|
def scrollable
|
29
|
-
locator = Locator.new(self, self, {single: true})
|
26
|
+
locator = Locator.new(self, self, { single: true })
|
30
27
|
locator.xpath_selector = "//androidx.recyclerview.widget.RecyclerView|//android.widget.ScrollView|//android.widget.ListView|//android.widget.HorizontalScrollView"
|
31
28
|
locator.ui_selector = "new UiSelector().scrollable(true).instance(0)"
|
32
29
|
locator
|
33
30
|
end
|
34
31
|
|
35
|
-
|
36
32
|
def scrollables
|
37
|
-
locator = Locator.new(self, self, {single: false})
|
33
|
+
locator = Locator.new(self, self, { single: false })
|
38
34
|
locator.xpath_selector = "//androidx.recyclerview.widget.RecyclerView|//android.widget.ScrollView|//android.widget.ListView|//android.widget.HorizontalScrollView"
|
39
35
|
locator.ui_selector = "new UiSelector().scrollable(true)"
|
40
36
|
locator
|
41
37
|
end
|
42
38
|
|
43
|
-
|
44
|
-
|
45
39
|
private
|
40
|
+
|
46
41
|
def handle_testa_opts
|
47
42
|
if @testa_opts[:default_find_strategy].nil?
|
48
43
|
@default_find_strategy = DEFAULT_ANDROID_FIND_STRATEGY
|
@@ -55,7 +50,6 @@ module TestaAppiumDriver
|
|
55
50
|
end
|
56
51
|
end
|
57
52
|
|
58
|
-
|
59
53
|
if @testa_opts[:default_scroll_strategy].nil?
|
60
54
|
@default_scroll_strategy = DEFAULT_ANDROID_SCROLL_STRATEGY
|
61
55
|
else
|
@@ -68,4 +62,4 @@ module TestaAppiumDriver
|
|
68
62
|
end
|
69
63
|
end
|
70
64
|
end
|
71
|
-
end
|
65
|
+
end
|
@@ -25,15 +25,11 @@ module ::TestaAppiumDriver
|
|
25
25
|
align_with = :top
|
26
26
|
end
|
27
27
|
|
28
|
-
|
29
|
-
# if true
|
30
|
-
w3c_scroll_each_ios(direction, align_with, &block)
|
31
|
-
else
|
32
|
-
w3c_scroll_each_android(direction, align_with, &block)
|
33
|
-
end
|
28
|
+
w3c_scroll_each_v2(direction, align_with, &block)
|
34
29
|
end
|
35
30
|
|
36
|
-
|
31
|
+
# @deprecated
|
32
|
+
def w3c_scroll_each_v1(direction, align_with, &block)
|
37
33
|
elements = []
|
38
34
|
begin
|
39
35
|
|
@@ -42,14 +38,14 @@ module ::TestaAppiumDriver
|
|
42
38
|
previous_element = nil
|
43
39
|
|
44
40
|
until is_end_of_scroll?
|
45
|
-
#
|
46
|
-
#
|
41
|
+
# $__.puts "-- new iteration"
|
42
|
+
# $__.puts "-------------"
|
47
43
|
aligned_items = 0
|
48
44
|
new_ignore_element_ids = []
|
49
45
|
matches = @locator.execute(skip_cache: true)
|
50
46
|
matches.each_with_index do |m, index|
|
51
|
-
#
|
52
|
-
#
|
47
|
+
# $__.puts "Matches: #{matches.count}"
|
48
|
+
# $__.puts "M: #{m.id}"
|
53
49
|
if ignore_element_ids.include?(m.id)
|
54
50
|
previous_element = m
|
55
51
|
next
|
@@ -95,7 +91,7 @@ module ::TestaAppiumDriver
|
|
95
91
|
elements
|
96
92
|
end
|
97
93
|
|
98
|
-
def
|
94
|
+
def w3c_scroll_each_v2(direction, align_with, &block)
|
99
95
|
elements = []
|
100
96
|
elements_in_current_iteration = []
|
101
97
|
stale_retries = 0
|
@@ -245,8 +241,7 @@ module ::TestaAppiumDriver
|
|
245
241
|
max_scrolls_reached = false
|
246
242
|
end_of_scroll_reached = false
|
247
243
|
# $ctx.puts("starting scroll to")
|
248
|
-
until (@driver.android? && @locator.exists?) ||
|
249
|
-
(@driver.ios? && @locator.exists? && @locator.in_viewport?) || end_of_scroll_reached
|
244
|
+
until (element_found = ((@driver.android? && @locator.exists?) || (@driver.ios? && @locator.exists? && @locator.in_viewport?))) || end_of_scroll_reached
|
250
245
|
# $ctx.puts("Scroll to round: #{rounds}")
|
251
246
|
end_of_scroll_reached = is_end_of_scroll?
|
252
247
|
case direction
|
@@ -274,7 +269,7 @@ module ::TestaAppiumDriver
|
|
274
269
|
break if rounds == @max_scrolls
|
275
270
|
end
|
276
271
|
# $ctx.puts("end scroll to")
|
277
|
-
raise Selenium::WebDriver::Error::NoSuchElementError if max_scrolls_reached || end_of_scroll_reached
|
272
|
+
raise Selenium::WebDriver::Error::NoSuchElementError if (max_scrolls_reached || end_of_scroll_reached) && !element_found
|
278
273
|
end
|
279
274
|
|
280
275
|
def w3c_scroll_to_start_or_end(type)
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,16 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
#noinspection RubyResolve
|
4
|
+
require "testa_appium_driver"
|
5
|
+
|
6
|
+
RSpec.configure do |config|
|
7
|
+
# Enable flags like --only-failures and --next-failure
|
8
|
+
config.example_status_persistence_file_path = ".rspec_status"
|
9
|
+
|
10
|
+
# Disable RSpec exposing methods globally on `Module` and `main`
|
11
|
+
config.disable_monkey_patching!
|
12
|
+
|
13
|
+
config.expect_with :rspec do |c|
|
14
|
+
c.syntax = :expect
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,119 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
RSpec.describe TestaAppiumDriver do
|
4
|
+
it "Android Test" do
|
5
|
+
|
6
|
+
|
7
|
+
@options = {
|
8
|
+
caps: {
|
9
|
+
:platformName => "Android",
|
10
|
+
:adbPort => 5037,
|
11
|
+
:remoteAdbHost => 'localhost',
|
12
|
+
:newCommandTimeout => 0, # no timeout when zero
|
13
|
+
:adbExecTimeout => 600000,
|
14
|
+
:appPackage => "ro.superbet.sport.stage",
|
15
|
+
:androidInstallTimeout => 600000,
|
16
|
+
:uiautomator2ServerLaunchTimeout => 600000,
|
17
|
+
:uiautomator2ServerInstallTimeout => 600000,
|
18
|
+
#waitForSelectorTimeout: 26,
|
19
|
+
:waitForIdleTimeout => 1,
|
20
|
+
:appWaitPackage => "ro.superbet.sport.stage",
|
21
|
+
:deviceName => "Phone",
|
22
|
+
:app => "/testa/hard_storage/project_files/2/apks/bc72173fd9b03e80c58161f2a881c1e679ce368ba9ca79855501597ce2e312ad.apk",
|
23
|
+
:noSign => true,
|
24
|
+
:udid => "228b371032057ece",
|
25
|
+
:automationName => "uiautomator2",
|
26
|
+
:systemPort => rand(7000..32000),
|
27
|
+
:noReset => true,
|
28
|
+
:fullReset => false,
|
29
|
+
# :noReset => false,
|
30
|
+
# :fullReset => true,
|
31
|
+
skipServerInstallation: true,
|
32
|
+
:enableMultiWindows => true, # enables appium to see some otherwise "hidden" elements
|
33
|
+
#:disableWindowAnimation => true,
|
34
|
+
autoGrantPermissions: true,
|
35
|
+
},
|
36
|
+
appium_lib: {
|
37
|
+
#:server_url => "http://localhost:4723/wd/hub/"
|
38
|
+
:server_url => "http://10.150.0.56:4723/wd/hub/"
|
39
|
+
},
|
40
|
+
testa_appium_driver: {
|
41
|
+
#default_find_strategy: "xpath",
|
42
|
+
#default_scroll_strategy: "w3c",
|
43
|
+
scroll_to_find: false
|
44
|
+
}
|
45
|
+
}
|
46
|
+
|
47
|
+
|
48
|
+
d = TestaAppiumDriver::Driver.new(@options)
|
49
|
+
|
50
|
+
# d.element(id: "analyticsPositiveView").click
|
51
|
+
# d.element(id: "startPlayingLogInView").click
|
52
|
+
#
|
53
|
+
# d.edit_texts[0].send_keys "testdevice1"
|
54
|
+
#
|
55
|
+
# d.edit_texts[1].send_keys "superbet1x2"
|
56
|
+
#
|
57
|
+
# puts "Buttons #{d.buttons(id: "buttonView").count}"
|
58
|
+
# d.button(id: "buttonView").click
|
59
|
+
|
60
|
+
|
61
|
+
puts "aaa"
|
62
|
+
|
63
|
+
drag_handle = d.frame_layout(id: "defaultBetSlipView").linear_layout.view
|
64
|
+
puts drag_handle.bounds
|
65
|
+
drag_handle.wait_until_exists.drag_up_by(1000)
|
66
|
+
sleep 1
|
67
|
+
|
68
|
+
scrollable = d.element(id: "betSlipFragmentHolder").recycler_view(id:"recyclerView")
|
69
|
+
scrollable.elements(id: "match_holder").parent.each_down do |m|
|
70
|
+
puts "1"
|
71
|
+
name1 = m.element(id: "match_team1Name").text
|
72
|
+
name2 = m.element(id: "match_team2Name").text
|
73
|
+
market = m.element(id: "betOfferName").text
|
74
|
+
puts "name: #{name1} - #{name2}, market_name: #{market}"
|
75
|
+
end
|
76
|
+
|
77
|
+
|
78
|
+
|
79
|
+
|
80
|
+
d.element(id: "buttonView").click
|
81
|
+
|
82
|
+
d.text_view(text: "Județ").scroll_to.click
|
83
|
+
|
84
|
+
puts d.text_view(text: "Bihor").exists?
|
85
|
+
d.recycler_view.wait_until_exists
|
86
|
+
puts d.element(id: "viewPager").execute.text_view(text: "#soccer").text
|
87
|
+
d.text_view(text: "#soccer").preceding_siblings[2]
|
88
|
+
d.text_view(text: "#soccer").preceding_siblings.each_with_index do |e, i|
|
89
|
+
puts e.class_name
|
90
|
+
end
|
91
|
+
puts "--------"
|
92
|
+
puts d.text_view(text: "#soccer").preceding_sibling.class_name
|
93
|
+
|
94
|
+
puts "=============="
|
95
|
+
puts d.text_view(text: "#soccer").following_sibling.className
|
96
|
+
|
97
|
+
|
98
|
+
d.text_view(text: "Super Extra").scroll_to
|
99
|
+
d.text_view(text: "Super Extra").siblings
|
100
|
+
|
101
|
+
puts d.element(id: "viewPager").parent.text_view.text
|
102
|
+
d.scrollable.scroll_left_to
|
103
|
+
|
104
|
+
|
105
|
+
puts d.element(id: "viewPager").list_view.element(id: "nameView").scroll_up_to.text
|
106
|
+
|
107
|
+
|
108
|
+
puts d.text_view(text: "#soccer").bounds
|
109
|
+
|
110
|
+
d.element(id: "viewPager").elements(id: "nameView").each do |e|
|
111
|
+
puts e.text
|
112
|
+
end
|
113
|
+
|
114
|
+
|
115
|
+
expect(TestaAppiumDriver::VERSION).not_to be nil
|
116
|
+
end
|
117
|
+
|
118
|
+
|
119
|
+
end
|
@@ -0,0 +1,121 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
RSpec.describe TestaAppiumDriver do
|
4
|
+
it "iOS Test" do
|
5
|
+
require 'em/pure_ruby'
|
6
|
+
require 'appium_lib_core'
|
7
|
+
require 'net/http'
|
8
|
+
|
9
|
+
udid = "d4b893ee622bf59795eeaa7d2c36bcca05fcccb1"
|
10
|
+
|
11
|
+
#testa sends ingredients for remote quamotion to get app
|
12
|
+
path = "project_files/2/apks/5df912ca31070c6d70104b997a611c58274f92a0af0f2436944fea3db1c10822.ipa"
|
13
|
+
ipa_url = "https://supertesta.com/ipas/#{path}"
|
14
|
+
ipa_name = File.basename(path)
|
15
|
+
|
16
|
+
#quamotion endpoint that can receive ipa url, and download it
|
17
|
+
url = "http://10.150.0.56:9494/receive_ipa?udid=#{udid}&ipa_url=#{ipa_url}&ipa_name=#{ipa_name}"
|
18
|
+
uri = URI.parse(url)
|
19
|
+
http = Net::HTTP.new(uri.host, uri.port)
|
20
|
+
request = Net::HTTP::Post.new(uri.request_uri)
|
21
|
+
res = http.request(request)
|
22
|
+
raise "copy opa res code not 200 : #{res.code}" unless res.code == "200"
|
23
|
+
ipa_remote_path = res.body
|
24
|
+
|
25
|
+
|
26
|
+
start_vnc_url = "http://10.150.0.56:9494/start_vnc_server?udid=#{udid}"
|
27
|
+
uri = URI("#{start_vnc_url}")
|
28
|
+
res = Net::HTTP.start(uri.host, uri.port, read_timeout: 129) do |http|
|
29
|
+
http.max_retries = 0 # Fix http retries
|
30
|
+
http.request(Net::HTTP::Post.new(uri))
|
31
|
+
end
|
32
|
+
urls = JSON.parse(res.body)
|
33
|
+
wda_url = URI("#{urls['wda_url']}")
|
34
|
+
wda_port = wda_url.port
|
35
|
+
|
36
|
+
|
37
|
+
@options = {
|
38
|
+
caps: {
|
39
|
+
:platformName => "iOS",
|
40
|
+
:newCommandTimeout => 0, # no timeout when zero
|
41
|
+
:platformVersion => "14.4",
|
42
|
+
:bundleId => "ro.superbet.sport.stage",
|
43
|
+
:waitForIdleTimeout => 3000,
|
44
|
+
:deviceName => 'iphone',
|
45
|
+
:app => ipa_remote_path,
|
46
|
+
:webDriverAgentUrl => "http://127.0.0.1:#{wda_port}",
|
47
|
+
:automationName => "XCUITest",
|
48
|
+
:noSign => true,
|
49
|
+
:udid => udid, # iPhone 7 black
|
50
|
+
|
51
|
+
|
52
|
+
:systemPort => rand(7000..32000),
|
53
|
+
:noReset => true,
|
54
|
+
:fullReset => false,
|
55
|
+
:enableMultiWindows => true, # enables appium to see some otherwise "hidden" elements
|
56
|
+
#:disableWindowAnimation => true,
|
57
|
+
autoGrantPermissions: true,
|
58
|
+
},
|
59
|
+
appium_lib: {
|
60
|
+
#:server_url => "http://localhost:4723/wd/hub/"
|
61
|
+
:server_url => "http://10.150.0.56:4725/wd/hub/"
|
62
|
+
},
|
63
|
+
testa_appium_driver: {
|
64
|
+
#default_find_strategy: "xpath",
|
65
|
+
#default_scroll_strategy: "w3c",
|
66
|
+
scroll_to_find: false
|
67
|
+
}
|
68
|
+
}
|
69
|
+
|
70
|
+
|
71
|
+
d = TestaAppiumDriver::Driver.new(@options)
|
72
|
+
|
73
|
+
# d.element(id: "analyticsPositiveView").click
|
74
|
+
# d.element(id: "startPlayingLogInView").click
|
75
|
+
#
|
76
|
+
# d.edit_texts[0].send_keys "testdevice1"
|
77
|
+
#
|
78
|
+
# d.edit_texts[1].send_keys "superbet1x2"
|
79
|
+
#
|
80
|
+
# puts "Buttons #{d.buttons(id: "buttonView").count}"
|
81
|
+
# d.button(id: "buttonView").click
|
82
|
+
#
|
83
|
+
# sleep 10
|
84
|
+
|
85
|
+
|
86
|
+
puts d.static_text(text: "#soccer").wait_until_exists.text
|
87
|
+
d.element(text: "Super Extra").scroll_to
|
88
|
+
puts d.static_text(text: "#soccer").class_name
|
89
|
+
puts d.static_text(text: "#soccer").parent.class_name
|
90
|
+
|
91
|
+
d.text_view(text: "#soccer").preceding_siblings.each_with_index do |e, i|
|
92
|
+
puts d.text_view(text: "#soccer").preceding_siblings[i].className
|
93
|
+
puts e.className
|
94
|
+
end
|
95
|
+
puts "--------"
|
96
|
+
puts d.text_view(text: "#soccer").preceding_sibling.className
|
97
|
+
|
98
|
+
puts "=============="
|
99
|
+
puts d.text_view(text: "#soccer").following_sibling.className
|
100
|
+
|
101
|
+
|
102
|
+
d.text_view(text: "Super Extra").siblings
|
103
|
+
|
104
|
+
puts d.element(id: "viewPager").parent.text_view.text
|
105
|
+
d.scrollable.scroll_left_to
|
106
|
+
|
107
|
+
|
108
|
+
puts d.element(id: "viewPager").list_view.element(id: "nameView").scroll_up_to.text
|
109
|
+
|
110
|
+
|
111
|
+
puts d.text_view(text: "#soccer").bounds
|
112
|
+
|
113
|
+
d.element(id: "viewPager").elements(id: "nameView").each do |e|
|
114
|
+
puts e.text
|
115
|
+
end
|
116
|
+
|
117
|
+
|
118
|
+
expect(TestaAppiumDriver::VERSION).not_to be nil
|
119
|
+
end
|
120
|
+
|
121
|
+
end
|
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.30
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- karlo.razumovic
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2024-05-06 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: appium_lib_core
|
@@ -38,34 +38,6 @@ dependencies:
|
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '2.3'
|
41
|
-
- !ruby/object:Gem::Dependency
|
42
|
-
name: rubocop
|
43
|
-
requirement: !ruby/object:Gem::Requirement
|
44
|
-
requirements:
|
45
|
-
- - '='
|
46
|
-
- !ruby/object:Gem::Version
|
47
|
-
version: 1.19.0
|
48
|
-
type: :development
|
49
|
-
prerelease: false
|
50
|
-
version_requirements: !ruby/object:Gem::Requirement
|
51
|
-
requirements:
|
52
|
-
- - '='
|
53
|
-
- !ruby/object:Gem::Version
|
54
|
-
version: 1.19.0
|
55
|
-
- !ruby/object:Gem::Dependency
|
56
|
-
name: rake
|
57
|
-
requirement: !ruby/object:Gem::Requirement
|
58
|
-
requirements:
|
59
|
-
- - "~>"
|
60
|
-
- !ruby/object:Gem::Version
|
61
|
-
version: '13.0'
|
62
|
-
type: :development
|
63
|
-
prerelease: false
|
64
|
-
version_requirements: !ruby/object:Gem::Requirement
|
65
|
-
requirements:
|
66
|
-
- - "~>"
|
67
|
-
- !ruby/object:Gem::Version
|
68
|
-
version: '13.0'
|
69
41
|
description: Testa appium driver is a wrapper around ruby_lib_core. It leverages all
|
70
42
|
driver features and makes them simple and easy to use, significantly reduces the
|
71
43
|
amount of code needed and enables you to define locators that can be reused
|
@@ -75,47 +47,45 @@ executables: []
|
|
75
47
|
extensions: []
|
76
48
|
extra_rdoc_files: []
|
77
49
|
files:
|
78
|
-
- ".
|
79
|
-
- ".
|
80
|
-
- "
|
81
|
-
- ".
|
82
|
-
-
|
83
|
-
-
|
84
|
-
-
|
85
|
-
-
|
86
|
-
-
|
87
|
-
-
|
88
|
-
-
|
89
|
-
-
|
90
|
-
-
|
91
|
-
- lib/testa_appium_driver.rb
|
92
|
-
- lib/testa_appium_driver/android/
|
93
|
-
- lib/testa_appium_driver/
|
94
|
-
- lib/testa_appium_driver/
|
95
|
-
- lib/testa_appium_driver/
|
96
|
-
- lib/testa_appium_driver/
|
97
|
-
- lib/testa_appium_driver/
|
98
|
-
- lib/testa_appium_driver/common/
|
99
|
-
- lib/testa_appium_driver/common/
|
100
|
-
- lib/testa_appium_driver/common/
|
101
|
-
- lib/testa_appium_driver/common/
|
102
|
-
- lib/testa_appium_driver/common/
|
103
|
-
- lib/testa_appium_driver/
|
104
|
-
- lib/testa_appium_driver/
|
105
|
-
- lib/testa_appium_driver/
|
106
|
-
- lib/testa_appium_driver/
|
107
|
-
- lib/testa_appium_driver/
|
108
|
-
- lib/testa_appium_driver/
|
109
|
-
-
|
110
|
-
-
|
111
|
-
-
|
112
|
-
- lib/testa_appium_driver/ios/selenium_element.rb
|
113
|
-
- lib/testa_appium_driver/ios/type_selectors.rb
|
114
|
-
- testa_appium_driver.gemspec
|
50
|
+
- "./CHANGELOG.md"
|
51
|
+
- "./CODE_OF_CONDUCT.md"
|
52
|
+
- "./Gemfile"
|
53
|
+
- "./LICENSE.txt"
|
54
|
+
- "./README.md"
|
55
|
+
- "./Rakefile"
|
56
|
+
- "./bin/console"
|
57
|
+
- "./bin/setup"
|
58
|
+
- "./lib/testa_appium_driver.rb"
|
59
|
+
- "./lib/testa_appium_driver/android/class_selectors.rb"
|
60
|
+
- "./lib/testa_appium_driver/android/driver.rb"
|
61
|
+
- "./lib/testa_appium_driver/android/locator.rb"
|
62
|
+
- "./lib/testa_appium_driver/android/locator/attributes.rb"
|
63
|
+
- "./lib/testa_appium_driver/android/scroll_actions/uiautomator_scroll_actions.rb"
|
64
|
+
- "./lib/testa_appium_driver/android/selenium_element.rb"
|
65
|
+
- "./lib/testa_appium_driver/common/bounds.rb"
|
66
|
+
- "./lib/testa_appium_driver/common/constants.rb"
|
67
|
+
- "./lib/testa_appium_driver/common/exceptions/strategy_mix_exception.rb"
|
68
|
+
- "./lib/testa_appium_driver/common/helpers.rb"
|
69
|
+
- "./lib/testa_appium_driver/common/locator.rb"
|
70
|
+
- "./lib/testa_appium_driver/common/locator/scroll_actions.rb"
|
71
|
+
- "./lib/testa_appium_driver/common/scroll_actions.rb"
|
72
|
+
- "./lib/testa_appium_driver/common/scroll_actions/json_wire_scroll_actions.rb"
|
73
|
+
- "./lib/testa_appium_driver/common/scroll_actions/w3c_scroll_actions.rb"
|
74
|
+
- "./lib/testa_appium_driver/common/selenium_element.rb"
|
75
|
+
- "./lib/testa_appium_driver/driver.rb"
|
76
|
+
- "./lib/testa_appium_driver/ios/driver.rb"
|
77
|
+
- "./lib/testa_appium_driver/ios/locator.rb"
|
78
|
+
- "./lib/testa_appium_driver/ios/locator/attributes.rb"
|
79
|
+
- "./lib/testa_appium_driver/ios/selenium_element.rb"
|
80
|
+
- "./lib/testa_appium_driver/ios/type_selectors.rb"
|
81
|
+
- "./spec/spec_helper.rb"
|
82
|
+
- "./spec/testa_appium_driver_android_spec.rb"
|
83
|
+
- "./spec/testa_appium_driver_ios_spec.rb"
|
115
84
|
homepage: https://github.com/Karazum/testa_appium_driver
|
116
85
|
licenses:
|
117
86
|
- MIT
|
118
87
|
metadata:
|
88
|
+
rubygems_mfa_required: 'true'
|
119
89
|
documentation_uri: https://www.rubydoc.info/gems/testa_appium_driver
|
120
90
|
homepage_uri: https://github.com/Karazum/testa_appium_driver
|
121
91
|
source_code_uri: https://github.com/Karazum/testa_appium_driver
|
data/.gitattributes
DELETED
@@ -1,23 +0,0 @@
|
|
1
|
-
# Set the default behavior, in case people don't have core.autocrlf set.
|
2
|
-
* text=auto
|
3
|
-
|
4
|
-
# Declare files that will always have LF line endings on checkout.
|
5
|
-
*.rb text eol=lf
|
6
|
-
*.yml text eol=lf
|
7
|
-
*.sh text eol=lf
|
8
|
-
*.Dockerfile eol=lf
|
9
|
-
*.dockerfile eol=lf
|
10
|
-
*.conf eol=lf
|
11
|
-
*.ru eol=lf
|
12
|
-
*.json eol=lf
|
13
|
-
*.js eol=lf
|
14
|
-
*.css eol=lf
|
15
|
-
*.erb eol=lf
|
16
|
-
*.html eol=lf
|
17
|
-
*.map eol=lf
|
18
|
-
|
19
|
-
# Denote all files that are truly binary and should not be modified.
|
20
|
-
*.png binary
|
21
|
-
*.jpg binary
|
22
|
-
*.bin binary
|
23
|
-
*.zip binary
|
data/.gitignore
DELETED
@@ -1,17 +0,0 @@
|
|
1
|
-
/.bundle/
|
2
|
-
/.yardoc
|
3
|
-
/_yardoc/
|
4
|
-
/coverage/
|
5
|
-
/doc/
|
6
|
-
/pkg/
|
7
|
-
/spec/reports/
|
8
|
-
/tmp/
|
9
|
-
|
10
|
-
# rspec failure tracking
|
11
|
-
.rspec_status
|
12
|
-
|
13
|
-
/.idea/deployment.xml
|
14
|
-
/.idea/workspace.xml
|
15
|
-
/.idea/misc.xml
|
16
|
-
testa_appium_driver-*.gem
|
17
|
-
/appium-driver.iml
|
data/.rspec
DELETED
data/.rubocop.yml
DELETED
data/Gemfile.lock
DELETED
@@ -1,80 +0,0 @@
|
|
1
|
-
PATH
|
2
|
-
remote: .
|
3
|
-
specs:
|
4
|
-
testa_appium_driver (0.1.27)
|
5
|
-
appium_lib_core
|
6
|
-
json (~> 2.3)
|
7
|
-
|
8
|
-
GEM
|
9
|
-
remote: https://rubygems.org/
|
10
|
-
specs:
|
11
|
-
appium_lib_core (5.2.2)
|
12
|
-
faye-websocket (~> 0.11.0)
|
13
|
-
selenium-webdriver (~> 4.2, < 4.4)
|
14
|
-
ast (2.4.2)
|
15
|
-
childprocess (4.1.0)
|
16
|
-
diff-lcs (1.5.0)
|
17
|
-
eventmachine (1.2.7)
|
18
|
-
faye-websocket (0.11.1)
|
19
|
-
eventmachine (>= 0.12.0)
|
20
|
-
websocket-driver (>= 0.5.1)
|
21
|
-
json (2.6.2)
|
22
|
-
parallel (1.22.1)
|
23
|
-
parser (3.1.2.0)
|
24
|
-
ast (~> 2.4.1)
|
25
|
-
rainbow (3.1.1)
|
26
|
-
rake (13.0.6)
|
27
|
-
regexp_parser (2.4.0)
|
28
|
-
rexml (3.2.5)
|
29
|
-
rspec (3.11.0)
|
30
|
-
rspec-core (~> 3.11.0)
|
31
|
-
rspec-expectations (~> 3.11.0)
|
32
|
-
rspec-mocks (~> 3.11.0)
|
33
|
-
rspec-core (3.11.0)
|
34
|
-
rspec-support (~> 3.11.0)
|
35
|
-
rspec-expectations (3.11.0)
|
36
|
-
diff-lcs (>= 1.2.0, < 2.0)
|
37
|
-
rspec-support (~> 3.11.0)
|
38
|
-
rspec-mocks (3.11.1)
|
39
|
-
diff-lcs (>= 1.2.0, < 2.0)
|
40
|
-
rspec-support (~> 3.11.0)
|
41
|
-
rspec-support (3.11.0)
|
42
|
-
rubocop (1.26.0)
|
43
|
-
parallel (~> 1.10)
|
44
|
-
parser (>= 3.1.0.0)
|
45
|
-
rainbow (>= 2.2.2, < 4.0)
|
46
|
-
regexp_parser (>= 1.8, < 3.0)
|
47
|
-
rexml
|
48
|
-
rubocop-ast (>= 1.16.0, < 2.0)
|
49
|
-
ruby-progressbar (~> 1.7)
|
50
|
-
unicode-display_width (>= 1.4.0, < 3.0)
|
51
|
-
rubocop-ast (1.18.0)
|
52
|
-
parser (>= 3.1.1.0)
|
53
|
-
rubocop-performance (1.15.0)
|
54
|
-
rubocop (>= 1.7.0, < 2.0)
|
55
|
-
rubocop-ast (>= 0.4.0)
|
56
|
-
ruby-progressbar (1.11.0)
|
57
|
-
rubyzip (2.3.2)
|
58
|
-
selenium-webdriver (4.3.0)
|
59
|
-
childprocess (>= 0.5, < 5.0)
|
60
|
-
rexml (~> 3.2, >= 3.2.5)
|
61
|
-
rubyzip (>= 1.2.2, < 3.0)
|
62
|
-
websocket (~> 1.0)
|
63
|
-
unicode-display_width (2.1.0)
|
64
|
-
websocket (1.2.9)
|
65
|
-
websocket-driver (0.7.5)
|
66
|
-
websocket-extensions (>= 0.1.0)
|
67
|
-
websocket-extensions (0.1.5)
|
68
|
-
|
69
|
-
PLATFORMS
|
70
|
-
ruby
|
71
|
-
|
72
|
-
DEPENDENCIES
|
73
|
-
rake (~> 13.0)
|
74
|
-
rspec (~> 3.0)
|
75
|
-
rubocop (~> 1.26.0)
|
76
|
-
rubocop-performance
|
77
|
-
testa_appium_driver!
|
78
|
-
|
79
|
-
BUNDLED WITH
|
80
|
-
2.3.14
|
data/testa_appium_driver.gemspec
DELETED
@@ -1,41 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
Gem::Specification.new do |spec|
|
4
|
-
spec.name = "testa_appium_driver"
|
5
|
-
spec.version = "0.1.27"
|
6
|
-
spec.authors = ["karlo.razumovic"]
|
7
|
-
spec.email = ["karlo.razumovic@gmail.com"]
|
8
|
-
|
9
|
-
spec.summary = "Appium made easy"
|
10
|
-
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"
|
11
|
-
spec.homepage = "https://github.com/Karazum/testa_appium_driver"
|
12
|
-
spec.license = "MIT"
|
13
|
-
spec.required_ruby_version = ">= 2.7.6"
|
14
|
-
|
15
|
-
#spec.metadata["allowed_push_host"] = "Set to 'https://mygemserver.com'"
|
16
|
-
|
17
|
-
spec.metadata["documentation_uri"] = "https://www.rubydoc.info/gems/testa_appium_driver"
|
18
|
-
spec.metadata["homepage_uri"] = spec.homepage
|
19
|
-
spec.metadata["source_code_uri"] = "https://github.com/Karazum/testa_appium_driver"
|
20
|
-
spec.metadata["changelog_uri"] = "https://github.com/Karazum/testa_appium_driver"
|
21
|
-
|
22
|
-
# this can be optimized
|
23
|
-
# spec.files = Dir["#{File.dirname(__FILE__)}/*"]
|
24
|
-
|
25
|
-
spec.files = Dir.chdir(File.expand_path(__dir__)) do
|
26
|
-
`git ls-files -z`.split("\x0").reject { |f| f.match(%r{\A(?:test|spec|features)/}) }
|
27
|
-
end
|
28
|
-
|
29
|
-
spec.bindir = "exe"
|
30
|
-
spec.executables = spec.files.grep(%r{\Aexe/}) { |f| File.basename(f) }
|
31
|
-
spec.require_paths = ["lib"]
|
32
|
-
|
33
|
-
spec.add_runtime_dependency "appium_lib_core"
|
34
|
-
spec.add_runtime_dependency "json", ["~> 2.3"]
|
35
|
-
|
36
|
-
spec.add_development_dependency "rubocop", ["= 1.19.0"]
|
37
|
-
spec.add_development_dependency "rake", ["~> 13.0"]
|
38
|
-
|
39
|
-
# For more information and examples about making a new gem, checkout our
|
40
|
-
# guide at: https://bundler.io/guides/creating_gem.html
|
41
|
-
end
|