bugsnag-maze-runner 8.6.0 → 8.7.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/bin/purge-projects +3 -3
- data/lib/features/support/internal_hooks.rb +3 -1
- data/lib/maze/aws_public_ip.rb +4 -1
- data/lib/maze/bugsnag_config.rb +0 -1
- data/lib/maze/client/appium/base_client.rb +7 -5
- data/lib/maze/client/bb_api_client.rb +1 -2
- data/lib/maze/client/bb_client_utils.rb +3 -1
- data/lib/maze/client/bs_client_utils.rb +6 -2
- data/lib/maze/driver/appium.rb +3 -0
- data/lib/maze/driver/browser.rb +2 -0
- data/lib/maze/hooks/appium_hooks.rb +4 -1
- data/lib/maze/logger.rb +3 -1
- data/lib/maze/proxy.rb +3 -1
- data/lib/maze/server.rb +2 -0
- data/lib/maze/servlets/log_servlet.rb +4 -0
- data/lib/maze/servlets/reflective_servlet.rb +3 -0
- data/lib/maze/servlets/servlet.rb +3 -0
- data/lib/maze/terminating_server.rb +2 -0
- data/lib/maze.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0b7f9aa07e4e22e0ba3a5e1190fc89ec96027c03f68715ff9fc1b12899f8d253
|
4
|
+
data.tar.gz: 4ec7ef8d4c1de53f7affa6e0a627265c451ebb89f0379b036faaf4b4af03923b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6e05c8bd71dab45c398f70f95295bf12338a6459e02dc4b296ba69576654753ea9522f1a6213e0b85ba0a47ba0a3e9375d2a4c747e4b23f3ef057c511d9a03bc
|
7
|
+
data.tar.gz: b364461de84878a0c9f0e1fca85782fef3d27c08b1f22f91f7cfc72cc15fc7a3ff98451d88a6300cef5bc3af7be61222e56030f87d5ec29162e5093a143eaadb
|
data/bin/purge-projects
CHANGED
@@ -14,7 +14,7 @@ class PurgeProjectEntry
|
|
14
14
|
p = Optimist::Parser.new do
|
15
15
|
text 'Purge anonymous projects from BitBar'
|
16
16
|
text ''
|
17
|
-
text 'Requires
|
17
|
+
text 'Requires BITBAR_ACCESS_KEY'
|
18
18
|
text ''
|
19
19
|
text 'Usage [OPTIONS]'
|
20
20
|
text ''
|
@@ -29,10 +29,10 @@ class PurgeProjectEntry
|
|
29
29
|
p.parse ARGV
|
30
30
|
end
|
31
31
|
|
32
|
-
api_key = opts[:api_key] || ENV['
|
32
|
+
api_key = opts[:api_key] || ENV['BITBAR_ACCESS_KEY']
|
33
33
|
|
34
34
|
if api_key.nil?
|
35
|
-
$logger.warn "API KEY has not been provided or
|
35
|
+
$logger.warn "API KEY has not been provided or BITBAR_ACCESS_KEY has not been set"
|
36
36
|
Optimist::with_standard_exception_handling p do
|
37
37
|
raise Optimist::HelpNeeded
|
38
38
|
end
|
@@ -91,7 +91,9 @@ InstallPlugin do |config|
|
|
91
91
|
|
92
92
|
# Only add the retry plugin if --retry is not used on the command line
|
93
93
|
config.filters << Maze::Plugins::GlobalRetryPlugin.new(config) if config.options[:retry].zero?
|
94
|
-
|
94
|
+
|
95
|
+
# TODO: Reporting of test failures as errors deactivated pending PLAT-10963
|
96
|
+
#config.filters << Maze::Plugins::BugsnagReportingPlugin.new(config)
|
95
97
|
end
|
96
98
|
|
97
99
|
# Before each scenario
|
data/lib/maze/aws_public_ip.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
require 'bugsnag'
|
2
|
+
|
1
3
|
module Maze
|
2
4
|
# Determines the public IP address and port when running on Buildkite with the Elastic CI Stack for AWS
|
3
5
|
class AwsPublicIp
|
@@ -52,7 +54,8 @@ module Maze
|
|
52
54
|
json_string = result[0][0].strip
|
53
55
|
json_result = JSON.parse(json_string)
|
54
56
|
port = json_result['NetworkSettings']['Ports']["#{local_port}/tcp"][0]['HostPort']
|
55
|
-
rescue StandardError
|
57
|
+
rescue StandardError => error
|
58
|
+
Bugsnag.notify error
|
56
59
|
$logger.error "Unable to parse public port from: #{json_string}"
|
57
60
|
return 0
|
58
61
|
end
|
data/lib/maze/bugsnag_config.rb
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
require 'bugsnag'
|
1
2
|
require 'json'
|
2
3
|
|
3
4
|
module Maze
|
@@ -26,8 +27,9 @@ module Maze
|
|
26
27
|
# Ensure the device is unlocked
|
27
28
|
begin
|
28
29
|
Maze.driver.unlock
|
29
|
-
rescue =>
|
30
|
-
|
30
|
+
rescue => error
|
31
|
+
Bugsnag.notify error
|
32
|
+
$logger.warn "Failed to unlock device: #{error}"
|
31
33
|
end
|
32
34
|
|
33
35
|
log_run_intro
|
@@ -69,8 +71,9 @@ module Maze
|
|
69
71
|
$logger.info "Running on device: #{udid}" unless udid.nil?
|
70
72
|
end
|
71
73
|
result
|
72
|
-
rescue =>
|
73
|
-
|
74
|
+
rescue => error
|
75
|
+
Bugsnag.notify error
|
76
|
+
$logger.error "Session creation failed: #{error}"
|
74
77
|
false
|
75
78
|
end
|
76
79
|
end
|
@@ -85,7 +88,6 @@ module Maze
|
|
85
88
|
end
|
86
89
|
|
87
90
|
unless success
|
88
|
-
# TODO Bugsnag notify
|
89
91
|
$logger.error 'Failed to create Appium driver, exiting'
|
90
92
|
exit(::Maze::Api::ExitCode::SESSION_CREATION_FAILURE)
|
91
93
|
end
|
@@ -1,4 +1,5 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
require 'bugsnag'
|
2
3
|
require 'open3'
|
3
4
|
require 'fileutils'
|
4
5
|
require 'json'
|
@@ -49,7 +50,8 @@ module Maze
|
|
49
50
|
$logger.error "Unexpected response body: #{response}"
|
50
51
|
raise 'App upload failed'
|
51
52
|
end
|
52
|
-
rescue JSON::ParserError
|
53
|
+
rescue JSON::ParserError => error
|
54
|
+
Bugsnag.notify error
|
53
55
|
$logger.error "Expected JSON response, received: #{res}"
|
54
56
|
raise
|
55
57
|
end
|
@@ -1,5 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
+
require 'bugsnag'
|
4
|
+
|
3
5
|
module Maze
|
4
6
|
module Client
|
5
7
|
# Utils supporting the BrowserStack device farm integration
|
@@ -42,9 +44,11 @@ module Maze
|
|
42
44
|
# Successful upload
|
43
45
|
break
|
44
46
|
end
|
45
|
-
rescue Net::ReadTimeout
|
47
|
+
rescue Net::ReadTimeout => error
|
48
|
+
Bugsnag.notify error
|
46
49
|
$logger.error "Upload failed due to ReadTimeout"
|
47
|
-
rescue JSON::ParserError
|
50
|
+
rescue JSON::ParserError => error
|
51
|
+
Bugsnag.notify error
|
48
52
|
$logger.error "Unexpected JSON response, received: #{body}"
|
49
53
|
end
|
50
54
|
|
data/lib/maze/driver/appium.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
require 'appium_lib'
|
2
|
+
require 'bugsnag'
|
2
3
|
require 'json'
|
3
4
|
require 'open3'
|
4
5
|
require 'securerandom'
|
@@ -56,6 +57,8 @@ module Maze
|
|
56
57
|
super
|
57
58
|
$logger.info "Appium driver started in #{(Time.now - time).to_i}s"
|
58
59
|
rescue => error
|
60
|
+
Bugsnag.notify(error)
|
61
|
+
|
59
62
|
$logger.warn "Appium driver failed to start in #{(Time.now - time).to_i}s"
|
60
63
|
$logger.warn "#{error.class} occurred with message: #{error.message}"
|
61
64
|
raise error
|
data/lib/maze/driver/browser.rb
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
+
require 'bugsnag'
|
3
4
|
require 'selenium-webdriver'
|
4
5
|
|
5
6
|
module Maze
|
@@ -122,6 +123,7 @@ module Maze
|
|
122
123
|
$logger.info "Selenium driver started in #{(Time.now - time).to_i}s"
|
123
124
|
@driver = driver
|
124
125
|
rescue => error
|
126
|
+
Bugsnag.notify error
|
125
127
|
$logger.warn "Selenium driver failed to start in #{(Time.now - time).to_i}s"
|
126
128
|
raise error
|
127
129
|
end
|
data/lib/maze/logger.rb
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
+
require 'bugsnag'
|
3
4
|
require 'logger'
|
4
5
|
require 'singleton'
|
5
6
|
|
@@ -78,8 +79,9 @@ module Maze
|
|
78
79
|
else
|
79
80
|
log_hash_by_field severity, data
|
80
81
|
end
|
81
|
-
rescue Encoding::UndefinedConversionError
|
82
|
+
rescue Encoding::UndefinedConversionError => error
|
82
83
|
# Just give up, we don't want to risk a further error trying to log garbage
|
84
|
+
Bugsnag.notify error
|
83
85
|
$logger.error 'Unable to log hash as JSON'
|
84
86
|
end
|
85
87
|
end
|
data/lib/maze/proxy.rb
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
+
require 'bugsnag'
|
3
4
|
require 'json'
|
4
5
|
require 'singleton'
|
5
6
|
require 'webrick'
|
@@ -82,10 +83,11 @@ module Maze
|
|
82
83
|
config[:ProxyAuthProc] = authenticator.method(:authenticate).to_proc
|
83
84
|
end
|
84
85
|
|
85
|
-
#
|
86
|
+
# Create and start the proxy
|
86
87
|
proxy = WEBrick::HTTPProxyServer.new config
|
87
88
|
proxy.start
|
88
89
|
rescue StandardError => e
|
90
|
+
Bugsnag.notify e
|
89
91
|
$logger.warn "Failed to start proxy server: #{e.message}"
|
90
92
|
ensure
|
91
93
|
proxy&.shutdown
|
data/lib/maze/server.rb
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
+
require 'bugsnag'
|
3
4
|
require 'json'
|
4
5
|
require 'securerandom'
|
5
6
|
require 'webrick'
|
@@ -227,6 +228,7 @@ module Maze
|
|
227
228
|
server.mount '/reflect', Servlets::ReflectiveServlet
|
228
229
|
server.start
|
229
230
|
rescue StandardError => e
|
231
|
+
Bugsnag.notify e
|
230
232
|
$logger.warn "Failed to start mock server: #{e.message}"
|
231
233
|
ensure
|
232
234
|
server&.shutdown
|
@@ -1,5 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
+
require 'bugsnag'
|
4
|
+
|
3
5
|
module Maze
|
4
6
|
module Servlets
|
5
7
|
|
@@ -30,6 +32,7 @@ module Maze
|
|
30
32
|
response.header['Access-Control-Allow-Origin'] = '*'
|
31
33
|
response.status = Server.status_code('POST')
|
32
34
|
rescue JSON::ParserError => e
|
35
|
+
Bugsnag.notify e
|
33
36
|
msg = "Unable to parse request as JSON: #{e.message}"
|
34
37
|
$logger.error msg
|
35
38
|
Server.invalid_requests.add({
|
@@ -39,6 +42,7 @@ module Maze
|
|
39
42
|
body: request.body
|
40
43
|
})
|
41
44
|
rescue StandardError => e
|
45
|
+
Bugsnag.notify e
|
42
46
|
$logger.error "Invalid request: #{e.message}"
|
43
47
|
Server.invalid_requests.add({
|
44
48
|
invalid: true,
|
@@ -1,4 +1,5 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
require 'bugsnag'
|
2
3
|
require 'rack'
|
3
4
|
|
4
5
|
module Maze
|
@@ -41,10 +42,12 @@ module Maze
|
|
41
42
|
|
42
43
|
reflect response, delay_ms, status
|
43
44
|
rescue JSON::ParserError => e
|
45
|
+
Bugsnag.notify e
|
44
46
|
msg = "Unable to parse request as JSON: #{e.message}"
|
45
47
|
$logger.error msg
|
46
48
|
response.status = 418
|
47
49
|
rescue StandardError => e
|
50
|
+
Bugsnag.notify e
|
48
51
|
$logger.error "Invalid request: #{e.message}"
|
49
52
|
response.status = 500
|
50
53
|
end
|
@@ -1,5 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
+
require 'bugsnag'
|
3
4
|
require 'zlib'
|
4
5
|
require 'stringio'
|
5
6
|
require 'json_schemer'
|
@@ -101,6 +102,7 @@ module Maze
|
|
101
102
|
set_response_header response.header
|
102
103
|
response.status = post_status_code
|
103
104
|
rescue JSON::ParserError => e
|
105
|
+
Bugsnag.notify e
|
104
106
|
msg = "Unable to parse request as JSON: #{e.message}"
|
105
107
|
if Maze.config.captured_invalid_requests.include? @request_type
|
106
108
|
$logger.error msg
|
@@ -113,6 +115,7 @@ module Maze
|
|
113
115
|
$logger.warn msg
|
114
116
|
end
|
115
117
|
rescue StandardError => e
|
118
|
+
Bugsnag.notify e
|
116
119
|
if Maze.config.captured_invalid_requests.include? @request_type
|
117
120
|
$logger.error "Invalid request: #{e.message}"
|
118
121
|
Server.invalid_requests.add({
|
@@ -1,5 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
+
require 'bugsnag'
|
3
4
|
require 'socket'
|
4
5
|
|
5
6
|
module Maze
|
@@ -33,6 +34,7 @@ module Maze
|
|
33
34
|
end_connection(socket)
|
34
35
|
}
|
35
36
|
rescue StandardError => e
|
37
|
+
Bugsnag.notify e
|
36
38
|
$logger.warn "Terminating server error: #{e.message}"
|
37
39
|
end
|
38
40
|
|
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.7.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.7.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: 2023-09-
|
11
|
+
date: 2023-09-26 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: cucumber
|