diff --git a/allure-cucumber/lib/allure_cucumber/models/cucumber_model.rb b/allure-cucumber/lib/allure_cucumber/models/cucumber_model.rb index 091a6af..6573c3f 100644 --- a/allure-cucumber/lib/allure_cucumber/models/cucumber_model.rb +++ b/allure-cucumber/lib/allure_cucumber/models/cucumber_model.rb @@ -60,7 +60,7 @@ def fixture_result(hook_step) # @return [Hash] def failure_details(result) return { message: result.exception.message, trace: result.exception.backtrace.join("\n") } if result.failed? - return { message: result.message, trace: result.backtrace.join("\n") } if result.undefined? + return { message: result.message, trace: result.backtrace.join("\n") } if result.undefined? || result.skipped? {} end diff --git a/allure-cucumber/spec/cucumber_helper.rb b/allure-cucumber/spec/cucumber_helper.rb index 6ebd3e1..181d1e9 100644 --- a/allure-cucumber/spec/cucumber_helper.rb +++ b/allure-cucumber/spec/cucumber_helper.rb @@ -26,6 +26,10 @@ class CucumberHelper AfterStep("@after_step") do end + + Before("@skipped") do + skip_this_scenario("because reasons") + end RUBY STEPS = <<~RUBY diff --git a/allure-cucumber/spec/unit/formatter_test_case_stopped_spec.rb b/allure-cucumber/spec/unit/formatter_test_case_stopped_spec.rb index e2ebd54..e8bb974 100644 --- a/allure-cucumber/spec/unit/formatter_test_case_stopped_spec.rb +++ b/allure-cucumber/spec/unit/formatter_test_case_stopped_spec.rb @@ -86,4 +86,29 @@ end end end + + it "correctly updates skipped test case" do + run_cucumber_cli(<<~FEATURE) + Feature: Simple feature + + @skipped + Scenario: Add a to b + Simple scenario description + Given a is 5 + And b is 10 + When I add a to b + Then step fails with simple exception + And this step shoud be skipped + FEATURE + + expect(lifecycle).to have_received(:update_test_case).with(no_args) do |&arg| + arg.call(@test_case) + aggregate_failures "Should update correct test case parameters" do + expect(@test_case.stage).to eq(Allure::Stage::FINISHED) + expect(@test_case.status).to eq(Allure::Status::SKIPPED) + expect(@test_case.status_details.message).to eq("because reasons") + expect(@test_case.status_details.trace).not_to be_empty + end + end + end end