allure-rspec 2.13.9 → 2.14.2

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: 77fad060fb1fbcbbb4399244a58df51707defcfe9a2e7b5a5b193fb1a4940420
4
- data.tar.gz: 73d4d50f964562c583158da41999dc8c8390f8b977cf3c532da7da50f8524835
3
+ metadata.gz: ebcd6e6c81d696779c9303a84b80d3264469f93618c9876f2fa9fc03be6d8637
4
+ data.tar.gz: bbe73782f89fe4819b2ba9612960da4de067a5c0762db71df8c77667ba00d8dd
5
5
  SHA512:
6
- metadata.gz: 5344896aeb24c28fb6f424c2485f61e1f2656f5f0639bf25f981f88a50d432a3afa947e3b2f4f6967218c8896f9759de8f07f3aca880b6d22f9dbf46def8ca23
7
- data.tar.gz: 3f3201b3da9e3997bdcc368a274b39830569612621d0af206457aa046a507f4185679674d419971f39697da9ecae6b79acd5e05eff1ebe02a38cdda5ddf7fed4
6
+ metadata.gz: 989e664938fbcbb496181c09e597d355b718349ba3ee114b88f3cee57f564f3302b06c5aa8e0862966110edca662b2f86da3ace00df08624ff22d6f64a2ed5c2
7
+ data.tar.gz: d3d7a4a7f547485edc79124172b69aa7e2eb815345bff4263048b0f6455625469686b5f6d52f20273c06f952a11c0176c5f46ef655dcf5cb43ba743369dca190
data/README.md CHANGED
@@ -23,14 +23,25 @@ require "allure-rspec"
23
23
  Following configuration options are supported:
24
24
 
25
25
  ```ruby
26
- AllureRspec.configure do |config|
27
- config.results_directory = "/whatever/you/like"
28
- config.clean_results_directory = true
29
- config.logging_level = Logger::INFO
30
- # these are used for creating links to bugs or test cases where {} is replaced with keys of relevant items
31
- config.link_tms_pattern = "http://www.jira.com/browse/{}"
32
- config.link_issue_pattern = "http://www.jira.com/browse/{}"
33
- end
26
+ AllureRspec.configure do |config|
27
+ config.results_directory = "report/allure-results"
28
+ config.clean_results_directory = true
29
+ config.logging_level = Logger::INFO
30
+ config.logger = Logger.new($stdout, Logger::DEBUG)
31
+ config.environment = "staging"
32
+
33
+ # these are used for creating links to bugs or test cases where {} is replaced with keys of relevant items
34
+ config.link_tms_pattern = "http://www.jira.com/browse/{}"
35
+ config.link_issue_pattern = "http://www.jira.com/browse/{}"
36
+
37
+ # additional metadata
38
+ # environment.properties
39
+ config.environment_properties = {
40
+ custom_attribute: "foo"
41
+ }
42
+ # categories.json
43
+ config.categories = File.new("my_custom_categories.json")
44
+ end
34
45
  ```
35
46
 
36
47
  ## Usage
@@ -53,11 +64,12 @@ end
53
64
 
54
65
  ### Adding tms links
55
66
 
56
- Configure tms link pattern:
67
+ Configure tms link pattern and rspec tag:
57
68
 
58
69
  ```ruby
59
70
  AllureRspec.configure do |config|
60
71
  config.link_tms_pattern = "http://www.jira.com/browse/{}"
72
+ config.tms_tag = :tms
61
73
  end
62
74
  ```
63
75
 
@@ -84,6 +96,7 @@ Configure issue link pattern:
84
96
  ```ruby
85
97
  AllureRspec.configure do |config|
86
98
  config.link_issue_pattern = "http://www.jira.com/browse/{}"
99
+ config.issue_tag = :issue
87
100
  end
88
101
  ```
89
102
 
@@ -105,7 +118,15 @@ end
105
118
 
106
119
  ### Adding custom severity and status details
107
120
 
108
- Test severity (`normal` by default) can be changed via `severity` tag:
121
+ Configure severity tag:
122
+
123
+ ```ruby
124
+ AllureRspec.configure do |config|
125
+ config.severity_tag = :severity
126
+ end
127
+ ```
128
+
129
+ Test severity is set to `normal` by default:
109
130
 
