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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: a928b65bbbf37b2eab57476e07128da1a3d9687df05067af815b61f07e1fda4a
4
- data.tar.gz: bcc382e705d7ad894efb774c45df46c8a0e11c54196c2f95d4ec75eb1c3a645a
3
+ metadata.gz: 6406ed810240882d3590f10cf4fdfb005aa8a93ef72c2b4c6dd47f501c8bb1ed
4
+ data.tar.gz: 7b0f7ec092723d75a5131aa6920d3c88bc78192e28b5f313e13d7a380d0375d5
5
5
  SHA512:
6
- metadata.gz: ded12f7dc2d5a1b7946bf3946ada2adbd0f5fa8f09963d25a8f369ffa2cf9dba6871d6a6b7aeebcb7d9cbac028bd6f5214d1459c12a7aa38273d92cf730f2fde
7
- data.tar.gz: a4611075356879b4217883ae3aef1ad9105935e57e02fb6f439accf74cd9f68d9a6039e6423fb833c5e14b45986ecdcf58ae5896b75c65c857e63a2f9c3d7f88
6
+ metadata.gz: dc2f6a05304be29f5976b0154040cf776e3646a534e7cd7e6a56af73ca00ad8921151622def48d3db41c4340688fe9e80e6de12378f19314c128ba3eb610cab1
7
+ data.tar.gz: 617560dae17667ae44108cda253ef9d12a9c42a7a322209446c4083d9ca8876f1c9f5e5e7e76894305f06acbdac7c30729277f344a573bc4ff68ec4363dd998d
@@ -161,6 +161,7 @@ After do |scenario|
161
161
  output_received_requests('traces')
162
162
  output_received_requests('builds')
163
163
  output_received_requests('logs')
164
+ output_received_requests('ignored requests')
164
165
  output_received_requests('invalid requests')
165
166
  end
166
167
 
@@ -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 -XGET http://169.254.169.254/latest/meta-data/public-ipv4`
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 5', '12.0'),
76
- 'ANDROID_11' => make_android_hash('Google Pixel 4', '11.0'),
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 Note 9', '8.1'),
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
- safari_16:
68
+ safari_18:
69
69
  platform: 'macOS'
70
70
  osVersion: '13'
71
71
  browserName: 'safari'
72
- version: '16'
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'
@@ -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 -XGET http://169.254.169.254/latest/meta-data/local-ipv4`
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
- Server.list_for(@request_type).add(request)
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.20.3'
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.20.3
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: 2024-08-01 00:00:00.000000000 Z
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.9.6
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.9.6
166
+ version: 1.0.5
167
167
  - !ruby/object:Gem::Dependency
168
168
  name: dogstatsd-ruby
169
169
  requirement: !ruby/object:Gem::Requirement