allure-rspec 0.8.0 → 2.15.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 +5 -5
- data/README.md +192 -42
- data/lib/allure-rspec.rb +19 -47
- data/lib/allure_rspec/_utils.rb +12 -0
- data/lib/allure_rspec/config.rb +106 -0
- data/lib/allure_rspec/formatter.rb +141 -0
- data/lib/allure_rspec/metadata_parser.rb +186 -0
- data/lib/allure_rspec/suite_labels.rb +50 -0
- metadata +32 -63
- data/.gitignore +0 -15
- data/Gemfile +0 -3
- data/Gemfile.lock +0 -49
- data/allure-rspec.gemspec +0 -26
- data/lib/allure-rspec/adaptor.rb +0 -15
- data/lib/allure-rspec/dsl.rb +0 -61
- data/lib/allure-rspec/formatter.rb +0 -117
- data/lib/allure-rspec/hooks.rb +0 -86
- data/lib/allure-rspec/version.rb +0 -5
- data/logo.png +0 -0
- data/spec/another_spec.rb +0 -21
- data/spec/extend_steps_spec.rb +0 -86
- data/spec/hooks_spec.rb +0 -12
- data/spec/issue51_spec.rb +0 -11
- data/spec/nometavalue_spec.rb +0 -11
- data/spec/shared_example_spec.rb +0 -34
- data/spec/spec_helper.rb +0 -20
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 3e6c5bb377f6a90b6ef4d6927421c61f6a273d160fbf6ff571e34fc8826cc62a
|
4
|
+
data.tar.gz: b32ba8c7ab41c07aa02a6ff0d4f4285ef1bbaffd37a15857176ac651cb333138
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a37fcab764248deb65cfff370cb92d4b3bc16c7cbda92487faf593aca77e62401f1aa094df659e1c1c075333ab982709e53c26f343b12fb7b9244bb41eda69b5
|
7
|
+
data.tar.gz: 1fd4ffd1c21d2a575a2bdd9925e71f08c18bed8ab7668558456ac754c0e5e22b7e6ffac5bbfb9b5f2eb93570d7de1117d886fd9f3d90b940650c70d611d65107
|
data/README.md
CHANGED
@@ -1,74 +1,224 @@
|
|
1
|
-
#
|
1
|
+
# allure-rspec
|
2
2
|
|
3
|
-
[](https://www.rubydoc.info/gems/allure-rspec)
|
4
4
|
|
5
|
-
|
5
|
+
Allure adapter for [rspec](https://rspec.info/) testing framework
|
6
6
|
|
7
|
-
##
|
7
|
+
## Installation
|
8
8
|
|
9
|
-
|
9
|
+
Add it to gemfile:
|
10
10
|
|
11
|
+
```ruby
|
12
|
+
gem "allure-rspec"
|
13
|
+
```
|
14
|
+
|
15
|
+
Require in `spec_helper` or any other setup file:
|
16
|
+
|
17
|
+
```ruby
|
18
|
+
require "allure-rspec"
|
19
|
+
```
|
11
20
|
|
12
|
-
##
|
21
|
+
## Configuration
|
13
22
|
|
14
|
-
|
15
|
-
* 0.5.x - for RSpec2.
|
16
|
-
* <= 0.6.7 - for RSpec < 3.2.
|
17
|
-
* >= 0.6.9 - for RSpec >= 3.2.
|
23
|
+
Following configuration options are supported:
|
18
24
|
|
19
25
|
```ruby
|
20
|
-
|
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
|
45
|
+
```
|
46
|
+
|
47
|
+
## Usage
|
48
|
+
|
49
|
+
Via commandline arguments, simply add:
|
50
|
+
|
51
|
+
```bash
|
52
|
+
--format AllureRspecFormatter
|
21
53
|
```
|
22
54
|
|
23
|
-
|
55
|
+
or
|
56
|
+
|
57
|
+
Via RSpec configuration:
|
24
58
|
|
25
59
|
```ruby
|
26
|
-
|
27
|
-
|
28
|
-
|
60
|
+
RSpec.configure do |config|
|
61
|
+
config.formatter = AllureRspecFormatter
|
62
|
+
end
|
29
63
|
```
|
30
64
|
|
31
|
-
|
65
|
+
### Adding tms links
|
32
66
|
|
33
|
-
|
34
|
-
within your current directory.
|
67
|
+
Configure tms link pattern and rspec tag:
|
35
68
|
|
36
69
|
```ruby
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
end
|
70
|
+
AllureRspec.configure do |config|
|
71
|
+
config.link_tms_pattern = "http://www.jira.com/browse/{}"
|
72
|
+
config.tms_tag = :tms
|
73
|
+
end
|
42
74
|
```
|
43
75
|
|
44
|
-
|
76
|
+
Add tag to rspec test:
|
45
77
|
|
46
78
|
```ruby
|
47
|
-
|
79
|
+
it "some test case", tms: "QA-123" do
|
80
|
+
# test
|
81
|
+
end
|
82
|
+
```
|
48
83
|
|
49
|
-
|
50
|
-
puts "Before step #{s.current_step}"
|
51
|
-
end
|
84
|
+
It's possible to add multiple tms links using `tms_` pattern:
|
52
85
|
|
53
|
-
|
54
|
-
|
55
|
-
|
86
|
+
```ruby
|
87
|
+
it "some test case", tms_1: "QA-123", tms_2: "QA-124" do
|
88
|
+
# test
|
89
|
+
end
|
90
|
+
```
|
56
91
|
|
57
|
-
|
92
|
+
### Adding issue links
|
58
93
|
|
59
|
-
|
60
|
-
s.attach_file "screenshot1", take_screenshot_as_file
|
61
|
-
end
|
94
|
+
Configure issue link pattern:
|
62
95
|
|
63
|
-
|
64
|
-
|
65
|
-
|
96
|
+
```ruby
|
97
|
+
AllureRspec.configure do |config|
|
98
|
+
config.link_issue_pattern = "http://www.jira.com/browse/{}"
|
99
|
+
config.issue_tag = :issue
|
100
|
+
end
|
101
|
+
```
|
102
|
+
|
103
|
+
Add tag to rspec test:
|
104
|
+
|
105
|
+
```ruby
|
106
|
+
it "some test case", issue: "QA-123" do
|
107
|
+
# test
|
108
|
+
end
|
109
|
+
```
|
110
|
+
|
111
|
+
It's possible to add multiple tms links using `issue_` pattern:
|
112
|
+
|
113
|
+
```ruby
|
114
|
+
it "some test case", issue_1: "QA-123", issue_2: "QA-124" do
|
115
|
+
# test
|
116
|
+
end
|
117
|
+
```
|
118
|
+
|
119
|
+
### Adding custom severity and status details
|
120
|
+
|
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:
|
130
|
+
|
131
|
+
```ruby
|
132
|
+
it "some test case", severity: :critical do
|
133
|
+
# test
|
134
|
+
end
|
135
|
+
```
|
66
136
|
|
67
|
-
|
68
|
-
0.should == 0
|
69
|
-
end
|
137
|
+
Custom status details can be set via `muted`, `known`, `flaky` tags:
|
70
138
|
|
71
|
-
|
139
|
+
```ruby
|
140
|
+
it "some test case", flaky: true, muted: false, known: true do
|
141
|
+
# test
|
142
|
+
end
|
143
|
+
```
|
144
|
+
|
145
|
+
### Adding additional labels to allure test case
|
146
|
+
|
147
|
+
Additional labels can be added using `allure_` pattern:
|
148
|
+
|
149
|
+
```ruby
|
150
|
+
it "some test case", allure_1: "visual_test", allure_2: "core_functionality" do
|
151
|
+
# test
|
152
|
+
end
|
153
|
+
```
|
154
|
+
|
155
|
+
All other metadata tags are also automatically added as labels:
|
156
|
+
|
157
|
+
```ruby
|
158
|
+
it "some test case", :visual_test, :core_functionality do
|
159
|
+
# test
|
160
|
+
end
|
161
|
+
```
|
162
|
+
|
163
|
+
#### Skipping certain tags
|
164
|
+
|
165
|
+
To skip adding certain tags as labels, following configuration can be added:
|
166
|
+
|
167
|
+
```ruby
|
168
|
+
AllureRspec.configure do |config|
|
169
|
+
config.ignored_tags = [:core_functionality, :generic_metadata_to_ignore]
|
170
|
+
end
|
171
|
+
```
|
172
|
+
|
173
|
+
### Behavior driven test grouping
|
174
|
+
|
175
|
+
Marking tests with tags `:epic, :feature, :story`, will group tests accordingly in Behavior report tab.\
|
176
|
+
Tag values can also be configured:
|
177
|
+
|
178
|
+
```ruby
|
179
|
+
AllureRspec.configure do |config|
|
180
|
+
config.epic_tag = :epic
|
181
|
+
config.feature_tag = :feature
|
182
|
+
config.story_tag = :story
|
183
|
+
end
|
184
|
+
```
|
185
|
+
|
186
|
+
```ruby
|
187
|
+
context "context", feature: "my feature" do
|
188
|
+
it "some test case", story: "user story" do
|
189
|
+
# test
|
190
|
+
end
|
191
|
+
end
|
192
|
+
|
193
|
+
context "context 2", feature: "my feature" do
|
194
|
+
it "some test case 2", story: "user story" do
|
195
|
+
# test
|
196
|
+
end
|
197
|
+
end
|
198
|
+
```
|
199
|
+
|
200
|
+
### Custom actions
|
201
|
+
|
202
|
+
Rspec example object has access to [Allure](https://www.rubydoc.info/github/allure-framework/allure-ruby/Allure) helper methods.
|
203
|
+
It can be used to add or run steps, add attachments, modify test case etc.
|
204
|
+
|
205
|
+
```ruby
|
206
|
+
it "some test case" do |e|
|
207
|
+
e.run_step("my custom step") do
|
208
|
+
# some action
|
72
209
|
end
|
210
|
+
e.add_attachment(name: "attachment", source: "Some string", type: Allure::ContentType::TXT)
|
73
211
|
end
|
74
212
|
```
|
213
|
+
|
214
|
+
### Steps
|
215
|
+
|
216
|
+
[Step annotations](../allure-ruby-commons/README.md#steps)
|
217
|
+
|
218
|
+
### Example project
|
219
|
+
|
220
|
+
[RSpec Example](https://github.com/allure-examples/allure-rspec-example)
|
221
|
+
|
222
|
+
## HTML report generation
|
223
|
+
|
224
|
+
Report is generated using allure commandline tool. [Allure wiki](https://docs.qameta.io/allure/#_reporting).
|
data/lib/allure-rspec.rb
CHANGED
@@ -1,56 +1,28 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
require 'allure-rspec/formatter'
|
4
|
-
require 'allure-rspec/adaptor'
|
5
|
-
require 'allure-rspec/dsl'
|
6
|
-
require 'allure-rspec/hooks'
|
1
|
+
# rubocop:disable Naming/FileName
|
2
|
+
# frozen_string_literal: true
|
7
3
|
|
8
|
-
|
9
|
-
module Config
|
10
|
-
class << self
|
11
|
-
attr_accessor :output_dir
|
12
|
-
attr_accessor :clean_dir
|
13
|
-
attr_accessor :logging_level
|
4
|
+
require "allure-ruby-commons"
|
14
5
|
|
15
|
-
|
16
|
-
DEFAULT_LOGGING_LEVEL = Logger::DEBUG
|
17
|
-
|
18
|
-
def output_dir
|
19
|
-
@output_dir || DEFAULT_OUTPUT_DIR
|
20
|
-
end
|
21
|
-
|
22
|
-
def clean_dir?
|
23
|
-
@clean_dir.nil? ? true : @clean_dir
|
24
|
-
end
|
25
|
-
|
26
|
-
def logging_level
|
27
|
-
@logging_level || DEFAULT_LOGGING_LEVEL
|
28
|
-
end
|
29
|
-
end
|
30
|
-
end
|
31
|
-
|
32
|
-
class Context
|
33
|
-
attr_accessor :rspec
|
34
|
-
|
35
|
-
def rspec
|
36
|
-
@rspec
|
37
|
-
end
|
38
|
-
end
|
6
|
+
require_rel "allure_rspec/**/*.rb"
|
39
7
|
|
8
|
+
module AllureRspec
|
40
9
|
class << self
|
41
|
-
|
42
|
-
|
10
|
+
# Get allure cucumber configuration
|
11
|
+
# @return [AllureRspec::RspecConfig]
|
12
|
+
def configuration
|
13
|
+
RspecConfig.instance
|
43
14
|
end
|
44
|
-
end
|
45
15
|
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
}
|
16
|
+
# Set allure configuration
|
17
|
+
# @yieldparam [AllureRspec::RspecConfig]
|
18
|
+
# @yieldreturn [void]
|
19
|
+
# @return [void]
|
20
|
+
def configure
|
21
|
+
yield(configuration)
|
53
22
|
end
|
54
23
|
end
|
55
|
-
|
56
24
|
end
|
25
|
+
|
26
|
+
# Rspec formatter class shorthand
|
27
|
+
AllureRspecFormatter = AllureRspec::RSpecFormatter
|
28
|
+
# rubocop:enable Naming/FileName
|
@@ -0,0 +1,106 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "singleton"
|
4
|
+
|
5
|
+
module AllureRspec
|
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
|
23
|
+
include Singleton
|
24
|
+
extend Forwardable
|
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
|
+
|
39
|
+
def_delegators :@allure_config,
|
40
|
+
:clean_results_directory,
|
41
|
+
:clean_results_directory=,
|
42
|
+
:link_issue_pattern,
|
43
|
+
:link_issue_pattern=,
|
44
|
+
:link_tms_pattern,
|
45
|
+
:link_tms_pattern=,
|
46
|
+
:logging_level,
|
47
|
+
:logging_level=,
|
48
|
+
:logger,
|
49
|
+
:logger=,
|
50
|
+
:results_directory,
|
51
|
+
:results_directory=,
|
52
|
+
:environment,
|
53
|
+
:environment=,
|
54
|
+
:environment_properties,
|
55
|
+
:environment_properties=,
|
56
|
+
:categories,
|
57
|
+
:categories=
|
58
|
+
|
59
|
+
def initialize
|
60
|
+
@allure_config = Allure.configuration
|
61
|
+
end
|
62
|
+
|
63
|
+
attr_writer :tms_tag,
|
64
|
+
:issue_tag,
|
65
|
+
:severity_tag,
|
66
|
+
:epic_tag,
|
67
|
+
:feature_tag,
|
68
|
+
:story_tag,
|
69
|
+
:ignored_tags
|
70
|
+
|
71
|
+
# @return [Symbol]
|
72
|
+
def tms_tag
|
73
|
+
@tms_tag || DEFAULT_TMS_TAG
|
74
|
+
end
|
75
|
+
|
76
|
+
# @return [Symbol]
|
77
|
+
def issue_tag
|
78
|
+
@issue_tag || DEFAULT_ISSUE_TAG
|
79
|
+
end
|
80
|
+
|
81
|
+
# @return [Symbol]
|
82
|
+
def severity_tag
|
83
|
+
@severity_tag || DEFAULT_SEVERITY_TAG
|
84
|
+
end
|
85
|
+
|
86
|
+
# @return [Symbol]
|
87
|
+
def epic_tag
|
88
|
+
@epic_tag || DEFAULT_EPIC_TAG
|
89
|
+
end
|
90
|
+
|
91
|
+
# @return [Symbol]
|
92
|
+
def feature_tag
|
93
|
+
@feature_tag || DEFAULT_FEATURE_TAG
|
94
|
+
end
|
95
|
+
|
96
|
+
# @return [Symbol]
|
97
|
+
def story_tag
|
98
|
+
@story_tag || DEFAULT_STORY_TAG
|
99
|
+
end
|
100
|
+
|
101
|
+
# @return [Array]
|
102
|
+
def ignored_tags
|
103
|
+
@ignored_tags || []
|
104
|
+
end
|
105
|
+
end
|
106
|
+
end
|
@@ -0,0 +1,141 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "rspec/core"
|
4
|
+
require "rspec/core/formatters/base_formatter"
|
5
|
+
|
6
|
+
# Main allure-rspec module
|
7
|
+
module AllureRspec
|
8
|
+
# Main rspec formatter class translating rspec events to allure lifecycle
|
9
|
+
class RSpecFormatter < RSpec::Core::Formatters::BaseFormatter
|
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
|
18
|
+
|
19
|
+
RSpec::Core::Formatters.register(
|
20
|
+
self,
|
21
|
+
:start,
|
22
|
+
:stop,
|
23
|
+
:example_group_started,
|
24
|
+
:example_group_finished,
|
25
|
+
:example_started,
|
26
|
+
:example_finished
|
27
|
+
)
|
28
|
+
|
29
|
+
RSpec.configure do |config|
|
30
|
+
ids = Allure::TestPlan.test_ids
|
31
|
+
names = Allure::TestPlan.test_names
|
32
|
+
|
33
|
+
config.filter_run_when_matching(*ids.map { |id| { allure_id: id } }) if ids
|
34
|
+
config.full_description = names if names
|
35
|
+
end
|
36
|
+
|
37
|
+
def initialize(output)
|
38
|
+
super
|
39
|
+
|
40
|
+
@allure_config = AllureRspec.configuration
|
41
|
+
Allure.lifecycle = @lifecycle = Allure::AllureLifecycle.new(@allure_config)
|
42
|
+
end
|
43
|
+
|
44
|
+
# Start test run
|
45
|
+
# @param [RSpec::Core::Notifications::StartNotification] _start_notification
|
46
|
+
# @return [void]
|
47
|
+
def start(_start_notification)
|
48
|
+
lifecycle.clean_results_dir
|
49
|
+
lifecycle.write_categories
|
50
|
+
|
51
|
+
RSpec::Core::Example.class_eval do
|
52
|
+
include Allure
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
# Start test run
|
57
|
+
# @param [RSpec::Core::Notifications::StopNotification] _stop_notification
|
58
|
+
# @return [void]
|
59
|
+
def stop(_stop_notification)
|
60
|
+
lifecycle.write_environment
|
61
|
+
end
|
62
|
+
|
63
|
+
# Starts example group
|
64
|
+
# @param [RSpec::Core::Notifications::GroupNotification] example_group_notification
|
65
|
+
# @return [void]
|
66
|
+
def example_group_started(example_group_notification)
|
67
|
+
description = example_group_notification.group.description.yield_self do |desc|
|
68
|
+
desc.empty? ? "Anonymous" : desc
|
69
|
+
end
|
70
|
+
lifecycle.start_test_container(Allure::TestResultContainer.new(name: description))
|
71
|
+
end
|
72
|
+
|
73
|
+
# Starts example
|
74
|
+
# @param [RSpec::Core::Notifications::ExampleNotification] example_notification
|
75
|
+
# @return [void]
|
76
|
+
def example_started(example_notification)
|
77
|
+
lifecycle.start_test_case(test_result(example_notification.example))
|
78
|
+
end
|
79
|
+
|
80
|
+
# Finishes example
|
81
|
+
# @param [RSpec::Core::Notifications::ExampleNotification] example_notification
|
82
|
+
# @return [void]
|
83
|
+
def example_finished(example_notification)
|
84
|
+
lifecycle.update_test_case(&update_test_proc(example_notification.example.execution_result))
|
85
|
+
lifecycle.stop_test_case
|
86
|
+
end
|
87
|
+
|
88
|
+
# Starts example group
|
89
|
+
# @param [RSpec::Core::Notifications::GroupNotification] _example_group_notification
|
90
|
+
# @return [void]
|
91
|
+
def example_group_finished(_example_group_notification)
|
92
|
+
lifecycle.stop_test_container
|
93
|
+
end
|
94
|
+
|
95
|
+
private
|
96
|
+
|
97
|
+
attr_reader :lifecycle, :allure_config
|
98
|
+
|
99
|
+
# Transform example to <Allure::TestResult>
|
100
|
+
# @param [RSpec::Core::Example] example
|
101
|
+
# @return [Allure::TestResult]
|
102
|
+
def test_result(example)
|
103
|
+
parser = RspecMetadataParser.new(example, allure_config)
|
104
|
+
|
105
|
+
Allure::TestResult.new(
|
106
|
+
name: example.description,
|
107
|
+
description: "Location - #{strip_relative(example.location)}",
|
108
|
+
description_html: "Location - #{strip_relative(example.location)}",
|
109
|
+
history_id: example.id,
|
110
|
+
full_name: example.full_description,
|
111
|
+
labels: parser.labels,
|
112
|
+
links: parser.links,
|
113
|
+
status_details: parser.status_details,
|
114
|
+
environment: allure_config.environment
|
115
|
+
)
|
116
|
+
end
|
117
|
+
|
118
|
+
# Update test status on finish
|
119
|
+
# @param [RSpec::Core::Example::ExecutionResult] result
|
120
|
+
# @return [Proc]
|
121
|
+
def update_test_proc(result)
|
122
|
+
Allure::ResultUtils.status_details(result.exception).yield_self do |status_detail|
|
123
|
+
proc do |test_case|
|
124
|
+
test_case.stage = Allure::Stage::FINISHED
|
125
|
+
test_case.status = status(result)
|
126
|
+
test_case.status_details.message = status_detail.message
|
127
|
+
test_case.status_details.trace = status_detail.trace
|
128
|
+
end
|
129
|
+
end
|
130
|
+
end
|
131
|
+
|
132
|
+
# Get allure status from result
|
133
|
+
# @param [RSpec::Core::Example::ExecutionResult] result
|
134
|
+
# @return [Symbol]
|
135
|
+
def status(result)
|
136
|
+
return Allure::ResultUtils.status(result.exception) if result.status == :failed
|
137
|
+
|
138
|
+
ALLURE_STATUS[result.status]
|
139
|
+
end
|
140
|
+
end
|
141
|
+
end
|