From a7f6c79e6874aeb3aeb426bf0756f0f5be659103 Mon Sep 17 00:00:00 2001 From: Andrejs Cunskis Date: Mon, 8 Jan 2018 10:52:27 +0200 Subject: [PATCH 1/2] Allow embedding attachments and other allure steps in hook steps --- allure-cucumber2-jvm/build.gradle | 2 +- .../cucumber2jvm/AllureCucumber2Jvm.java | 35 ++++++++++++------- 2 files changed, 23 insertions(+), 14 deletions(-) diff --git a/allure-cucumber2-jvm/build.gradle b/allure-cucumber2-jvm/build.gradle index 8e24c8893..b25f10894 100644 --- a/allure-cucumber2-jvm/build.gradle +++ b/allure-cucumber2-jvm/build.gradle @@ -8,7 +8,7 @@ configurations { agent } -def cucumber_version = '2.1.0' +def cucumber_version = '2.3.1' dependencies { agent 'org.aspectj:aspectjweaver' diff --git a/allure-cucumber2-jvm/src/main/java/io/qameta/allure/cucumber2jvm/AllureCucumber2Jvm.java b/allure-cucumber2-jvm/src/main/java/io/qameta/allure/cucumber2jvm/AllureCucumber2Jvm.java index 019518b75..713c90aa3 100644 --- a/allure-cucumber2-jvm/src/main/java/io/qameta/allure/cucumber2jvm/AllureCucumber2Jvm.java +++ b/allure-cucumber2-jvm/src/main/java/io/qameta/allure/cucumber2jvm/AllureCucumber2Jvm.java @@ -42,6 +42,7 @@ import java.util.HashMap; import java.util.Optional; import java.util.UUID; +import java.util.function.Consumer; import java.util.stream.Collectors; import java.util.stream.IntStream; @@ -151,8 +152,7 @@ private void handleTestStepStarted(final TestStepStarted event) { cucumberSourceUtils.getKeywordFromSource(currentFeatureFile, event.testStep.getStepLine()) ).orElse("UNDEFINED"); - final StepResult stepResult = new StepResult(); - stepResult + final StepResult stepResult = new StepResult() .withName(String.format("%s %s", stepKeyword, event.testStep.getPickleStep().getText())) .withStart(System.currentTimeMillis()); @@ -162,6 +162,12 @@ private void handleTestStepStarted(final TestStepStarted event) { .filter(argument -> argument instanceof PickleTable) .findFirst() .ifPresent(table -> createDataTableAttachment((PickleTable) table)); + } else if (event.testStep.isHook() && event.testStep instanceof UnskipableStep) { + final StepResult stepResult = new StepResult() + .withName(event.testStep.getHookType().toString()) + .withStart(System.currentTimeMillis()); + + lifecycle.startStep(getTestCaseUuid(currentTestCase), getHookStepUuid(event.testStep), stepResult); } } @@ -186,6 +192,11 @@ private String getStepUuid(final TestStep step) { + step.getPickleStep().getText() + step.getStepLine(); } + private String getHookStepUuid(final TestStep step) { + return currentFeature.getName() + getTestCaseUuid(currentTestCase) + + step.getHookType().toString() + step.getCodeLocation(); + } + private String getHistoryId(final TestCase testCase) { final String testCaseLocation = testCase.getUri() + ":" + testCase.getLine(); return Utils.md5(testCaseLocation); @@ -239,16 +250,11 @@ private void createDataTableAttachment(final PickleTable pickleTable) { } private void handleHookStep(final TestStepFinished event) { - final String uuid = UUID.randomUUID().toString(); - final StepResult stepResult = new StepResult() - .withName(event.testStep.getHookType().toString()) - .withStatus(translateTestCaseStatus(event.result)) - .withStart(System.currentTimeMillis() - event.result.getDuration()) - .withStop(System.currentTimeMillis()); - - if (!Status.PASSED.equals(stepResult.getStatus())) { - final StatusDetails statusDetails = ResultsUtils.getStatusDetails(event.result.getError()).get(); - stepResult.withStatusDetails(statusDetails); + final String uuid = getHookStepUuid(event.testStep); + Consumer stepResult = result -> result.withStatus(translateTestCaseStatus(event.result)); + + if (!Status.PASSED.equals((translateTestCaseStatus(event.result)))) { + StatusDetails statusDetails = ResultsUtils.getStatusDetails(event.result.getError()).get(); if (event.testStep.getHookType() == HookType.Before) { final TagParser tagParser = new TagParser(currentFeature, currentTestCase); statusDetails @@ -260,9 +266,12 @@ private void handleHookStep(final TestStepFinished event) { scenarioResult.withStatus(Status.SKIPPED) .withStatusDetails(statusDetails)); } + stepResult = result -> result + .withStatus(translateTestCaseStatus(event.result)) + .withStatusDetails(statusDetails); } - lifecycle.startStep(getTestCaseUuid(currentTestCase), uuid, stepResult); + lifecycle.updateStep(uuid, stepResult); lifecycle.stopStep(uuid); } From 77e43d6b2a4cc38f5fd1fbf6d3a54df0d6f41210 Mon Sep 17 00:00:00 2001 From: Andrejs Cunskis Date: Mon, 8 Jan 2018 11:29:05 +0200 Subject: [PATCH 2/2] Fix checkstyle violations --- .../io/qameta/allure/cucumber2jvm/AllureCucumber2Jvm.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/allure-cucumber2-jvm/src/main/java/io/qameta/allure/cucumber2jvm/AllureCucumber2Jvm.java b/allure-cucumber2-jvm/src/main/java/io/qameta/allure/cucumber2jvm/AllureCucumber2Jvm.java index 713c90aa3..102958211 100644 --- a/allure-cucumber2-jvm/src/main/java/io/qameta/allure/cucumber2jvm/AllureCucumber2Jvm.java +++ b/allure-cucumber2-jvm/src/main/java/io/qameta/allure/cucumber2jvm/AllureCucumber2Jvm.java @@ -253,8 +253,8 @@ private void handleHookStep(final TestStepFinished event) { final String uuid = getHookStepUuid(event.testStep); Consumer stepResult = result -> result.withStatus(translateTestCaseStatus(event.result)); - if (!Status.PASSED.equals((translateTestCaseStatus(event.result)))) { - StatusDetails statusDetails = ResultsUtils.getStatusDetails(event.result.getError()).get(); + if (!Status.PASSED.equals(translateTestCaseStatus(event.result))) { + final StatusDetails statusDetails = ResultsUtils.getStatusDetails(event.result.getError()).get(); if (event.testStep.getHookType() == HookType.Before) { final TagParser tagParser = new TagParser(currentFeature, currentTestCase); statusDetails