From 0210f641ca5c601d912a15e5473c04c637894520 Mon Sep 17 00:00:00 2001 From: Sergei Portnov <3230150+prtnv@users.noreply.github.com> Date: Mon, 11 Apr 2022 21:16:19 +0300 Subject: [PATCH 1/2] Fix same history id generation for same name feature files in different location --- .../allure/cucumber5jvm/AllureCucumber5Jvm.java | 17 ++++++++++++++--- .../cucumber5jvm/AllureCucumber5JvmTest.java | 17 +++++++++++++---- .../test/resources/features/same/simple.feature | 7 +++++++ .../allure/cucumber6jvm/AllureCucumber6Jvm.java | 17 ++++++++++++++--- .../cucumber6jvm/AllureCucumber6JvmTest.java | 17 +++++++++++++---- .../test/resources/features/same/simple.feature | 7 +++++++ .../allure/cucumber7jvm/AllureCucumber7Jvm.java | 17 ++++++++++++++--- .../cucumber7jvm/AllureCucumber7JvmTest.java | 17 +++++++++++++---- .../test/resources/features/same/simple.feature | 7 +++++++ 9 files changed, 102 insertions(+), 21 deletions(-) create mode 100644 allure-cucumber5-jvm/src/test/resources/features/same/simple.feature create mode 100644 allure-cucumber6-jvm/src/test/resources/features/same/simple.feature create mode 100644 allure-cucumber7-jvm/src/test/resources/features/same/simple.feature diff --git a/allure-cucumber5-jvm/src/main/java/io/qameta/allure/cucumber5jvm/AllureCucumber5Jvm.java b/allure-cucumber5-jvm/src/main/java/io/qameta/allure/cucumber5jvm/AllureCucumber5Jvm.java index 724e058db..5dbcaabc6 100644 --- a/allure-cucumber5-jvm/src/main/java/io/qameta/allure/cucumber5jvm/AllureCucumber5Jvm.java +++ b/allure-cucumber5-jvm/src/main/java/io/qameta/allure/cucumber5jvm/AllureCucumber5Jvm.java @@ -49,6 +49,7 @@ import io.qameta.allure.model.TestResultContainer; import java.io.ByteArrayInputStream; +import java.io.File; import java.net.URI; import java.nio.charset.StandardCharsets; import java.util.Collections; @@ -100,6 +101,9 @@ public class AllureCucumber5Jvm implements ConcurrentEventListener { private static final String TXT_EXTENSION = ".txt"; private static final String TEXT_PLAIN = "text/plain"; + private static final char CUCUMBER_RESOURCE_SEPARATOR_CHAR = '/'; + private static final String CUCUMBER_WORKING_DIR = System.getProperty("user.dir") + .replace(File.separatorChar, CUCUMBER_RESOURCE_SEPARATOR_CHAR); @SuppressWarnings("unused") public AllureCucumber5Jvm() { @@ -276,12 +280,19 @@ private String getHookStepUuid(final HookTestStep step) { } private String getHistoryId(final TestCase testCase) { - final String testCaseLocation = testCase.getUri().toString() - .substring(testCase.getUri().toString().lastIndexOf('/') + 1) - + ":" + testCase.getLine(); + final String testCaseLocation = getTestCaseUri(testCase) + ":" + testCase.getLine(); return md5(testCaseLocation); } + private String getTestCaseUri(final TestCase testCase) { + final String testCaseUri = testCase.getUri().toString(); + final int workingDirIdx = testCaseUri.indexOf(CUCUMBER_WORKING_DIR); + if (workingDirIdx == -1) { + return testCaseUri; + } + return testCaseUri.substring(workingDirIdx + CUCUMBER_WORKING_DIR.length()); + } + private Status translateTestCaseStatus(final Result testCaseResult) { switch (testCaseResult.getStatus()) { case FAILED: diff --git a/allure-cucumber5-jvm/src/test/java/io/qameta/allure/cucumber5jvm/AllureCucumber5JvmTest.java b/allure-cucumber5-jvm/src/test/java/io/qameta/allure/cucumber5jvm/AllureCucumber5JvmTest.java index 6541f639b..71d8ad1d2 100644 --- a/allure-cucumber5-jvm/src/test/java/io/qameta/allure/cucumber5jvm/AllureCucumber5JvmTest.java +++ b/allure-cucumber5-jvm/src/test/java/io/qameta/allure/cucumber5jvm/AllureCucumber5JvmTest.java @@ -565,7 +565,7 @@ void shouldPersistHistoryIdForScenarios() { final List testResults = writer.getTestResults(); assertThat(testResults.get(0).getHistoryId()) - .isEqualTo("8eea9ed4458a49d418859d1398580671"); + .isEqualTo("e59f09165cc2d4f1796d1e865ff94524"); } @AllureFeatures.History @@ -577,11 +577,20 @@ void shouldPersistHistoryIdForExamples() { final List testResults = writer.getTestResults(); assertThat(testResults) .extracting(TestResult::getHistoryId) - .containsExactlyInAnyOrder("42a7821e775ec18b112f92e96f0510a5", "afb27d131ed8d41b3f867895a26d2590"); + .containsExactlyInAnyOrder("82e19168ec45a9227a3bbae011de89ae", "aa5784f517f982ae9af20b50dad54e33"); } - private Comparator byHistoryId = - Comparator.comparing(TestResult::getHistoryId); + @AllureFeatures.History + @Test + void shouldPersistDifferentHistoryIdComparedToTheSameTestCaseInDifferentLocation() { + final AllureResultsWriterStub writer = new AllureResultsWriterStub(); + runFeature(writer, "features/simple.feature"); + runFeature(writer, "features/same/simple.feature"); + + final List testResults = writer.getTestResults(); + assertThat(testResults.get(0).getHistoryId()) + .isNotEqualTo(testResults.get(1).getHistoryId()); + } @AllureFeatures.Parallel @Test diff --git a/allure-cucumber5-jvm/src/test/resources/features/same/simple.feature b/allure-cucumber5-jvm/src/test/resources/features/same/simple.feature new file mode 100644 index 000000000..c5b5f2b5f --- /dev/null +++ b/allure-cucumber5-jvm/src/test/resources/features/same/simple.feature @@ -0,0 +1,7 @@ +Feature: Simple feature + + Scenario: Add a to b + Given a is 5 + And b is 10 + When I add a to b + Then result is 15 diff --git a/allure-cucumber6-jvm/src/main/java/io/qameta/allure/cucumber6jvm/AllureCucumber6Jvm.java b/allure-cucumber6-jvm/src/main/java/io/qameta/allure/cucumber6jvm/AllureCucumber6Jvm.java index c208ecd9f..683086508 100644 --- a/allure-cucumber6-jvm/src/main/java/io/qameta/allure/cucumber6jvm/AllureCucumber6Jvm.java +++ b/allure-cucumber6-jvm/src/main/java/io/qameta/allure/cucumber6jvm/AllureCucumber6Jvm.java @@ -48,6 +48,7 @@ import io.qameta.allure.model.TestResultContainer; import java.io.ByteArrayInputStream; +import java.io.File; import java.net.URI; import java.nio.charset.StandardCharsets; import java.util.Collections; @@ -99,6 +100,9 @@ public class AllureCucumber6Jvm implements ConcurrentEventListener { private static final String TXT_EXTENSION = ".txt"; private static final String TEXT_PLAIN = "text/plain"; + private static final char CUCUMBER_RESOURCE_SEPARATOR_CHAR = '/'; + private static final String CUCUMBER_WORKING_DIR = System.getProperty("user.dir") + .replace(File.separatorChar, CUCUMBER_RESOURCE_SEPARATOR_CHAR); @SuppressWarnings("unused") public AllureCucumber6Jvm() { @@ -279,12 +283,19 @@ private String getHookStepUuid(final HookTestStep step) { } private String getHistoryId(final TestCase testCase) { - final String testCaseLocation = testCase.getUri().toString() - .substring(testCase.getUri().toString().lastIndexOf('/') + 1) - + ":" + testCase.getLocation().getLine(); + final String testCaseLocation = getTestCaseUri(testCase) + ":" + testCase.getLocation().getLine(); return md5(testCaseLocation); } + private String getTestCaseUri(final TestCase testCase) { + final String testCaseUri = testCase.getUri().toString(); + final int workingDirIdx = testCaseUri.indexOf(CUCUMBER_WORKING_DIR); + if (workingDirIdx == -1) { + return testCaseUri; + } + return testCaseUri.substring(workingDirIdx + CUCUMBER_WORKING_DIR.length()); + } + private Status translateTestCaseStatus(final Result testCaseResult) { switch (testCaseResult.getStatus()) { case FAILED: diff --git a/allure-cucumber6-jvm/src/test/java/io/qameta/allure/cucumber6jvm/AllureCucumber6JvmTest.java b/allure-cucumber6-jvm/src/test/java/io/qameta/allure/cucumber6jvm/AllureCucumber6JvmTest.java index 98c79cce8..dd0102f4a 100644 --- a/allure-cucumber6-jvm/src/test/java/io/qameta/allure/cucumber6jvm/AllureCucumber6JvmTest.java +++ b/allure-cucumber6-jvm/src/test/java/io/qameta/allure/cucumber6jvm/AllureCucumber6JvmTest.java @@ -565,7 +565,7 @@ void shouldPersistHistoryIdForScenarios() { final List testResults = writer.getTestResults(); assertThat(testResults.get(0).getHistoryId()) - .isEqualTo("8eea9ed4458a49d418859d1398580671"); + .isEqualTo("e59f09165cc2d4f1796d1e865ff94524"); } @AllureFeatures.History @@ -577,11 +577,20 @@ void shouldPersistHistoryIdForExamples() { final List testResults = writer.getTestResults(); assertThat(testResults) .extracting(TestResult::getHistoryId) - .containsExactlyInAnyOrder("42a7821e775ec18b112f92e96f0510a5", "afb27d131ed8d41b3f867895a26d2590"); + .containsExactlyInAnyOrder("82e19168ec45a9227a3bbae011de89ae", "aa5784f517f982ae9af20b50dad54e33"); } - private Comparator byHistoryId = - Comparator.comparing(TestResult::getHistoryId); + @AllureFeatures.History + @Test + void shouldPersistDifferentHistoryIdComparedToTheSameTestCaseInDifferentLocation() { + final AllureResultsWriterStub writer = new AllureResultsWriterStub(); + runFeature(writer, "features/simple.feature"); + runFeature(writer, "features/same/simple.feature"); + + final List testResults = writer.getTestResults(); + assertThat(testResults.get(0).getHistoryId()) + .isNotEqualTo(testResults.get(1).getHistoryId()); + } @AllureFeatures.Parallel @Test diff --git a/allure-cucumber6-jvm/src/test/resources/features/same/simple.feature b/allure-cucumber6-jvm/src/test/resources/features/same/simple.feature new file mode 100644 index 000000000..c5b5f2b5f --- /dev/null +++ b/allure-cucumber6-jvm/src/test/resources/features/same/simple.feature @@ -0,0 +1,7 @@ +Feature: Simple feature + + Scenario: Add a to b + Given a is 5 + And b is 10 + When I add a to b + Then result is 15 diff --git a/allure-cucumber7-jvm/src/main/java/io/qameta/allure/cucumber7jvm/AllureCucumber7Jvm.java b/allure-cucumber7-jvm/src/main/java/io/qameta/allure/cucumber7jvm/AllureCucumber7Jvm.java index 467f533af..04ad7b7e2 100644 --- a/allure-cucumber7-jvm/src/main/java/io/qameta/allure/cucumber7jvm/AllureCucumber7Jvm.java +++ b/allure-cucumber7-jvm/src/main/java/io/qameta/allure/cucumber7jvm/AllureCucumber7Jvm.java @@ -48,6 +48,7 @@ import io.qameta.allure.model.TestResultContainer; import java.io.ByteArrayInputStream; +import java.io.File; import java.net.URI; import java.nio.charset.StandardCharsets; import java.util.Collections; @@ -99,6 +100,9 @@ public class AllureCucumber7Jvm implements ConcurrentEventListener { private static final String TXT_EXTENSION = ".txt"; private static final String TEXT_PLAIN = "text/plain"; + private static final char CUCUMBER_RESOURCE_SEPARATOR_CHAR = '/'; + private static final String CUCUMBER_WORKING_DIR = System.getProperty("user.dir") + .replace(File.separatorChar, CUCUMBER_RESOURCE_SEPARATOR_CHAR); @SuppressWarnings("unused") public AllureCucumber7Jvm() { @@ -279,12 +283,19 @@ private String getHookStepUuid(final HookTestStep step) { } private String getHistoryId(final TestCase testCase) { - final String testCaseLocation = testCase.getUri().toString() - .substring(testCase.getUri().toString().lastIndexOf('/') + 1) - + ":" + testCase.getLocation().getLine(); + final String testCaseLocation = getTestCaseUri(testCase) + ":" + testCase.getLocation().getLine(); return md5(testCaseLocation); } + private String getTestCaseUri(final TestCase testCase) { + final String testCaseUri = testCase.getUri().toString(); + final int workingDirIdx = testCaseUri.indexOf(CUCUMBER_WORKING_DIR); + if (workingDirIdx == -1) { + return testCaseUri; + } + return testCaseUri.substring(workingDirIdx + CUCUMBER_WORKING_DIR.length()); + } + private Status translateTestCaseStatus(final Result testCaseResult) { switch (testCaseResult.getStatus()) { case FAILED: diff --git a/allure-cucumber7-jvm/src/test/java/io/qameta/allure/cucumber7jvm/AllureCucumber7JvmTest.java b/allure-cucumber7-jvm/src/test/java/io/qameta/allure/cucumber7jvm/AllureCucumber7JvmTest.java index 56cd80f72..3926dfa5a 100644 --- a/allure-cucumber7-jvm/src/test/java/io/qameta/allure/cucumber7jvm/AllureCucumber7JvmTest.java +++ b/allure-cucumber7-jvm/src/test/java/io/qameta/allure/cucumber7jvm/AllureCucumber7JvmTest.java @@ -565,7 +565,7 @@ void shouldPersistHistoryIdForScenarios() { final List testResults = writer.getTestResults(); assertThat(testResults.get(0).getHistoryId()) - .isEqualTo("8eea9ed4458a49d418859d1398580671"); + .isEqualTo("e59f09165cc2d4f1796d1e865ff94524"); } @AllureFeatures.History @@ -577,11 +577,20 @@ void shouldPersistHistoryIdForExamples() { final List testResults = writer.getTestResults(); assertThat(testResults) .extracting(TestResult::getHistoryId) - .containsExactlyInAnyOrder("42a7821e775ec18b112f92e96f0510a5", "afb27d131ed8d41b3f867895a26d2590"); + .containsExactlyInAnyOrder("82e19168ec45a9227a3bbae011de89ae", "aa5784f517f982ae9af20b50dad54e33"); } - private Comparator byHistoryId = - Comparator.comparing(TestResult::getHistoryId); + @AllureFeatures.History + @Test + void shouldPersistDifferentHistoryIdComparedToTheSameTestCaseInDifferentLocation() { + final AllureResultsWriterStub writer = new AllureResultsWriterStub(); + runFeature(writer, "features/simple.feature"); + runFeature(writer, "features/same/simple.feature"); + + final List testResults = writer.getTestResults(); + assertThat(testResults.get(0).getHistoryId()) + .isNotEqualTo(testResults.get(1).getHistoryId()); + } @AllureFeatures.Parallel @Test diff --git a/allure-cucumber7-jvm/src/test/resources/features/same/simple.feature b/allure-cucumber7-jvm/src/test/resources/features/same/simple.feature new file mode 100644 index 000000000..c5b5f2b5f --- /dev/null +++ b/allure-cucumber7-jvm/src/test/resources/features/same/simple.feature @@ -0,0 +1,7 @@ +Feature: Simple feature + + Scenario: Add a to b + Given a is 5 + And b is 10 + When I add a to b + Then result is 15 From eb609f2308eb994eacfb0af7ebecd7f891630c30 Mon Sep 17 00:00:00 2001 From: Sergei Portnov <3230150+prtnv@users.noreply.github.com> Date: Wed, 13 Apr 2022 21:37:20 +0300 Subject: [PATCH 2/2] Test case uri determination refactoring --- .../allure/cucumber5jvm/AllureCucumber5Jvm.java | 13 +++++-------- .../allure/cucumber5jvm/AllureCucumber5JvmTest.java | 4 ++-- .../allure/cucumber6jvm/AllureCucumber6Jvm.java | 13 +++++-------- .../allure/cucumber6jvm/AllureCucumber6JvmTest.java | 4 ++-- .../allure/cucumber7jvm/AllureCucumber7Jvm.java | 13 +++++-------- .../allure/cucumber7jvm/AllureCucumber7JvmTest.java | 4 ++-- 6 files changed, 21 insertions(+), 30 deletions(-) diff --git a/allure-cucumber5-jvm/src/main/java/io/qameta/allure/cucumber5jvm/AllureCucumber5Jvm.java b/allure-cucumber5-jvm/src/main/java/io/qameta/allure/cucumber5jvm/AllureCucumber5Jvm.java index 5dbcaabc6..cd0c8aca5 100644 --- a/allure-cucumber5-jvm/src/main/java/io/qameta/allure/cucumber5jvm/AllureCucumber5Jvm.java +++ b/allure-cucumber5-jvm/src/main/java/io/qameta/allure/cucumber5jvm/AllureCucumber5Jvm.java @@ -49,9 +49,9 @@ import io.qameta.allure.model.TestResultContainer; import java.io.ByteArrayInputStream; -import java.io.File; import java.net.URI; import java.nio.charset.StandardCharsets; +import java.nio.file.Paths; import java.util.Collections; import java.util.Deque; import java.util.LinkedList; @@ -101,9 +101,7 @@ public class AllureCucumber5Jvm implements ConcurrentEventListener { private static final String TXT_EXTENSION = ".txt"; private static final String TEXT_PLAIN = "text/plain"; - private static final char CUCUMBER_RESOURCE_SEPARATOR_CHAR = '/'; - private static final String CUCUMBER_WORKING_DIR = System.getProperty("user.dir") - .replace(File.separatorChar, CUCUMBER_RESOURCE_SEPARATOR_CHAR); + private static final String CUCUMBER_WORKING_DIR = Paths.get("").toUri().toString(); @SuppressWarnings("unused") public AllureCucumber5Jvm() { @@ -286,11 +284,10 @@ private String getHistoryId(final TestCase testCase) { private String getTestCaseUri(final TestCase testCase) { final String testCaseUri = testCase.getUri().toString(); - final int workingDirIdx = testCaseUri.indexOf(CUCUMBER_WORKING_DIR); - if (workingDirIdx == -1) { - return testCaseUri; + if (testCaseUri.startsWith(CUCUMBER_WORKING_DIR)) { + return testCaseUri.substring(CUCUMBER_WORKING_DIR.length()); } - return testCaseUri.substring(workingDirIdx + CUCUMBER_WORKING_DIR.length()); + return testCaseUri; } private Status translateTestCaseStatus(final Result testCaseResult) { diff --git a/allure-cucumber5-jvm/src/test/java/io/qameta/allure/cucumber5jvm/AllureCucumber5JvmTest.java b/allure-cucumber5-jvm/src/test/java/io/qameta/allure/cucumber5jvm/AllureCucumber5JvmTest.java index 71d8ad1d2..023c52017 100644 --- a/allure-cucumber5-jvm/src/test/java/io/qameta/allure/cucumber5jvm/AllureCucumber5JvmTest.java +++ b/allure-cucumber5-jvm/src/test/java/io/qameta/allure/cucumber5jvm/AllureCucumber5JvmTest.java @@ -565,7 +565,7 @@ void shouldPersistHistoryIdForScenarios() { final List testResults = writer.getTestResults(); assertThat(testResults.get(0).getHistoryId()) - .isEqualTo("e59f09165cc2d4f1796d1e865ff94524"); + .isEqualTo("892e5eabe51184301cf1358453c9f052"); } @AllureFeatures.History @@ -577,7 +577,7 @@ void shouldPersistHistoryIdForExamples() { final List testResults = writer.getTestResults(); assertThat(testResults) .extracting(TestResult::getHistoryId) - .containsExactlyInAnyOrder("82e19168ec45a9227a3bbae011de89ae", "aa5784f517f982ae9af20b50dad54e33"); + .containsExactlyInAnyOrder("c0f824814a130048e9f86358363cf23e", "646aca5d0775cd4f13161e1ea1a68c39"); } @AllureFeatures.History diff --git a/allure-cucumber6-jvm/src/main/java/io/qameta/allure/cucumber6jvm/AllureCucumber6Jvm.java b/allure-cucumber6-jvm/src/main/java/io/qameta/allure/cucumber6jvm/AllureCucumber6Jvm.java index 683086508..ed3bc9e66 100644 --- a/allure-cucumber6-jvm/src/main/java/io/qameta/allure/cucumber6jvm/AllureCucumber6Jvm.java +++ b/allure-cucumber6-jvm/src/main/java/io/qameta/allure/cucumber6jvm/AllureCucumber6Jvm.java @@ -48,9 +48,9 @@ import io.qameta.allure.model.TestResultContainer; import java.io.ByteArrayInputStream; -import java.io.File; import java.net.URI; import java.nio.charset.StandardCharsets; +import java.nio.file.Paths; import java.util.Collections; import java.util.Deque; import java.util.LinkedList; @@ -100,9 +100,7 @@ public class AllureCucumber6Jvm implements ConcurrentEventListener { private static final String TXT_EXTENSION = ".txt"; private static final String TEXT_PLAIN = "text/plain"; - private static final char CUCUMBER_RESOURCE_SEPARATOR_CHAR = '/'; - private static final String CUCUMBER_WORKING_DIR = System.getProperty("user.dir") - .replace(File.separatorChar, CUCUMBER_RESOURCE_SEPARATOR_CHAR); + private static final String CUCUMBER_WORKING_DIR = Paths.get("").toUri().toString(); @SuppressWarnings("unused") public AllureCucumber6Jvm() { @@ -289,11 +287,10 @@ private String getHistoryId(final TestCase testCase) { private String getTestCaseUri(final TestCase testCase) { final String testCaseUri = testCase.getUri().toString(); - final int workingDirIdx = testCaseUri.indexOf(CUCUMBER_WORKING_DIR); - if (workingDirIdx == -1) { - return testCaseUri; + if (testCaseUri.startsWith(CUCUMBER_WORKING_DIR)) { + return testCaseUri.substring(CUCUMBER_WORKING_DIR.length()); } - return testCaseUri.substring(workingDirIdx + CUCUMBER_WORKING_DIR.length()); + return testCaseUri; } private Status translateTestCaseStatus(final Result testCaseResult) { diff --git a/allure-cucumber6-jvm/src/test/java/io/qameta/allure/cucumber6jvm/AllureCucumber6JvmTest.java b/allure-cucumber6-jvm/src/test/java/io/qameta/allure/cucumber6jvm/AllureCucumber6JvmTest.java index dd0102f4a..68c61e24f 100644 --- a/allure-cucumber6-jvm/src/test/java/io/qameta/allure/cucumber6jvm/AllureCucumber6JvmTest.java +++ b/allure-cucumber6-jvm/src/test/java/io/qameta/allure/cucumber6jvm/AllureCucumber6JvmTest.java @@ -565,7 +565,7 @@ void shouldPersistHistoryIdForScenarios() { final List testResults = writer.getTestResults(); assertThat(testResults.get(0).getHistoryId()) - .isEqualTo("e59f09165cc2d4f1796d1e865ff94524"); + .isEqualTo("892e5eabe51184301cf1358453c9f052"); } @AllureFeatures.History @@ -577,7 +577,7 @@ void shouldPersistHistoryIdForExamples() { final List testResults = writer.getTestResults(); assertThat(testResults) .extracting(TestResult::getHistoryId) - .containsExactlyInAnyOrder("82e19168ec45a9227a3bbae011de89ae", "aa5784f517f982ae9af20b50dad54e33"); + .containsExactlyInAnyOrder("c0f824814a130048e9f86358363cf23e", "646aca5d0775cd4f13161e1ea1a68c39"); } @AllureFeatures.History diff --git a/allure-cucumber7-jvm/src/main/java/io/qameta/allure/cucumber7jvm/AllureCucumber7Jvm.java b/allure-cucumber7-jvm/src/main/java/io/qameta/allure/cucumber7jvm/AllureCucumber7Jvm.java index 04ad7b7e2..acb431134 100644 --- a/allure-cucumber7-jvm/src/main/java/io/qameta/allure/cucumber7jvm/AllureCucumber7Jvm.java +++ b/allure-cucumber7-jvm/src/main/java/io/qameta/allure/cucumber7jvm/AllureCucumber7Jvm.java @@ -48,9 +48,9 @@ import io.qameta.allure.model.TestResultContainer; import java.io.ByteArrayInputStream; -import java.io.File; import java.net.URI; import java.nio.charset.StandardCharsets; +import java.nio.file.Paths; import java.util.Collections; import java.util.Deque; import java.util.LinkedList; @@ -100,9 +100,7 @@ public class AllureCucumber7Jvm implements ConcurrentEventListener { private static final String TXT_EXTENSION = ".txt"; private static final String TEXT_PLAIN = "text/plain"; - private static final char CUCUMBER_RESOURCE_SEPARATOR_CHAR = '/'; - private static final String CUCUMBER_WORKING_DIR = System.getProperty("user.dir") - .replace(File.separatorChar, CUCUMBER_RESOURCE_SEPARATOR_CHAR); + private static final String CUCUMBER_WORKING_DIR = Paths.get("").toUri().toString(); @SuppressWarnings("unused") public AllureCucumber7Jvm() { @@ -289,11 +287,10 @@ private String getHistoryId(final TestCase testCase) { private String getTestCaseUri(final TestCase testCase) { final String testCaseUri = testCase.getUri().toString(); - final int workingDirIdx = testCaseUri.indexOf(CUCUMBER_WORKING_DIR); - if (workingDirIdx == -1) { - return testCaseUri; + if (testCaseUri.startsWith(CUCUMBER_WORKING_DIR)) { + return testCaseUri.substring(CUCUMBER_WORKING_DIR.length()); } - return testCaseUri.substring(workingDirIdx + CUCUMBER_WORKING_DIR.length()); + return testCaseUri; } private Status translateTestCaseStatus(final Result testCaseResult) { diff --git a/allure-cucumber7-jvm/src/test/java/io/qameta/allure/cucumber7jvm/AllureCucumber7JvmTest.java b/allure-cucumber7-jvm/src/test/java/io/qameta/allure/cucumber7jvm/AllureCucumber7JvmTest.java index 3926dfa5a..34a42887a 100644 --- a/allure-cucumber7-jvm/src/test/java/io/qameta/allure/cucumber7jvm/AllureCucumber7JvmTest.java +++ b/allure-cucumber7-jvm/src/test/java/io/qameta/allure/cucumber7jvm/AllureCucumber7JvmTest.java @@ -565,7 +565,7 @@ void shouldPersistHistoryIdForScenarios() { final List testResults = writer.getTestResults(); assertThat(testResults.get(0).getHistoryId()) - .isEqualTo("e59f09165cc2d4f1796d1e865ff94524"); + .isEqualTo("892e5eabe51184301cf1358453c9f052"); } @AllureFeatures.History @@ -577,7 +577,7 @@ void shouldPersistHistoryIdForExamples() { final List testResults = writer.getTestResults(); assertThat(testResults) .extracting(TestResult::getHistoryId) - .containsExactlyInAnyOrder("82e19168ec45a9227a3bbae011de89ae", "aa5784f517f982ae9af20b50dad54e33"); + .containsExactlyInAnyOrder("c0f824814a130048e9f86358363cf23e", "646aca5d0775cd4f13161e1ea1a68c39"); } @AllureFeatures.History