@@ -8,16 +8,17 @@ class Formatter
8
8
include AllureCucumber ::DSL
9
9
10
10
TEST_HOOK_NAMES_TO_IGNORE = [ 'Before hook' , 'After hook' ]
11
-
11
+ ALLOWED_SEVERITIES = [ 'blocker' , 'critical' , 'normal' , 'minor' , 'trivial' ]
12
12
POSSIBLE_STATUSES = [ 'passed' , 'failed' , 'pending' , 'skipped' , 'undefined' ]
13
-
13
+
14
14
def initialize ( step_mother , io , options )
15
15
dir = Pathname . new ( AllureCucumber ::Config . output_dir )
16
16
FileUtils . rm_rf ( dir ) unless AllureCucumber ::Config . clean_dir == false
17
17
FileUtils . mkdir_p ( dir )
18
18
@tracker = AllureCucumber ::FeatureTracker . create
19
19
@deferred_before_test_steps = [ ]
20
20
@deferred_after_test_steps = [ ]
21
+ @scenario_tags = { }
21
22
end
22
23
23
24
# Start the test suite
@@ -37,6 +38,23 @@ def scenario_name(keyword, name, *args)
37
38
@scenario_outline ? @scenario_outline_name = scenario_name : @tracker . scenario_name = scenario_name
38
39
end
39
40
41
+ # Analyze Cucumber Scenario Tags
42
+ def after_tags ( tags )
43
+ tags . each do |tag |
44
+ if AllureCucumber ::Config . tms_prefix && tag . name . include? ( AllureCucumber ::Config . tms_prefix )
45
+ @scenario_tags [ :testId ] = remove_tag_prefix ( tag . name , AllureCucumber ::Config . tms_prefix )
46
+ end
47
+
48
+ if tag . name . include? ( AllureCucumber ::Config . issue_prefix )
49
+ @scenario_tags [ :issue ] = remove_tag_prefix ( tag . name , AllureCucumber ::Config . issue_prefix )
50
+ end
51
+
52
+ if tag . name . include? ( AllureCucumber ::Config . severity_prefix ) && ALLOWED_SEVERITIES . include? ( trim_tag ( tag . name , AllureCucumber ::Config . severity_prefix ) )
53
+ @scenario_tags [ :severity ] = remove_tag_prefix ( tag . name , AllureCucumber ::Config . severity_prefix ) . downcase . to_sym
54
+ end
55
+ end
56
+ end
57
+
40
58
def before_examples ( *args )
41
59
@header_row = true
42
60
@row_count = 0
@@ -124,6 +142,10 @@ def after_multiline_arg(multiline_arg)
124
142
125
143
private
126
144
145
+ def remove_tag_prefix ( tag , prefix )
146
+ tag . gsub ( prefix , '' )
147
+ end
148
+
127
149
def step_status ( result )
128
150
POSSIBLE_STATUSES . each do |status |
129
151
return cucumber_status_to_allure_status ( status ) if result . send ( "#{ status } ?" )
@@ -160,7 +182,9 @@ def attach_multiline_arg_to_file(multiline_arg)
160
182
161
183
def start_test
162
184
if @tracker . scenario_name
163
- AllureRubyAdaptorApi ::Builder . start_test ( @tracker . feature_name , @tracker . scenario_name , :feature => @tracker . feature_name , :story => @tracker . scenario_name )
185
+ @scenario_tags [ :feature ] = @tracker . feature_name
186
+ @scenario_tags [ :story ] = @tracker . scenario_name
187
+ AllureRubyAdaptorApi ::Builder . start_test ( @tracker . feature_name , @tracker . scenario_name , @scenario_tags )
164
188
post_deferred_steps
165
189
end
166
190
end
@@ -187,6 +211,7 @@ def stop_test(result)
187
211
@tracker . scenario_name = nil
188
212
@deferred_before_test_steps = [ ]
189
213
@deferred_after_test_steps = [ ]
214
+ @scenario_tags = { }
190
215
end
191
216
end
192
217
0 commit comments