110
131
  ```ruby
111
132
  it "some test case", severity: :critical do
@@ -131,9 +152,20 @@ it "some test case", allure_1: "visual_test", allure_2: "core_functionality" do
131
152
  end
132
153
  ```
133
154
 
155
+ All rspec metadata tags will also be added as labels in test report.
156
+
134
157
  ### Behavior driven test grouping
135
158
 
136
- Marking tests with tags `:epic, :feature, :story`, will group tests accordingly in Behavior report tab:
159
+ Marking tests with tags `:epic, :feature, :story`, will group tests accordingly in Behavior report tab.\
160
+ Tag values can also be configured:
161
+
162
+ ```ruby
163
+ AllureRspec.configure do |config|
164
+ config.epic_tag = :epic
165
+ config.feature_tag = :feature
166
+ config.story_tag = :story
167
+ end
168
+ ```
137
169
 
138
170
  ```ruby
139
171
  context "context", feature: "my feature" do
data/lib/allure-rspec.rb CHANGED
@@ -8,13 +8,13 @@ require_rel "allure_rspec/**/*.rb"
8
8
  module AllureRspec
9
9
  class << self
10
10
  # Get allure cucumber configuration
11
- # @return [RspecConfig]
11
+ # @return [AllureRspec::RspecConfig]
12
12
  def configuration
13
13
  RspecConfig.instance
14
14
  end
15
15
 
16
16
  # Set allure configuration
17
- # @yieldparam [RspecConfig]
17
+ # @yieldparam [AllureRspec::RspecConfig]
18
18
  # @yieldreturn [void]
19
19
  # @return [void]
20
20
  def configure
File without changes
@@ -1,14 +1,41 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require "forwardable"
4
3
  require "singleton"
5
4
 
6
5
  module AllureRspec
7
- # Shorthand configuration class
8
- class RspecConfig < Allure::Config
6
+ # Allure RSpec configuration class
7
+ #
8
+ # @!attribute results_directory
9
+ # @return [String]
10
+ # @!attribute clean_results_directory
11
+ # @return [Boolean]
12
+ # @!attribute link_issue_pattern
13
+ # @return [String]
14
+ # @!attribute link_tms_pattern
15
+ # @return [String]
16
+ # @!attribute logging_level
17
+ # @return [Integer]
18
+ # @!attribute [r] logger
19
+ # @return [Logger]
20
+ # @!attribute environment
21
+ # @return [String]
22
+ class RspecConfig
9
23
  include Singleton
10
24
  extend Forwardable
11
25
 
26
+ # @return [Symbol] default tms tag
27
+ DEFAULT_TMS_TAG = :tms
28
+ # @return [Symbol] default issue tag
29
+ DEFAULT_ISSUE_TAG = :issue
30
+ # @return [Symbol] default severity tag
31
+ DEFAULT_SEVERITY_TAG = :severity
32
+ # @return [Symbol] default epic tag
33
+ DEFAULT_EPIC_TAG = :epic
34
+ # @return [Symbol] default feature tag
35
+ DEFAULT_FEATURE_TAG = :feature
36
+ # @return [Symbol] default story tag
37
+ DEFAULT_STORY_TAG = :story
38
+
12
39
  def_delegators :@allure_config,
13
40
  :clean_results_directory,
14
41
  :clean_results_directory=,
@@ -18,13 +45,56 @@ module AllureRspec
18
45
  :link_tms_pattern=,
19
46
  :logging_level,
20
47
  :logging_level=,
48
+ :logger,
49
+ :logger=,
21
50
  :results_directory,
22
- :results_directory=
51
+ :results_directory=,
52
+ :environment,
53
+ :environment=,
54
+ :environment_properties,
55
+ :environment_properties=,
56
+ :categories,
57
+ :categories=
23
58
 
24
59
  def initialize
25
- super()
26
-
27
60
  @allure_config = Allure.configuration
28
61
  end
62
+
63
+ attr_writer :tms_tag,
64
+ :issue_tag,
65
+ :severity_tag,
66
+ :epic_tag,
67
+ :feature_tag,
68
+ :story_tag
69
+
70
+ # @return [Symbol]
71
+ def tms_tag
72
+ @tms_prefix || DEFAULT_TMS_TAG
73
+ end
74
+
75
+ # @return [Symbol]
76
+ def issue_tag
77
+ @issue_prefix || DEFAULT_ISSUE_TAG
78
+ end
79
+
80
+ # @return [Symbol]
81
+ def severity_tag
82
+ @severity_prefix || DEFAULT_SEVERITY_TAG
83
+ end
84
+
85
+ # @return [Symbol]
86
+ def epic_tag
87
+ @epic_prefix || DEFAULT_EPIC_TAG
88
+ end
89
+
90
+ # @return [Symbol]
91
+ def feature_tag
92
+ @feature_prefix || DEFAULT_FEATURE_TAG
93
+ end
94
+
95
+ # @return [Symbol]
96
+ def story_tag
97
+ @story_prefix || DEFAULT_STORY_TAG
98
+ end
29
99
  end
30
100
  end
@@ -1,16 +1,20 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require "ruby2_keywords"
4
3
  require "rspec/core"
5
4
  require "rspec/core/formatters/base_formatter"
6
5
 
7
- require_relative "rspec_model"
8
-
9
6
  # Main allure-rspec module
10
7
  module AllureRspec
11
8
  # Main rspec formatter class translating rspec events to allure lifecycle
12
9
  class RSpecFormatter < RSpec::Core::Formatters::BaseFormatter
13
- include AllureRspecModel
10
+ include Utils
11
+
12
+ # @return [Hash] allure statuses mapping
13
+ ALLURE_STATUS = {
14
+ failed: Allure::Status::FAILED,
15
+ pending: Allure::Status::SKIPPED,
16
+ passed: Allure::Status::PASSED
17
+ }.freeze
14
18
 
15
19
  RSpec::Core::Formatters.register(
16
20
  self,
@@ -21,20 +25,19 @@ module AllureRspec
21
25
  :example_finished
22
26
  )
23
27
 
24
- RSpec::Core::Example.class_eval do
25
- Allure.singleton_methods.each do |method|
26
- ruby2_keywords define_method(method) { |*args, &block| Allure.__send__(method, *args, &block) }
27
- end
28
+ RSpec.configure do |config|
29
+ ids = Allure::TestPlan.test_ids
30
+ names = Allure::TestPlan.test_names
31
+
32
+ config.filter_run_when_matching(*ids.map { |id| { allure_id: id } }) if ids
33
+ config.full_description = names if names
28
34
  end
29
35
 
30
- RSpec.configure do |config|
31
- Allure.configure do |allure_config|
32
- ids = allure_config.test_ids
33
- names = allure_config.test_names
36
+ def initialize(output)
37
+ super
34
38
 
35
- config.filter_run_when_matching(*ids.map { |id| { allure_id: id } }) if ids
36
- config.full_description = names if names
37
- end
39
+ @allure_config = AllureRspec.configuration
40
+ Allure.lifecycle = @lifecycle = Allure::AllureLifecycle.new(@allure_config)
38
41
  end
39
42
 
40
43
  # Start test run
@@ -42,6 +45,12 @@ module AllureRspec
42
45
  # @return [void]
43
46
  def start(_start_notification)
44
47
  lifecycle.clean_results_dir
48
+ lifecycle.write_environment
49
+ lifecycle.write_categories
50
+
51
+ RSpec::Core::Example.class_eval do
52
+ include Allure
53
+ end
45
54
  end
46
55
 
47
56
  # Starts example group
@@ -78,10 +87,48 @@ module AllureRspec
78
87
 
79
88
  private
80
89
 
81
- # Get thread specific lifecycle
82
- # @return [Allure::AllureLifecycle]
83
- def lifecycle
84
- Allure.lifecycle
90
+ attr_reader :lifecycle, :allure_config
91
+
92
+ # Transform example to <Allure::TestResult>
93
+ # @param [RSpec::Core::Example] example
94
+ # @return [Allure::TestResult]
95
+ def test_result(example)
96
+ parser = RspecMetadataParser.new(example, allure_config)
97
+
98
+ Allure::TestResult.new(
99
+ name: example.description,
100
+ description: "Location - #{strip_relative(example.location)}",
101
+ description_html: "Location - #{strip_relative(example.location)}",
102
+ history_id: example.id,
103
+ full_name: example.full_description,
104
+ labels: parser.labels,
105
+ links: parser.links,
106
+ status_details: parser.status_details,
107
+ environment: allure_config.environment
108
+ )
109
+ end
110
+
111
+ # Update test status on finish
112
+ # @param [RSpec::Core::Example::ExecutionResult] result
113
+ # @return [Proc]
114
+ def update_test_proc(result)
115
+ Allure::ResultUtils.status_details(result.exception).yield_self do |status_detail|
116
+ proc do |test_case|
117
+ test_case.stage = Allure::Stage::FINISHED
118
+ test_case.status = status(result)
119
+ test_case.status_details.message = status_detail.message
120
+ test_case.status_details.trace = status_detail.trace
121
+ end
122
+ end
123
+ end
124
+
125
+ # Get allure status from result
126
+ # @param [RSpec::Core::Example::ExecutionResult] result
127
+ # @return [Symbol]
128
+ def status(result)
129
+ return Allure::ResultUtils.status(result.exception) if result.status == :failed
130
+
131
+ ALLURE_STATUS[result.status]
85
132
  end
86
133
  end
87
134
  end
@@ -1,53 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module AllureRspec
4
- # Suite label generator
5
- #
6
- class SuiteLabels
7
- include Utils
8
-
9
- def initialize(example_group)
10
- @example_group = example_group
11
- end
12
-
13
- # Get test suite labels
14
- # @return [Array<Allure::Label>]
15
- def fetch
16
- parents = example_group.parent_groups.map do |group|
17
- group.description.empty? ? "Anonymous" : group.description
18
- end
19
-
20
- labels = []
21
- labels << Allure::ResultUtils.suite_label(suite(parents))
22
- labels << Allure::ResultUtils.parent_suite_label(parent_suite(parents)) if parent_suite(parents)
23
- labels << Allure::ResultUtils.sub_suite_label(sub_suites(parents)) if sub_suites(parents)
24
-
25
- labels
26
- end
27
-
28
- private
29
-
30
- attr_reader :example_group
31
-
32
- # @param [Array<String>] parents
33
- # @return [String]
34
- def suite(parents)
35
- parents.length == 1 ? parents.last : parents[-2]
36
- end
37
-
38
- # @param [Array<String>] parents
39
- # @return [String]
40
- def parent_suite(parents)
41
- parents.length > 1 ? parents.last : nil
42
- end
43
-
44
- # @param [Array<String>] parents
45
- # @return [String]
46
- def sub_suites(parents)
47
- parents.length > 2 ? parents[0..-3].join(" > ") : nil
48
- end
49
- end
50
-
51
4
  # RSpec metadata parser
52
5
  #
53
6
  class RspecMetadataParser
@@ -75,8 +28,13 @@ module AllureRspec
75
28
  type
76
29
  ].freeze
77
30
 
78
- def initialize(example)
31
+ # Metadata parser instance
32
+ #
33
+ # @param [RSpec::Core::Example] example
34
+ # @param [AllureRspec::RspecConfig] config <description>
35
+ def initialize(example, config)
79
36
  @example = example
37
+ @config = config
80
38
  end
81
39
 
82
40
  # Get allure labels
@@ -111,9 +69,12 @@ module AllureRspec
111
69
 
112
70
  private
113
71
 
114
- # @param [RSpec::Core::Example] example
72
+ # @return [RSpec::Core::Example]
115
73
  attr_reader :example
116
74
 
75
+ # @return [AllureRspec::RspecConfig]
76
+ attr_reader :config
77
+
117
78
  # Example metadata
118
79
  #
119
80
  # @return [Hash]
@@ -143,7 +104,7 @@ module AllureRspec
143
104
  # Get severity
144
105
  # @return [String]
145
106
  def severity
146
- Allure::ResultUtils.severity_label(metadata[:severity] || "normal")
107
+ Allure::ResultUtils.severity_label(metadata[config.severity_tag] || "normal")
147
108
  end
148
109
 
149
110
  # Get test suite labels
@@ -164,9 +125,9 @@ module AllureRspec
164
125
  # @return [Array<Allure::Label>]
165
126
  def behavior_labels
166
127
  metadata = example.metadata
167
- epic = metadata[:epic] || Pathname.new(strip_relative(example.file_path)).parent.to_s
168
- feature = metadata[:feature] || example.example_group.description
169
- story = metadata[:story]
128
+ epic = metadata[config.epic_tag] || Pathname.new(strip_relative(example.file_path)).parent.to_s
129
+ feature = metadata[config.feature_tag] || example.example_group.description
130
+ story = metadata[config.story_tag]
170
131
 
171
132
  [
172
133
  Allure::ResultUtils.epic_label(epic),
@@ -179,11 +140,12 @@ module AllureRspec
179
140
  # @param [Symbol] type
180
141
  # @return [Array<Allure::Link>]
181
142
  def matching_links(type)
182
- return [] unless AllureRspec.configuration.public_send("link_#{type}_pattern")
143
+ link_pattern = config.public_send("link_#{type}_pattern")
144
+ return [] unless link_pattern
183
145
 
184
146
  metadata
185
147
  .select { |k| __send__("#{type}?", k) }.values
186
- .map { |v| Allure::ResultUtils.public_send("#{type}_link", v) }
148
+ .map { |v| Allure::ResultUtils.public_send("#{type}_link", v, link_pattern) }
187
149
  end
188
150
 
189
151
  # Special allure metadata tags
@@ -191,7 +153,12 @@ module AllureRspec
191
153
  # @param [Symbol] key
192
154
  # @return [boolean]
193
155
  def special_metadata_tag?(key)
194
- tms?(key) || issue?(key) || %i[severity epic feature story].include?(key)
156
+ tms?(key) || issue?(key) || [
157
+ config.severity_tag,
158
+ config.epic_tag,
159
+ config.feature_tag,
160
+ config.story_tag
161
+ ].include?(key)
195
162
  end
196
163
 
197
164
  # Does key match custom allure label
@@ -205,14 +172,14 @@ module AllureRspec
205
172
  # @param [Symbol] key
206
173
  # @return [boolean]
207
174
  def tms?(key)
208
- key.to_s.match?(/tms(_\d+)?/i)
175
+ key.to_s.match?(/#{config.tms_tag}(_\d+)?/i)
209
176
  end
210
177
 
211
178
  # Does key match issue pattern
212
179
  # @param [Symbol] key
213
180
  # @return [boolean]
214
181
  def issue?(key)
215
- key.to_s.match?(/issue(_\d+)?/i)
182
+ key.to_s.match?(/#{config.issue_tag}(_\d+)?/i)
216
183
  end
217
184
  end
218
185
  end
@@ -0,0 +1,50 @@
1
+ # frozen_string_literal: true
2
+
3
+ module AllureRspec
4
+ # Suite label generator
5
+ #
6
+ class SuiteLabels
7
+ include Utils
8
+
9
+ def initialize(example_group)
10
+ @example_group = example_group
11
+ end
12
+
13
+ # Get test suite labels
14
+ # @return [Array<Allure::Label>]
15
+ def fetch
16
+ parents = example_group.parent_groups.map do |group|
17
+ group.description.empty? ? "Anonymous" : group.description
18
+ end
19
+
20
+ labels = []
21
+ labels << Allure::ResultUtils.suite_label(suite(parents))
22
+ labels << Allure::ResultUtils.parent_suite_label(parent_suite(parents)) if parent_suite(parents)
23
+ labels << Allure::ResultUtils.sub_suite_label(sub_suites(parents)) if sub_suites(parents)
24
+
25
+ labels
26
+ end
27
+
28
+ private
29
+
30
+ attr_reader :example_group
31
+
32
+ # @param [Array<String>] parents
33
+ # @return [String]
34
+ def suite(parents)
35
+ parents.length == 1 ? parents.last : parents[-2]
36
+ end
37
+
38
+ # @param [Array<String>] parents
39
+ # @return [String]
40
+ def parent_suite(parents)
41
+ parents.length > 1 ? parents.last : nil
42
+ end
43
+
44
+ # @param [Array<String>] parents
45
+ # @return [String]
46
+ def sub_suites(parents)
47
+ parents.length > 2 ? parents[0..-3].join(" > ") : nil
48
+ end
49
+ end
50
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: allure-rspec
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.13.9
4
+ version: 2.14.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andrejs Cunskis
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-04-15 00:00:00.000000000 Z
11
+ date: 2021-07-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: allure-ruby-commons
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - '='
18
18
  - !ruby/object:Gem::Version
19
- version: 2.13.9
19
+ version: 2.14.2
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - '='
25
25
  - !ruby/object:Gem::Version
26
- version: 2.13.9
26
+ version: 2.14.2
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rspec-core
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -44,20 +44,6 @@ dependencies:
44
44
  - - "<"
45
45
  - !ruby/object:Gem::Version
46
46
  version: '4'
47
- - !ruby/object:Gem::Dependency
48
- name: ruby2_keywords
49
- requirement: !ruby/object:Gem::Requirement
50
- requirements:
51
- - - "~>"
52
- - !ruby/object:Gem::Version
53
- version: 0.0.2
54
- type: :runtime
55
- prerelease: false
56
- version_requirements: !ruby/object:Gem::Requirement
57
- requirements:
58
- - - "~>"
59
- - !ruby/object:Gem::Version
60
- version: 0.0.2
61
47
  description: Cucumber adaptor to generate rich allure test reports
62
48
  email: andrejs.cunskis@gmail.com
63
49
  executables: []
@@ -66,11 +52,11 @@ extra_rdoc_files: []
66
52
  files:
67
53
  - README.md
68
54
  - lib/allure-rspec.rb
69
- - lib/allure_rspec/01_utils.rb
55
+ - lib/allure_rspec/_utils.rb
70
56
  - lib/allure_rspec/config.rb
71
57
  - lib/allure_rspec/formatter.rb
72
58
  - lib/allure_rspec/metadata_parser.rb
73
- - lib/allure_rspec/rspec_model.rb
59
+ - lib/allure_rspec/suite_labels.rb
74
60
  homepage: https://github.com/allure-framework/allure-ruby/tree/master/allure-rspec
75
61
  licenses:
76
62
  - Apache-2.0
@@ -95,7 +81,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
95
81
  - !ruby/object:Gem::Version
96
82
  version: '0'
97
83
  requirements: []
98
- rubygems_version: 3.2.15
84
+ rubygems_version: 3.2.22
99
85
  signing_key:
100
86
  specification_version: 4
101
87
  summary: Allure rspec ruby adaptor
@@ -1,61 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require "digest"
4
- require "pathname"
5
-
6
- module AllureRspec
7
- # Support class for transforming rspec test entities in to allure model entities
8
- module AllureRspecModel
9
- include AllureRspec::Utils
10
-
11
- # @return [Hash] allure statuses mapping
12
- ALLURE_STATUS = {
13
- failed: Allure::Status::FAILED,
14
- pending: Allure::Status::SKIPPED,
15
- passed: Allure::Status::PASSED
16
- }.freeze
17
-
18
- # Transform example to <Allure::TestResult>
19
- # @param [RSpec::Core::Example] example
20
- # @return [Allure::TestResult]
21
- def test_result(example)
22
- parser = RspecMetadataParser.new(example)
23
-
24
- Allure::TestResult.new(
25
- name: example.description,
26
- description: "Location - #{strip_relative(example.location)}",
27
- description_html: "Location - #{strip_relative(example.location)}",
28
- history_id: Digest::MD5.hexdigest(example.id),
29
- full_name: example.full_description,
30
- labels: parser.labels,
31
- links: parser.links,
32
- status_details: parser.status_details
33
- )
34
- end
35
-
36
- # Update test status on finish
37
- # @param [RSpec::Core::Example::ExecutionResult] result
38
- # @return [Proc]
39
- def update_test_proc(result)
40
- Allure::ResultUtils.status_details(result.exception).yield_self do |status_detail|
41
- proc do |test_case|
42
- test_case.stage = Allure::Stage::FINISHED
43
- test_case.status = status(result)
44
- test_case.status_details.message = status_detail.message
45
- test_case.status_details.trace = status_detail.trace
46
- end
47
- end
48
- end
49
-
50
- private
51
-
52
- # Get allure status from result
53
- # @param [RSpec::Core::Example::ExecutionResult] result
54
- # @return [Symbol]
55
- def status(result)
56
- return Allure::ResultUtils.status(result.exception) if result.status == :failed
57
-
58
- ALLURE_STATUS[result.status]
59
- end
60
- end
61
- end