bugsnag-maze-runner 8.1.4 → 8.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/bin/maze-runner +1 -0
- data/lib/features/support/internal_hooks.rb +11 -3
- data/lib/maze/api/cucumber/scenario.rb +25 -0
- data/lib/maze/hooks/hooks.rb +15 -2
- data/lib/maze/server.rb +5 -1
- data/lib/maze.rb +2 -2
- 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: eac01df378fac543e5aa19a4999e4a2e403de8e7df9860b6463e27899f2f2f0d
|
4
|
+
data.tar.gz: c59e92d444b2da617bb0ec06c5fdc4355687129b7cc01cd56e5900a48c2fbe2c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a7d5e5079dc431e2c33d57f63ce3242cc0eaf12f81de1b043b843598ba15beb6d0610f21fbc2955502c6f35125781c1889b5a92963560e5dfc14d01f230bda90
|
7
|
+
data.tar.gz: 8551f7d971779b47ec6e65ba0a6402bcbf9110e4b9232b4851c2b37aab1793a89879c1e3946e86c87abea478465ec43a28306f6f1daf42ff5c043415e4b297e9
|
data/bin/maze-runner
CHANGED
@@ -9,6 +9,7 @@ require_relative '../lib/maze'
|
|
9
9
|
|
10
10
|
require_relative '../lib/maze/appium_server'
|
11
11
|
require_relative '../lib/maze/api/appium/file_manager'
|
12
|
+
require_relative '../lib/maze/api/cucumber/scenario'
|
12
13
|
require_relative '../lib/maze/bugsnag_config'
|
13
14
|
require_relative '../lib/maze/client/bb_api_client'
|
14
15
|
require_relative '../lib/maze/client/bb_client_utils'
|
@@ -94,6 +94,8 @@ end
|
|
94
94
|
|
95
95
|
# Before each scenario
|
96
96
|
Before do |scenario|
|
97
|
+
Maze.scenario = Maze::Api::Cucumber::Scenario.new(scenario)
|
98
|
+
|
97
99
|
# Default to no dynamic try
|
98
100
|
Maze.dynamic_retry = false
|
99
101
|
|
@@ -193,14 +195,20 @@ def output_received_requests(request_type)
|
|
193
195
|
end
|
194
196
|
end
|
195
197
|
|
196
|
-
# Check for invalid requests after each scenario. This is its own hook as failing a scenario
|
197
|
-
# and we need the logic in the other After hook to be performed.
|
198
|
+
# Check for invalid requests after each scenario. This is its own hook as failing a scenario (which
|
199
|
+
# Maze.scenario.complete may invoke) raises an exception and we need the logic in the other After hook to be performed.
|
200
|
+
#
|
198
201
|
# Furthermore, this hook should appear after the general hook as they are executed in reverse order by Cucumber.
|
199
202
|
After do |scenario|
|
203
|
+
# Call any pre_complete hooks registered by the client
|
204
|
+
Maze.hooks.call_pre_complete scenario
|
205
|
+
|
200
206
|
unless Maze::Server.invalid_requests.size_all == 0
|
201
207
|
msg = "#{Maze::Server.invalid_requests.size_all} invalid request(s) received during scenario"
|
202
|
-
scenario.
|
208
|
+
Maze.scenario.mark_as_failed msg
|
203
209
|
end
|
210
|
+
|
211
|
+
Maze.scenario.complete
|
204
212
|
end
|
205
213
|
|
206
214
|
# Test all requests against schemas or extra validation rules. These will only run if the schema/validation is
|
@@ -0,0 +1,25 @@
|
|
1
|
+
module Maze
|
2
|
+
module Api
|
3
|
+
module Cucumber
|
4
|
+
# An abstraction for the underlying Cucumber scenarios
|
5
|
+
class Scenario
|
6
|
+
|
7
|
+
# @param scenario The underlying Cucumber scenario
|
8
|
+
def initialize(scenario)
|
9
|
+
@scenario = scenario
|
10
|
+
@fail_override = false
|
11
|
+
@fail_override_reason = nil
|
12
|
+
end
|
13
|
+
|
14
|
+
def mark_as_failed(reason)
|
15
|
+
@fail_override = true
|
16
|
+
@fail_override_reason = reason
|
17
|
+
end
|
18
|
+
|
19
|
+
def complete
|
20
|
+
@scenario.fail(@fail_override_reason) if @fail_override
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
data/lib/maze/hooks/hooks.rb
CHANGED
@@ -9,6 +9,7 @@ module Maze
|
|
9
9
|
def initialize
|
10
10
|
@before_all = []
|
11
11
|
@before = []
|
12
|
+
@pre_complete = []
|
12
13
|
@after = []
|
13
14
|
end
|
14
15
|
|
@@ -22,7 +23,13 @@ module Maze
|
|
22
23
|
@before << block
|
23
24
|
end
|
24
25
|
|
25
|
-
# Register blocks to be called from a Cucumber After hook (before
|
26
|
+
# Register blocks to be called from a Cucumber After hook (before the scenario is completed)
|
27
|
+
def pre_complete(&block)
|
28
|
+
@pre_complete << block
|
29
|
+
end
|
30
|
+
|
31
|
+
# Register blocks to be called from a Cucumber After hook (after the scenario is completed but before MazeRunner
|
32
|
+
# does everything it needs to between scenarios)
|
26
33
|
def after(&block)
|
27
34
|
@after << block
|
28
35
|
end
|
@@ -38,6 +45,12 @@ module Maze
|
|
38
45
|
@before.each { |block| block.call(scenario) }
|
39
46
|
end
|
40
47
|
|
48
|
+
# For MazeRunner use only, call the registered pre-complete blocks
|
49
|
+
# @param scenario The current Cucumber scenario
|
50
|
+
def call_pre_complete(scenario)
|
51
|
+
@pre_complete.each { |block| block.call(scenario) }
|
52
|
+
end
|
53
|
+
|
41
54
|
# For MazeRunner use only, call the registered After blocks
|
42
55
|
# @param scenario The current Cucumber scenario
|
43
56
|
def call_after(scenario)
|
@@ -50,7 +63,7 @@ module Maze
|
|
50
63
|
def before_all; end
|
51
64
|
|
52
65
|
def before(_scenario); end
|
53
|
-
|
66
|
+
def pre_complete(_scenario); end
|
54
67
|
def after(_scenario); end
|
55
68
|
|
56
69
|
def after_all; end
|
data/lib/maze/server.rb
CHANGED
@@ -215,9 +215,12 @@ module Maze
|
|
215
215
|
server.mount '/sessions', Servlets::Servlet, :sessions
|
216
216
|
server.mount '/builds', Servlets::Servlet, :builds
|
217
217
|
server.mount '/uploads', Servlets::Servlet, :uploads
|
218
|
-
server.mount '/sourcemap', Servlets::Servlet, :sourcemaps
|
219
218
|
server.mount '/traces', Servlets::TraceServlet, :traces, Maze::Schemas::TRACE_SCHEMA
|
219
|
+
server.mount '/sourcemap', Servlets::Servlet, :sourcemaps
|
220
220
|
server.mount '/react-native-source-map', Servlets::Servlet, :sourcemaps
|
221
|
+
server.mount '/dart-symbol', Servlets::Servlet, :sourcemaps
|
222
|
+
server.mount '/ndk-symbol', Servlets::Servlet, :sourcemaps
|
223
|
+
server.mount '/proguard', Servlets::Servlet, :sourcemaps
|
221
224
|
server.mount '/command', Servlets::CommandServlet
|
222
225
|
server.mount '/logs', Servlets::LogServlet
|
223
226
|
server.mount '/metrics', Servlets::Servlet, :metrics
|
@@ -256,6 +259,7 @@ module Maze
|
|
256
259
|
set_sampling_probability_generator(Maze::Generator.new [DEFAULT_SAMPLING_PROBABILITY].cycle)
|
257
260
|
|
258
261
|
# Clear request lists
|
262
|
+
commands.clear
|
259
263
|
errors.clear
|
260
264
|
sessions.clear
|
261
265
|
builds.clear
|
data/lib/maze.rb
CHANGED
@@ -7,11 +7,11 @@ 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.2.0'
|
11
11
|
|
12
12
|
class << self
|
13
13
|
attr_accessor :check, :driver, :internal_hooks, :mode, :start_time, :dynamic_retry, :public_address,
|
14
|
-
:public_document_server_address, :run_uuid
|
14
|
+
:public_document_server_address, :run_uuid, :scenario
|
15
15
|
|
16
16
|
def config
|
17
17
|
@config ||= Maze::Configuration.new
|
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.2.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-07-
|
11
|
+
date: 2023-07-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: cucumber
|
@@ -367,6 +367,7 @@ files:
|
|
367
367
|
- lib/features/support/internal_hooks.rb
|
368
368
|
- lib/maze.rb
|
369
369
|
- lib/maze/api/appium/file_manager.rb
|
370
|
+
- lib/maze/api/cucumber/scenario.rb
|
370
371
|
- lib/maze/appium_server.rb
|
371
372
|
- lib/maze/assertions/request_set_assertions.rb
|
372
373
|
- lib/maze/aws/sam.rb
|