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

Feature: Added ability to use Allure TMS / ISSUE / SEVERITY labels #40

Merged
merged 1 commit into from Jun 21, 2016
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
32 changes: 24 additions & 8 deletions lib/allure-cucumber.rb
Original file line number Diff line number Diff line change
Expand Up @@ -5,18 +5,34 @@
require 'allure-cucumber/formatter'

module AllureCucumber

module Config
class << self
attr_accessor :output_dir, :clean_dir

DEFAULT_OUTPUT_DIR = 'gen/allure-results'


attr_accessor :output_dir, :clean_dir, :tms_prefix, :issue_prefix, :severity_prefix

DEFAULT_OUTPUT_DIR = 'gen/allure-results'
DEFAULT_TMS_PREFIX = '@TMS:'
DEFAULT_ISSUE_PREFIX = '@ISSUE:'
DEFAULT_SEVERITY_PREFIX = '@SEVERITY:'

def output_dir
@output_dir || DEFAULT_OUTPUT_DIR
end

end

def tms_prefix
@tms_prefix || DEFAULT_TMS_PREFIX
end

def issue_prefix
@issue_prefix || DEFAULT_ISSUE_PREFIX
end

def severity_prefix
@severity_prefix || DEFAULT_SEVERITY_PREFIX
end

end
end

class << self
Expand All @@ -27,5 +43,5 @@ def configure(&block)
end
end
end

end
31 changes: 28 additions & 3 deletions lib/allure-cucumber/formatter.rb
Original file line number Diff line number Diff line change
Expand Up @@ -8,16 +8,17 @@ class Formatter
include AllureCucumber::DSL

TEST_HOOK_NAMES_TO_IGNORE = ['Before hook', 'After hook']

ALLOWED_SEVERITIES = ['blocker', 'critical', 'normal', 'minor', 'trivial']
POSSIBLE_STATUSES = ['passed', 'failed', 'pending', 'skipped', 'undefined']

def initialize(step_mother, io, options)
dir = Pathname.new(AllureCucumber::Config.output_dir)
FileUtils.rm_rf(dir) unless AllureCucumber::Config.clean_dir == false
FileUtils.mkdir_p(dir)
@tracker = AllureCucumber::FeatureTracker.create
@deferred_before_test_steps = []
@deferred_after_test_steps = []
@scenario_tags = {}
end

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

# Analyze Cucumber Scenario Tags
def after_tags(tags)
tags.each do |tag|
if AllureCucumber::Config.tms_prefix && tag.name.include?(AllureCucumber::Config.tms_prefix)
@scenario_tags[:testId] = remove_tag_prefix(tag.name, AllureCucumber::Config.tms_prefix)
end

if tag.name.include?(AllureCucumber::Config.issue_prefix)
@scenario_tags[:issue] = remove_tag_prefix(tag.name, AllureCucumber::Config.issue_prefix)
end

if tag.name.include?(AllureCucumber::Config.severity_prefix) && ALLOWED_SEVERITIES.include?(trim_tag(tag.name, AllureCucumber::Config.severity_prefix))
@scenario_tags[:severity] = remove_tag_prefix(tag.name, AllureCucumber::Config.severity_prefix).downcase.to_sym
end
end
end

def before_examples(*args)
@header_row = true
@row_count = 0
Expand Down Expand Up @@ -124,6 +142,10 @@ def after_multiline_arg(multiline_arg)

private

def remove_tag_prefix(tag, prefix)
tag.gsub(prefix,'')
end

def step_status(result)
POSSIBLE_STATUSES.each do |status|
return cucumber_status_to_allure_status(status) if result.send("#{status}?")
Expand Down Expand Up @@ -160,7 +182,9 @@ def attach_multiline_arg_to_file(multiline_arg)

def start_test
if @tracker.scenario_name
AllureRubyAdaptorApi::Builder.start_test(@tracker.feature_name, @tracker.scenario_name, :feature => @tracker.feature_name, :story => @tracker.scenario_name)
@scenario_tags[:feature] = @tracker.feature_name
@scenario_tags[:story] = @tracker.scenario_name
AllureRubyAdaptorApi::Builder.start_test(@tracker.feature_name, @tracker.scenario_name, @scenario_tags)
post_deferred_steps
end
end
Expand All @@ -187,6 +211,7 @@ def stop_test(result)
@tracker.scenario_name = nil
@deferred_before_test_steps = []
@deferred_after_test_steps = []
@scenario_tags = {}
end
end

Expand Down