testa_appium_driver 0.1.28 → 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 +2 -3
- 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
|
|
@@ -241,8 +241,7 @@ module ::TestaAppiumDriver
|
|
|
241
241
|
max_scrolls_reached = false
|
|
242
242
|
end_of_scroll_reached = false
|
|
243
243
|
# $ctx.puts("starting scroll to")
|
|
244
|
-
until (@driver.android? && @locator.exists?) ||
|
|
245
|
-
(@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
|
|
246
245
|
# $ctx.puts("Scroll to round: #{rounds}")
|
|
247
246
|
end_of_scroll_reached = is_end_of_scroll?
|
|
248
247
|
case direction
|
|
@@ -270,7 +269,7 @@ module ::TestaAppiumDriver
|
|
|
270
269
|
break if rounds == @max_scrolls
|
|
271
270
|
end
|
|
272
271
|
# $ctx.puts("end scroll to")
|
|
273
|
-
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
|
|
274
273
|
end
|
|
275
274
|
|
|
276
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.28)
|
|
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.2)
|
|
19
|
-
eventmachine (>= 0.12.0)
|
|
20
|
-
websocket-driver (>= 0.5.1)
|
|
21
|
-
json (2.6.3)
|
|
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.28"
|
|
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
|