Skip to content
This repository was archived by the owner on Oct 16, 2019. It is now read-only.

Commit 62812a9

Browse files
authored
Merge pull request #40 from automation-wizards/feature_test_tags
Feature: Added ability to use Allure TMS / ISSUE / SEVERITY labels
2 parents bf72427 + 0c7c7e7 commit 62812a9

File tree

2 files changed

+52
-11
lines changed

2 files changed

+52
-11
lines changed

lib/allure-cucumber.rb

+24-8
Original file line numberDiff line numberDiff line change
@@ -5,18 +5,34 @@
55
require 'allure-cucumber/formatter'
66

77
module AllureCucumber
8-
8+
99
module Config
1010
class << self
11-
attr_accessor :output_dir, :clean_dir
12-
13-
DEFAULT_OUTPUT_DIR = 'gen/allure-results'
14-
11+
12+
attr_accessor :output_dir, :clean_dir, :tms_prefix, :issue_prefix, :severity_prefix
13+
14+
DEFAULT_OUTPUT_DIR = 'gen/allure-results'
15+
DEFAULT_TMS_PREFIX = '@TMS:'
16+
DEFAULT_ISSUE_PREFIX = '@ISSUE:'
17+
DEFAULT_SEVERITY_PREFIX = '@SEVERITY:'
18+
1519
def output_dir
1620
@output_dir || DEFAULT_OUTPUT_DIR
1721
end
18-
19-
end
22+
23+
def tms_prefix
24+
@tms_prefix || DEFAULT_TMS_PREFIX
25+
end
26+
27+
def issue_prefix
28+
@issue_prefix || DEFAULT_ISSUE_PREFIX
29+
end
30+
31+
def severity_prefix
32+
@severity_prefix || DEFAULT_SEVERITY_PREFIX
33+
end
34+
35+
end
2036
end
2137

2238
class << self
@@ -27,5 +43,5 @@ def configure(&block)
2743
end
2844
end
2945
end
30-
46+
3147
end

lib/allure-cucumber/formatter.rb

+28-3
Original file line numberDiff line numberDiff line change
@@ -8,16 +8,17 @@ class Formatter
88
include AllureCucumber::DSL
99

1010
TEST_HOOK_NAMES_TO_IGNORE = ['Before hook', 'After hook']
11-
11+
ALLOWED_SEVERITIES = ['blocker', 'critical', 'normal', 'minor', 'trivial']
1212
POSSIBLE_STATUSES = ['passed', 'failed', 'pending', 'skipped', 'undefined']
13-
13+
1414
def initialize(step_mother, io, options)
1515
dir = Pathname.new(AllureCucumber::Config.output_dir)
1616
FileUtils.rm_rf(dir) unless AllureCucumber::Config.clean_dir == false
1717
FileUtils.mkdir_p(dir)
1818
@tracker = AllureCucumber::FeatureTracker.create
1919
@deferred_before_test_steps = []
2020
@deferred_after_test_steps = []
21+
@scenario_tags = {}
2122
end
2223

2324
# Start the test suite
@@ -37,6 +38,23 @@ def scenario_name(keyword, name, *args)
3738
@scenario_outline ? @scenario_outline_name = scenario_name : @tracker.scenario_name = scenario_name
3839
end
3940

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+
4058
def before_examples(*args)
4159
@header_row = true
4260
@row_count = 0
@@ -124,6 +142,10 @@ def after_multiline_arg(multiline_arg)
124142

125143
private
126144

145+
def remove_tag_prefix(tag, prefix)
146+
tag.gsub(prefix,'')
147+
end
148+
127149
def step_status(result)
128150
POSSIBLE_STATUSES.each do |status|
129151
return cucumber_status_to_allure_status(status) if result.send("#{status}?")
@@ -160,7 +182,9 @@ def attach_multiline_arg_to_file(multiline_arg)
160182

161183
def start_test
162184
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)
164188
post_deferred_steps
165189
end
166190
end
@@ -187,6 +211,7 @@ def stop_test(result)
187211
@tracker.scenario_name = nil
188212
@deferred_before_test_steps = []
189213
@deferred_after_test_steps = []
214+
@scenario_tags = {}
190215
end
191216
end
192217

0 commit comments

Comments
 (0)