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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 6135a5d1343dad9aec3ede4d5c400564c10cccb5fbc9ef894f4b99d6432a5324
4
- data.tar.gz: 35ac776b71e1a4a0d15baa74b6683aae314c1957a926316c25645785ba8ccd4c
3
+ metadata.gz: eac01df378fac543e5aa19a4999e4a2e403de8e7df9860b6463e27899f2f2f0d
4
+ data.tar.gz: c59e92d444b2da617bb0ec06c5fdc4355687129b7cc01cd56e5900a48c2fbe2c
5
5
  SHA512:
6
- metadata.gz: 1ff8c709e2e39927ae7a2290a50b9a0e45febfcd35228d2158e498fd2d9e2e357220f6d67b929d848aa0732173ed4e54774a7e8818553ef24be23c3bf5a0b664
7
- data.tar.gz: 9d9ed17d9e8dd7b9f84eb29bd040863cd275398bb83c96b29314159d202efc8b0df1c4923f7dfc5161193f905d94fdab9615111eb5871f817f0ff940c99c808d
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 raises an exception
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.fail msg
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
@@ -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 MazeRunner does everything it needs to)
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.1.4'
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.1.4
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-05 00:00:00.000000000 Z
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