bugsnag-maze-runner 9.18.1 → 9.19.1
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/bin/maze-runner +1 -0
- data/lib/features/support/internal_hooks.rb +1 -0
- data/lib/maze/bugsnag_config.rb +14 -0
- data/lib/maze/client/selenium/bb_browsers.yml +4 -4
- data/lib/maze/error_captor.rb +47 -0
- data/lib/maze/hooks/appium_hooks.rb +26 -8
- data/lib/maze/maze_output.rb +1 -1
- data/lib/maze.rb +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: '068a0726f8c46c10e1b0b9fa81515350b79442592187fe9372fe1ff71c9f6034'
|
4
|
+
data.tar.gz: fd5dfc8752c96f1d0eef42673637e0cb61e0a78acd399586d96067ec4fdded9c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 13ffe1a63394e67502883dcfb521abe10188e0ab6ac65f8484ece1fd1d30164f2fbe9ddb24db9915bce18ffa20019cc9e32d3272f4c27d69c5f61c06b2792423
|
7
|
+
data.tar.gz: 01f0b62a252b17cf44d6356d70472a2f4a200300b4794b6c234b2d7678bfc42a7d3e9c1cfa3e1cba2969b97cff96c19062145ac6e98158ceba41f47f1b84f531
|
data/bin/maze-runner
CHANGED
@@ -36,6 +36,7 @@ require_relative '../lib/maze/aws_public_ip'
|
|
36
36
|
require_relative '../lib/maze/compare'
|
37
37
|
require_relative '../lib/maze/docker'
|
38
38
|
require_relative '../lib/maze/document_server'
|
39
|
+
require_relative '../lib/maze/error_captor'
|
39
40
|
require_relative '../lib/maze/errors'
|
40
41
|
require_relative '../lib/maze/generator'
|
41
42
|
require_relative '../lib/maze/helper'
|
data/lib/maze/bugsnag_config.rb
CHANGED
@@ -33,6 +33,7 @@ module Maze
|
|
33
33
|
end
|
34
34
|
config.middleware.use(AssertErrorMiddleware)
|
35
35
|
config.middleware.use(AmbiguousErrorMiddleware)
|
36
|
+
config.middleware.use(ErrorCaptureMiddleware)
|
36
37
|
config.add_metadata(:'buildkite', metadata)
|
37
38
|
config.project_root = Dir.pwd
|
38
39
|
end
|
@@ -88,5 +89,18 @@ module Maze
|
|
88
89
|
@middleware.call(report)
|
89
90
|
end
|
90
91
|
end
|
92
|
+
|
93
|
+
class ErrorCaptureMiddleware
|
94
|
+
|
95
|
+
def initialize(middleware)
|
96
|
+
@middleware = middleware
|
97
|
+
end
|
98
|
+
|
99
|
+
def call(report)
|
100
|
+
Maze::ErrorCaptor.add(report.dup)
|
101
|
+
|
102
|
+
@middleware.call(report)
|
103
|
+
end
|
104
|
+
end
|
91
105
|
end
|
92
106
|
end
|
@@ -65,16 +65,16 @@ 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
|
-
|
75
|
+
safari_17:
|
76
76
|
platform: 'macOS'
|
77
77
|
osVersion: '12'
|
78
78
|
browserName: 'safari'
|
79
|
-
version: '
|
79
|
+
version: '17'
|
80
80
|
resolution: '2560x1920'
|
@@ -0,0 +1,47 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Maze
|
4
|
+
class ErrorCaptor
|
5
|
+
attr_reader :captured_errors
|
6
|
+
|
7
|
+
class << self
|
8
|
+
|
9
|
+
# Sets the last error report that BugSnag has captured
|
10
|
+
#
|
11
|
+
# @param report [Bugsnag::Report] The report to set
|
12
|
+
def add(report)
|
13
|
+
captured_errors << report
|
14
|
+
end
|
15
|
+
|
16
|
+
# Returns an array of the primary error classes of captured error reports
|
17
|
+
#
|
18
|
+
# @return [Array<String>] The error classes
|
19
|
+
def classes
|
20
|
+
captured_errors.map { |report| report.summary[:error_class] }
|
21
|
+
end
|
22
|
+
|
23
|
+
# Returns the primary error messages of the captured error reports
|
24
|
+
#
|
25
|
+
# @return [Array<String>] The error messages
|
26
|
+
def messages
|
27
|
+
captured_errors.map { |report| report.summary[:message] }
|
28
|
+
end
|
29
|
+
|
30
|
+
# Resets the captured errors array
|
31
|
+
def reset
|
32
|
+
@captured_errors = []
|
33
|
+
end
|
34
|
+
|
35
|
+
# Whether any error reports exist in the current context
|
36
|
+
#
|
37
|
+
# @return [Boolean] Whether a report exists
|
38
|
+
def empty?
|
39
|
+
captured_errors.empty?
|
40
|
+
end
|
41
|
+
|
42
|
+
def captured_errors
|
43
|
+
@captured_errors ||= []
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
@@ -3,6 +3,13 @@ module Maze
|
|
3
3
|
module Hooks
|
4
4
|
# Hooks for Appium mode use
|
5
5
|
class AppiumHooks < InternalHooks
|
6
|
+
|
7
|
+
APPIUM_DRIVER_FAILED_ERRORS = [
|
8
|
+
Selenium::WebDriver::Error::UnknownError,
|
9
|
+
Selenium::WebDriver::Error::ServerError,
|
10
|
+
Selenium::WebDriver::Error::WebDriverError
|
11
|
+
]
|
12
|
+
|
6
13
|
@client
|
7
14
|
|
8
15
|
def before_all
|
@@ -23,21 +30,23 @@ module Maze
|
|
23
30
|
end
|
24
31
|
|
25
32
|
def after(scenario)
|
33
|
+
if scenario.failed?
|
34
|
+
Maze.driver = nil if driver_has_failed?
|
35
|
+
$logger.warn('The appium driver has failed, removing it to prevent future errors')
|
36
|
+
end
|
26
37
|
|
27
38
|
if Maze.config.os == 'macos'
|
28
39
|
# Close the app - without the sleep, launching the app for the next scenario intermittently fails
|
29
40
|
system("killall -KILL #{Maze.config.app} && sleep 1")
|
30
41
|
elsif [:bb, :bs, :local].include? Maze.config.farm
|
31
|
-
write_device_logs(scenario) if scenario.failed?
|
32
|
-
|
33
42
|
# Reset the server to ensure that test fixtures cannot fetch
|
34
43
|
# commands from the previous scenario (in idempotent mode).
|
35
44
|
begin
|
36
|
-
Maze.driver.terminate_app Maze.driver
|
37
|
-
rescue Selenium::WebDriver::Error::UnknownError
|
45
|
+
Maze.driver.terminate_app Maze.driver&.app_id
|
46
|
+
rescue Selenium::WebDriver::Error::UnknownError, Selenium::WebDriver::Error::InvalidSessionIdError
|
38
47
|
if Maze.config.appium_version && Maze.config.appium_version.to_f < 2.0
|
39
48
|
$logger.warn 'terminate_app failed, using the slower but more forceful close_app instead'
|
40
|
-
Maze.driver
|
49
|
+
Maze.driver&.close_app
|
41
50
|
else
|
42
51
|
$logger.warn 'terminate_app failed, future errors may occur if the application did not close remotely'
|
43
52
|
end
|
@@ -73,6 +82,14 @@ module Maze
|
|
73
82
|
|
74
83
|
private
|
75
84
|
|
85
|
+
def driver_has_failed?
|
86
|
+
return false if Maze::ErrorCaptor.empty?
|
87
|
+
|
88
|
+
Maze::ErrorCaptor.classes.any? do |error_class|
|
89
|
+
APPIUM_DRIVER_FAILED_ERRORS.include?(error_class)
|
90
|
+
end
|
91
|
+
end
|
92
|
+
|
76
93
|
# Pulls the device logs using Appium and writes them to file in the maze_output folder
|
77
94
|
def write_device_logs(scenario)
|
78
95
|
log_name = case Maze::Helper.get_current_platform
|
@@ -81,9 +98,10 @@ module Maze
|
|
81
98
|
when 'ios'
|
82
99
|
'syslog'
|
83
100
|
end
|
84
|
-
|
85
|
-
|
86
|
-
|
101
|
+
unless Maze.driver.nil?
|
102
|
+
logs = Maze.driver.get_log(log_name)
|
103
|
+
Maze::MazeOutput.new(scenario).write_device_logs(logs)
|
104
|
+
end
|
87
105
|
end
|
88
106
|
end
|
89
107
|
end
|
data/lib/maze/maze_output.rb
CHANGED
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.19.1'
|
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.19.1
|
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-
|
11
|
+
date: 2024-11-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: cucumber
|
@@ -474,6 +474,7 @@ files:
|
|
474
474
|
- lib/maze/document_server.rb
|
475
475
|
- lib/maze/driver/appium.rb
|
476
476
|
- lib/maze/driver/browser.rb
|
477
|
+
- lib/maze/error_captor.rb
|
477
478
|
- lib/maze/errors.rb
|
478
479
|
- lib/maze/generator.rb
|
479
480
|
- lib/maze/helper.rb
|