appium_connect 1.0.6 → 1.0.7
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/Android.rb +8 -0
- data/lib/Appium.rb +68 -0
- data/lib/FileSystemHelpers.rb +23 -0
- data/lib/iOS.rb +3 -0
- metadata +5 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0bc443e180f4662bda079df193410f80590896a9
|
4
|
+
data.tar.gz: 35ccaba6f77978aa18c6f0d116f2cbcffc214b9b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 96b27ad393df90e1b3cba1ed4ff7a67ab308317d31c68cc7f4cec4a78916ab7bba8775e858fc10be3e444115146cd161baae7c101bb7090ac7183d37ddf516d8
|
7
|
+
data.tar.gz: 7950519b8e5f0ccc41d03f780b6067a21c92b4ff4852a4a5fed4022235fc3840f2ee4ecf912bf5713e0ac53f49e86cdf8b0012edf34195a3125c9b0d8ddf9096
|
data/lib/Android.rb
ADDED
@@ -0,0 +1,8 @@
|
|
1
|
+
def get_android_devices
|
2
|
+
ENV["DEVICES"] = JSON.generate((`adb devices`).lines.select { |line| line.match(/\tdevice$/) }.map.each_with_index { |line, index| { udid: line.split("\t")[0], thread: index + 1 } })
|
3
|
+
end
|
4
|
+
|
5
|
+
def get_device_osv udid
|
6
|
+
command = "adb -s #{udid} shell getprop ro.build.version.sdk"
|
7
|
+
`#{command}`
|
8
|
+
end
|
data/lib/Appium.rb
ADDED
@@ -0,0 +1,68 @@
|
|
1
|
+
|
2
|
+
def appium_server_start(**options)
|
3
|
+
command = 'appium'
|
4
|
+
command << " --nodeconfig #{options[:config]}" if options.key?(:config)
|
5
|
+
command << " -p #{options[:port]}" if options.key?(:port)
|
6
|
+
command << " -bp #{options[:bp]}" if options.key?(:bp)
|
7
|
+
command << " --udid #{options[:udid]}" if options.key?(:udid)
|
8
|
+
command << " --automation-name #{options[:automationName]}" if options.key?(:automationName)
|
9
|
+
command << " --selendroid-port #{options[:selendroidPort]}" if options.key?(:selendroidPort)
|
10
|
+
command << " --log #{Dir.pwd}/output/#{options[:log]}" if options.key?(:log)
|
11
|
+
command << " --tmp /tmp/#{options[:tmp]}" if options.key?(:tmp)
|
12
|
+
command << " --chromedriver-port #{options[:cp]}" if options.key?(:cp)
|
13
|
+
command << " --command-timeout 180"
|
14
|
+
Dir.chdir('.') {
|
15
|
+
if Gem::Platform.local.os == 'linux'
|
16
|
+
pid = system('x-terminal-emulator -e ' + command)
|
17
|
+
elsif Gem::Platform.local.os == 'darwin'
|
18
|
+
`osascript -e 'tell app "Terminal" to do script "#{command}"'`
|
19
|
+
else
|
20
|
+
pid = system('start ' + command)
|
21
|
+
end
|
22
|
+
|
23
|
+
puts 'Waiting for Appium to start up...'
|
24
|
+
sleep 5
|
25
|
+
|
26
|
+
if pid.nil?
|
27
|
+
puts 'Appium server did not start :('
|
28
|
+
end
|
29
|
+
}
|
30
|
+
end
|
31
|
+
|
32
|
+
|
33
|
+
|
34
|
+
def launch_hub_and_nodes(ip, hubIp, nodeDir)
|
35
|
+
|
36
|
+
if Gem::Platform.local.os == 'darwin'
|
37
|
+
|
38
|
+
ios_devices = JSON.parse(get_ios_devices)
|
39
|
+
|
40
|
+
ios_devices.size.times do |index|
|
41
|
+
port = 4100 + index
|
42
|
+
config_name = "#{ios_devices[index]["udid"]}.json"
|
43
|
+
generate_node_config nodeDir, config_name, ios_devices[index]["udid"], port, ip, hubIp, 'MAC', 'safari'
|
44
|
+
node_config = nodeDir + 'node_configs/' +"#{config_name}"
|
45
|
+
appium_server_start config: node_config, port: port, udid: ios_devices[index]["udid"], log: "appium-#{ios_devices[index]["udid"]}.log", tmp: ios_devices[index]["udid"]
|
46
|
+
end
|
47
|
+
|
48
|
+
else
|
49
|
+
|
50
|
+
devices = JSON.parse(get_android_devices)
|
51
|
+
|
52
|
+
devices.size.times do |index|
|
53
|
+
port = 4000 + index
|
54
|
+
bp = 2250 + index
|
55
|
+
sdp = 5000 + index
|
56
|
+
cp = 6000 + index
|
57
|
+
sdkv = get_device_osv(devices[index]['udid']).strip.to_i
|
58
|
+
config_name = "#{devices[index]["udid"]}.json"
|
59
|
+
generate_node_config nodeDir, config_name, devices[index]["udid"], port, ip, hubIp, 'android', 'chrome'
|
60
|
+
node_config = nodeDir + 'node_configs/' +"#{config_name}"
|
61
|
+
if sdkv === 16 || sdkv === 17
|
62
|
+
appium_server_start config: node_config, port: port, bp: bp, udid: devices[index]["udid"], automationName: "selendroid", selendroidPort: sdp, log: "appium-#{devices[index]["udid"]}.log", tmp: devices[index]["udid"], cp: cp
|
63
|
+
else
|
64
|
+
appium_server_start config: node_config, port: port, bp: bp, udid: devices[index]["udid"], log: "appium-#{devices[index]["udid"]}.log", tmp: devices[index]["udid"], cp: cp
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|
68
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
|
2
|
+
def get_platform()
|
3
|
+
if Gem::Platform.local.os == 'darwin'
|
4
|
+
return :mac
|
5
|
+
elsif Gem::Platform.local.os == 'linux'
|
6
|
+
return :linux
|
7
|
+
else
|
8
|
+
return :windows
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
def generate_node_config(nodeDir, file_name, udid, appium_port, ip, hubIp, platform, browser)
|
13
|
+
f = File.new(nodeDir + "node_configs/#{file_name}", "w")
|
14
|
+
f.write( JSON.generate({ capabilities: [{ udid: udid, browserName: udid, maxInstances: 1, platform: platform, deviceName: udid },{ browserName: browser, maxInstances: 1, deviceName: udid, udid: udid, seleniumProtocol: 'WebDriver', platform: platform , applicationName: udid}],
|
15
|
+
configuration: { cleanUpCycle: 2000, timeout: 180000, registerCycle: 5000, proxy: "org.openqa.grid.selenium.proxy.DefaultRemoteProxy", url: "http://" + ip + ":#{appium_port}/wd/hub",
|
16
|
+
host: ip, port: appium_port, maxSession: 1, register: true, hubPort: 4444, hubHost: hubIp } } ) )
|
17
|
+
f.close
|
18
|
+
end
|
19
|
+
|
20
|
+
|
21
|
+
def create_dir(name)
|
22
|
+
FileUtils::mkdir_p name
|
23
|
+
end
|
data/lib/iOS.rb
ADDED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: appium_connect
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Matt Watson
|
@@ -19,7 +19,11 @@ extensions: []
|
|
19
19
|
extra_rdoc_files: []
|
20
20
|
files:
|
21
21
|
- bin/AppiumConnect
|
22
|
+
- lib/Android.rb
|
23
|
+
- lib/Appium.rb
|
22
24
|
- lib/AppiumConnect.rb
|
25
|
+
- lib/FileSystemHelpers.rb
|
26
|
+
- lib/iOS.rb
|
23
27
|
homepage: https://github.com/Mattwhooo/AppiumConnect
|
24
28
|
licenses:
|
25
29
|
- MIT
|