bugsnag-maze-runner 8.1.4 → 8.2.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: 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