bugsnag-maze-runner 9.7.0 → 9.8.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/maze/client/appium/bb_client.rb +9 -7
- data/lib/maze/client/appium/bb_devices.rb +72 -28
- data/lib/maze/server.rb +1 -0
- data/lib/maze.rb +1 -1
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b6101c495b7debb939e4bb83f21dbc015c13f7bc58ce797d69fb90e618c6be6d
|
4
|
+
data.tar.gz: 69f5fdd5eec4c1f5bc8e9ed2aaa188531a6f54e80ec26471873ef93e7ecb1ecd
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: '0438524dc2173c1f31b323cca182e651ea1fc095727ee4658c5bb14baa986b5a17230fcd64460dd9eb9e805469c84eae2d3eadb85ae47668501a70dd1211e090'
|
7
|
+
data.tar.gz: bcf7dfcf91d8093099733839d06b38b1cea25548617eebad4f88a01910d8f64d6e0db26de0de5ebe38977e1cfa2b64d3fed80f8bc693d5ec6071c8dc633f5bb0
|
@@ -34,6 +34,10 @@ module Maze
|
|
34
34
|
interval = 10
|
35
35
|
elsif error.message.include? 'Could not proxy command to the remote server'
|
36
36
|
interval = 10
|
37
|
+
elsif error.message.include? 'Could not find a connected Android device'
|
38
|
+
interval = 10
|
39
|
+
elsif error.message.include? '\'platformVersion\' must be a valid version number.'
|
40
|
+
interval = 10
|
37
41
|
else
|
38
42
|
# Do not retry in any other case
|
39
43
|
end
|
@@ -54,26 +58,24 @@ module Maze
|
|
54
58
|
end
|
55
59
|
|
56
60
|
def device_capabilities
|
57
|
-
# Doubling up on capabilities in both the `appium:options` and `appium` sub dictionaries.
|
58
|
-
# See PLAT-11087
|
59
61
|
config = Maze.config
|
60
62
|
common_caps = {
|
61
63
|
'noReset' => true,
|
62
64
|
'newCommandTimeout' => 600
|
63
65
|
}
|
64
66
|
capabilities = {
|
65
|
-
'appium:options' => common_caps,
|
66
|
-
'appium' => common_caps,
|
67
67
|
'bitbar:options' => {
|
68
|
-
# Some capabilities probably belong in the top level
|
69
|
-
# of the hash, but BitBar picks them up from here.
|
70
68
|
'apiKey' => config.access_key,
|
71
69
|
'app' => config.app,
|
72
70
|
'findDevice' => false,
|
73
71
|
'testTimeout' => 7200
|
74
72
|
}
|
75
73
|
}
|
76
|
-
|
74
|
+
if Maze.config.appium_version && Maze.config.appium_version.to_f < 2.0
|
75
|
+
capabilities.merge!(common_caps)
|
76
|
+
else
|
77
|
+
capabilities['appium:options'] = common_caps
|
78
|
+
end
|
77
79
|
capabilities.deep_merge! BitBarClientUtils.dashboard_capabilities
|
78
80
|
capabilities.deep_merge! BitBarDevices.get_available_device(config.device)
|
79
81
|
capabilities['bitbar:options']['appiumVersion'] = config.appium_version unless config.appium_version.nil?
|
@@ -18,22 +18,44 @@ module Maze
|
|
18
18
|
if device_group_ids
|
19
19
|
# Device group found - find a free device in it
|
20
20
|
$logger.trace "Got group ids #{device_group_ids} for #{device_or_group_names}"
|
21
|
-
|
22
|
-
|
23
|
-
|
21
|
+
if device_group_ids.size > 1
|
22
|
+
group_id = false
|
23
|
+
group_count, device = api_client.find_device_in_groups(device_group_ids)
|
24
|
+
if device.nil?
|
25
|
+
raise 'There are no devices available'
|
26
|
+
else
|
27
|
+
$logger.info "#{group_count} device(s) currently available in group(s) '#{device_or_group_names}'"
|
28
|
+
end
|
24
29
|
else
|
25
|
-
|
30
|
+
# Since there is only one group, we can use it verbatim
|
31
|
+
$logger.info "Using device group #{device_or_group_names}"
|
32
|
+
group_id = true
|
33
|
+
device_name = device_group_ids.first
|
26
34
|
end
|
27
35
|
else
|
28
36
|
# See if there is a device with the given name
|
29
37
|
device = api_client.find_device device_or_group_names
|
30
38
|
end
|
31
39
|
|
32
|
-
|
33
|
-
|
34
|
-
|
40
|
+
# If a single device has been identified use that to determine other characteristics
|
41
|
+
if device
|
42
|
+
device_name = device['displayName']
|
43
|
+
platform = device['platform'].downcase
|
44
|
+
platform_version = device['softwareVersion']['releaseVersion']
|
35
45
|
|
36
|
-
|
46
|
+
$logger.info "Selected device: #{device_name} (#{platform} #{platform_version})"
|
47
|
+
else
|
48
|
+
# If a device group has been identified, extrapolate characteristics from the group name
|
49
|
+
if android_match = Regexp.new('(ANDROID|android)_(\d{1,2})').match(device_or_group_names)
|
50
|
+
platform = 'android'
|
51
|
+
platform_version = android_match[2]
|
52
|
+
elsif ios_match = Regexp.new('(IOS|ios)_(\d{1,2})').match(device_or_group_names)
|
53
|
+
platform = 'ios'
|
54
|
+
platform_version = ios_match[2]
|
55
|
+
end
|
56
|
+
|
57
|
+
$logger.info "Selected device group: #{device_or_group_names} (#{platform} #{platform_version})"
|
58
|
+
end
|
37
59
|
|
38
60
|
# TODO: Setting the config here is rather a side effect and factoring it out would be better.
|
39
61
|
# For now, though, it means not having to provide the --os and --os-version options on the command line.
|
@@ -42,9 +64,9 @@ module Maze
|
|
42
64
|
|
43
65
|
case platform
|
44
66
|
when 'android'
|
45
|
-
make_android_hash(device_name)
|
67
|
+
make_android_hash(device_name, group_id)
|
46
68
|
when 'ios'
|
47
|
-
make_ios_hash(device_name)
|
69
|
+
make_ios_hash(device_name, group_id)
|
48
70
|
else
|
49
71
|
throw "Invalid device platform specified #{platform}"
|
50
72
|
end
|
@@ -90,9 +112,7 @@ module Maze
|
|
90
112
|
end
|
91
113
|
end
|
92
114
|
|
93
|
-
def
|
94
|
-
# Tripling up on capabilities in the `appium:options`, `appium` sub dictionaries and base dictionary.
|
95
|
-
# See PLAT-11087
|
115
|
+
def android_base_hash
|
96
116
|
appium_options = {
|
97
117
|
'automationName' => 'UiAutomator2',
|
98
118
|
'autoGrantPermissions' => true,
|
@@ -103,20 +123,31 @@ module Maze
|
|
103
123
|
appium_options['appPackage'] = Maze.config.app_package unless Maze.config.app_package.nil?
|
104
124
|
hash = {
|
105
125
|
'platformName' => 'Android',
|
106
|
-
'deviceName' => 'Android Phone'
|
107
|
-
'appium:options' => appium_options,
|
108
|
-
'appium' => appium_options,
|
109
|
-
'bitbar:options' => {
|
110
|
-
'device' => device,
|
111
|
-
}
|
126
|
+
'deviceName' => 'Android Phone'
|
112
127
|
}
|
113
|
-
|
128
|
+
if Maze.config.appium_version && Maze.config.appium_version.to_f < 2.0
|
129
|
+
hash.merge!(appium_options)
|
130
|
+
else
|
131
|
+
hash['appium:options'] = appium_options
|
132
|
+
end
|
133
|
+
hash.dup
|
134
|
+
end
|
135
|
+
|
136
|
+
def make_android_hash(device, group_id = false)
|
137
|
+
hash = android_base_hash
|
138
|
+
if group_id
|
139
|
+
hash['bitbar:options'] = {
|
140
|
+
'deviceGroupId' => device
|
141
|
+
}
|
142
|
+
else
|
143
|
+
hash['bitbar:options'] = {
|
144
|
+
'device' => device
|
145
|
+
}
|
146
|
+
end
|
114
147
|
hash.freeze
|
115
148
|
end
|
116
149
|
|
117
|
-
def
|
118
|
-
# Tripling up on capabilities in the `appium:options`, `appium` sub dictionaries and base dictionary.
|
119
|
-
# See PLAT-11087
|
150
|
+
def ios_base_hash
|
120
151
|
appium_options = {
|
121
152
|
'automationName' => 'XCUITest',
|
122
153
|
'shouldTerminateApp' => 'true',
|
@@ -125,13 +156,26 @@ module Maze
|
|
125
156
|
hash = {
|
126
157
|
'platformName' => 'iOS',
|
127
158
|
'deviceName' => 'iPhone device',
|
128
|
-
|
129
|
-
|
130
|
-
|
159
|
+
}
|
160
|
+
if Maze.config.appium_version && Maze.config.appium_version.to_f < 2.0
|
161
|
+
hash.merge!(appium_options)
|
162
|
+
else
|
163
|
+
hash['appium:options'] = appium_options
|
164
|
+
end
|
165
|
+
hash.dup
|
166
|
+
end
|
167
|
+
|
168
|
+
def make_ios_hash(device, group_id = false)
|
169
|
+
hash = ios_base_hash
|
170
|
+
if group_id
|
171
|
+
hash['bitbar:options'] = {
|
172
|
+
'deviceGroupId' => device
|
173
|
+
}
|
174
|
+
else
|
175
|
+
hash['bitbar:options'] = {
|
131
176
|
'device' => device
|
132
177
|
}
|
133
|
-
|
134
|
-
hash.merge!(appium_options)
|
178
|
+
end
|
135
179
|
hash.freeze
|
136
180
|
end
|
137
181
|
end
|
data/lib/maze/server.rb
CHANGED
@@ -242,6 +242,7 @@ module Maze
|
|
242
242
|
server.mount '/logs', Servlets::LogServlet
|
243
243
|
server.mount '/metrics', Servlets::Servlet, :metrics
|
244
244
|
server.mount '/reflect', Servlets::ReflectiveServlet
|
245
|
+
server.mount '/docs', WEBrick::HTTPServlet::FileHandler, Maze.config.document_server_root unless Maze.config.document_server_root.nil?
|
245
246
|
server.start
|
246
247
|
rescue StandardError => e
|
247
248
|
Bugsnag.notify e
|
data/lib/maze.rb
CHANGED
@@ -7,7 +7,7 @@ require_relative 'maze/timers'
|
|
7
7
|
# Glues the various parts of MazeRunner together that need to be accessed globally,
|
8
8
|
# providing an alternative to the proliferation of global variables or singletons.
|
9
9
|
module Maze
|
10
|
-
VERSION = '9.
|
10
|
+
VERSION = '9.8.0'
|
11
11
|
|
12
12
|
class << self
|
13
13
|
attr_accessor :check, :driver, :internal_hooks, :mode, :start_time, :dynamic_retry, :public_address,
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bugsnag-maze-runner
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 9.
|
4
|
+
version: 9.8.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Steve Kirkland
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-
|
11
|
+
date: 2024-05-02 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: cucumber
|
@@ -240,14 +240,14 @@ dependencies:
|
|
240
240
|
requirements:
|
241
241
|
- - "~>"
|
242
242
|
- !ruby/object:Gem::Version
|
243
|
-
version:
|
243
|
+
version: '7.0'
|
244
244
|
type: :development
|
245
245
|
prerelease: false
|
246
246
|
version_requirements: !ruby/object:Gem::Requirement
|
247
247
|
requirements:
|
248
248
|
- - "~>"
|
249
249
|
- !ruby/object:Gem::Version
|
250
|
-
version:
|
250
|
+
version: '7.0'
|
251
251
|
- !ruby/object:Gem::Dependency
|
252
252
|
name: markdown
|
253
253
|
requirement: !ruby/object:Gem::Requirement
|