bugsnag-maze-runner 8.20.3 → 8.21.0
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/features/support/internal_hooks.rb +1 -0
- data/lib/maze/aws_public_ip.rb +2 -1
- data/lib/maze/client/appium/bs_devices.rb +7 -5
- data/lib/maze/client/selenium/bb_browsers.yml +2 -8
- data/lib/maze/maze_output.rb +1 -1
- data/lib/maze/plugins/datadog_metrics_plugin.rb +2 -1
- data/lib/maze/server.rb +7 -0
- data/lib/maze/servlets/servlet.rb +19 -1
- 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: 6406ed810240882d3590f10cf4fdfb005aa8a93ef72c2b4c6dd47f501c8bb1ed
|
4
|
+
data.tar.gz: 7b0f7ec092723d75a5131aa6920d3c88bc78192e28b5f313e13d7a380d0375d5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: dc2f6a05304be29f5976b0154040cf776e3646a534e7cd7e6a56af73ca00ad8921151622def48d3db41c4340688fe9e80e6de12378f19314c128ba3eb610cab1
|
7
|
+
data.tar.gz: 617560dae17667ae44108cda253ef9d12a9c42a7a322209446c4083d9ca8876f1c9f5e5e7e76894305f06acbdac7c30729277f344a573bc4ff68ec4363dd998d
|
data/lib/maze/aws_public_ip.rb
CHANGED
@@ -34,7 +34,8 @@ module Maze
|
|
34
34
|
def determine_public_ip
|
35
35
|
# 169.254.169.254 is the address of the AWS instance metadata service
|
36
36
|
# See https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instancedata-data-retrieval.html
|
37
|
-
`curl --silent -
|
37
|
+
token = `curl --silent -H "X-aws-ec2-metadata-token-ttl-seconds: 120" -XPUT http://169.254.169.254/latest/api/token`
|
38
|
+
`curl -H "X-aws-ec2-metadata-token: #{token}" --silent -XGET http://169.254.169.254/latest/meta-data/public-ipv4`
|
38
39
|
end
|
39
40
|
|
40
41
|
# Determines the external port of the running Docker container that's associated with the port given
|
@@ -71,13 +71,15 @@ module Maze
|
|
71
71
|
def create_hash
|
72
72
|
hash = {
|
73
73
|
# Classic, non-specific devices for each Android version
|
74
|
+
'ANDROID_16' => make_android_hash('Google Pixel 9', '16.0'),
|
75
|
+
'ANDROID_15' => make_android_hash('Google Pixel 9', '15.0'),
|
76
|
+
'ANDROID_14' => make_android_hash('Google Pixel 8', '14.0'),
|
74
77
|
'ANDROID_13' => make_android_hash('Google Pixel 6 Pro', '13.0'),
|
75
|
-
'ANDROID_12' => make_android_hash('Google Pixel
|
76
|
-
'ANDROID_11' => make_android_hash('
|
77
|
-
'ANDROID_10' => make_android_hash('Google Pixel 4', '10.0'),
|
78
|
+
'ANDROID_12' => make_android_hash('Google Pixel 6', '12.0'),
|
79
|
+
'ANDROID_11' => make_android_hash('Samsung Galaxy S21', '11.0'),
|
80
|
+
'ANDROID_10' => make_android_hash('Google Pixel 4 XL', '10.0'),
|
78
81
|
'ANDROID_9' => make_android_hash('Google Pixel 3', '9.0'),
|
79
|
-
'ANDROID_8' => make_android_hash('Samsung Galaxy
|
80
|
-
'ANDROID_7' => make_android_hash('Google Pixel', '7.1'),
|
82
|
+
'ANDROID_8' => make_android_hash('Samsung Galaxy S9', '8.0'),
|
81
83
|
|
82
84
|
# iOS devices
|
83
85
|
'IOS_17' => make_ios_hash('iPhone 15', '17'),
|
@@ -65,16 +65,10 @@ edge_latest:
|
|
65
65
|
version: 'latest'
|
66
66
|
resolution: '1920x1080'
|
67
67
|
|
68
|
-
|
68
|
+
safari_18:
|
69
69
|
platform: 'macOS'
|
70
70
|
osVersion: '13'
|
71
71
|
browserName: 'safari'
|
72
|
-
version: '
|
72
|
+
version: '18'
|
73
73
|
resolution: '2560x1920'
|
74
74
|
|
75
|
-
safari_15:
|
76
|
-
platform: 'macOS'
|
77
|
-
osVersion: '12'
|
78
|
-
browserName: 'safari'
|
79
|
-
version: '15'
|
80
|
-
resolution: '2560x1920'
|
data/lib/maze/maze_output.rb
CHANGED
@@ -13,7 +13,7 @@ module Maze
|
|
13
13
|
path = output_folder
|
14
14
|
FileUtils.makedirs(path)
|
15
15
|
|
16
|
-
request_types = %w[errors sessions builds uploads logs sourcemaps traces invalid]
|
16
|
+
request_types = %w[errors sessions builds uploads logs sourcemaps traces ignored invalid]
|
17
17
|
request_types << 'sampling requests'
|
18
18
|
|
19
19
|
request_types.each do |request_type|
|
@@ -63,7 +63,8 @@ module Maze
|
|
63
63
|
#
|
64
64
|
# @returns [String] The local ipv4 address the Datadog agent is running on
|
65
65
|
def aws_instance_ip
|
66
|
-
`curl --silent -
|
66
|
+
token = `curl --silent -H "X-aws-ec2-metadata-token-ttl-seconds: 120" -XPUT http://169.254.169.254/latest/api/token`
|
67
|
+
`curl -H "X-aws-ec2-metadata-token: #{token}" --silent -XGET http://169.254.169.254/latest/meta-data/local-ipv4`
|
67
68
|
end
|
68
69
|
end
|
69
70
|
end
|
data/lib/maze/server.rb
CHANGED
@@ -93,6 +93,8 @@ module Maze
|
|
93
93
|
uploads
|
94
94
|
when 'sourcemap', 'sourcemaps'
|
95
95
|
sourcemaps
|
96
|
+
when 'ignored', 'ignored requests'
|
97
|
+
ignored_requests
|
96
98
|
when 'invalid', 'invalid requests'
|
97
99
|
invalid_requests
|
98
100
|
else
|
@@ -171,6 +173,10 @@ module Maze
|
|
171
173
|
@commands ||= RequestList.new
|
172
174
|
end
|
173
175
|
|
176
|
+
def ignored_requests
|
177
|
+
@ignored_requests ||= RequestList.new
|
178
|
+
end
|
179
|
+
|
174
180
|
# Whether the server thread is running
|
175
181
|
# An array of any invalid requests received.
|
176
182
|
# Each request is hash consisting of:
|
@@ -270,6 +276,7 @@ module Maze
|
|
270
276
|
sampling_requests.clear
|
271
277
|
traces.clear
|
272
278
|
logs.clear
|
279
|
+
ignored_requests.clear
|
273
280
|
invalid_requests.clear
|
274
281
|
end
|
275
282
|
end
|
@@ -159,7 +159,25 @@ module Maze
|
|
159
159
|
private
|
160
160
|
|
161
161
|
def add_request(request)
|
162
|
-
|
162
|
+
if @request_type == :errors and system_generated_anr?(request)
|
163
|
+
$logger.info 'Ignoring system-generated ANR'
|
164
|
+
Server.list_for('ignored').add(request)
|
165
|
+
else
|
166
|
+
Server.list_for(@request_type).add(request)
|
167
|
+
end
|
168
|
+
end
|
169
|
+
|
170
|
+
def system_generated_anr?(request)
|
171
|
+
body = request[:body]
|
172
|
+
error_class = Maze::Helper.read_key_path(body, 'events.0.exceptions.0.errorClass')
|
173
|
+
return false unless error_class == 'ANR'
|
174
|
+
|
175
|
+
stack_trace = Maze::Helper.read_key_path(body, 'events.0.exceptions.0.stacktrace')
|
176
|
+
return false unless stack_trace.kind_of?(Array)
|
177
|
+
|
178
|
+
method_1 = stack_trace.any? { |frame| frame['method'] == 'android.os.BinderProxy.transact' }
|
179
|
+
method_2 = stack_trace.any? { |frame| frame['method'] == 'android.app.IActivityManager$Stub$Proxy.handleApplicationCrash' }
|
180
|
+
method_1 && method_2
|
163
181
|
end
|
164
182
|
|
165
183
|
def log_request(request)
|
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 = '8.
|
10
|
+
VERSION = '8.21.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: 8.
|
4
|
+
version: 8.21.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:
|
11
|
+
date: 2025-09-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: cucumber
|
@@ -156,14 +156,14 @@ dependencies:
|
|
156
156
|
requirements:
|
157
157
|
- - "~>"
|
158
158
|
- !ruby/object:Gem::Version
|
159
|
-
version: 0.
|
159
|
+
version: 1.0.5
|
160
160
|
type: :runtime
|
161
161
|
prerelease: false
|
162
162
|
version_requirements: !ruby/object:Gem::Requirement
|
163
163
|
requirements:
|
164
164
|
- - "~>"
|
165
165
|
- !ruby/object:Gem::Version
|
166
|
-
version: 0.
|
166
|
+
version: 1.0.5
|
167
167
|
- !ruby/object:Gem::Dependency
|
168
168
|
name: dogstatsd-ruby
|
169
169
|
requirement: !ruby/object:Gem::Requirement
|