diff --git a/.gitignore b/.gitignore index 26b07ea78..503145077 100644 --- a/.gitignore +++ b/.gitignore @@ -23,7 +23,6 @@ npm-debug.log #Other .repo -cucumber-html-reports #Mac OS stuff .DS_Store diff --git a/plugins/cucumber-json-plugin/build.gradle b/plugins/cucumber-json-plugin/build.gradle deleted file mode 100644 index 23e21fa03..000000000 --- a/plugins/cucumber-json-plugin/build.gradle +++ /dev/null @@ -1,25 +0,0 @@ -description = 'Allure Cucumber json plugin' - -apply plugin: 'java-library-distribution' -// -//jar { -// archiveName = 'plugin.jar' -//} - -dependencies { - compileOnly project(':allure-plugin-api') - compile('net.masterthought:cucumber-reporting') - - testCompile project(':allure-plugin-api') - testCompile('junit:junit') - testCompile('org.assertj:assertj-core') - testCompile('org.slf4j:slf4j-simple') -} - -//artifacts { -// allurePlugin distZip -//} -// -//bintray { -// configurations = ['allurePlugin'] -//} diff --git a/plugins/cucumber-json-plugin/src/dist/plugin-descriptor.xml b/plugins/cucumber-json-plugin/src/dist/plugin-descriptor.xml deleted file mode 100644 index 47b3decf6..000000000 --- a/plugins/cucumber-json-plugin/src/dist/plugin-descriptor.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - cucumber-json-pluginDescriptor - io.qameta.allure.cucumberjson.CucumberJsonPlugin - \ No newline at end of file diff --git a/plugins/cucumber-json-plugin/src/main/java/io.qameta.allure.cucumberjson/CucumberJsonPlugin.java b/plugins/cucumber-json-plugin/src/main/java/io.qameta.allure.cucumberjson/CucumberJsonPlugin.java deleted file mode 100644 index b35ebb8aa..000000000 --- a/plugins/cucumber-json-plugin/src/main/java/io.qameta.allure.cucumberjson/CucumberJsonPlugin.java +++ /dev/null @@ -1,32 +0,0 @@ -/* - * Copyright 2019 Qameta Software OÜ - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package io.qameta.allure.cucumberjson; - -import com.google.inject.multibindings.Multibinder; -import io.qameta.allure.AbstractPlugin; -import io.qameta.allure.ResultsProcessor; - -/** - * @author Egor Borisov ehborisov@gmail.com - */ -public class CucumberJsonPlugin extends AbstractPlugin { - - @Override - protected void configure() { - Multibinder.newSetBinder(binder(), ResultsProcessor.class) - .addBinding().to(CucumberJsonResultsReader.class); - } -} diff --git a/plugins/cucumber-json-plugin/src/main/java/io.qameta.allure.cucumberjson/CucumberJsonResultsReader.java b/plugins/cucumber-json-plugin/src/main/java/io.qameta.allure.cucumberjson/CucumberJsonResultsReader.java deleted file mode 100644 index a5386e0d1..000000000 --- a/plugins/cucumber-json-plugin/src/main/java/io.qameta.allure.cucumberjson/CucumberJsonResultsReader.java +++ /dev/null @@ -1,229 +0,0 @@ -/* - * Copyright 2019 Qameta Software OÜ - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package io.qameta.allure.cucumberjson; - -import com.google.inject.Inject; -import io.qameta.allure.AttachmentsStorage; -import io.qameta.allure.ResultsProcessor; -import io.qameta.allure.entity.Attachment; -import io.qameta.allure.entity.LabelName; -import io.qameta.allure.entity.StageResult; -import io.qameta.allure.entity.Status; -import io.qameta.allure.entity.StatusDetails; -import io.qameta.allure.entity.TestCaseResult; -import io.qameta.allure.entity.Time; -import net.masterthought.cucumber.Configuration; -import net.masterthought.cucumber.ReportParser; -import net.masterthought.cucumber.json.Element; -import net.masterthought.cucumber.json.Embedding; -import net.masterthought.cucumber.json.Feature; -import net.masterthought.cucumber.json.Hook; -import net.masterthought.cucumber.json.Result; -import net.masterthought.cucumber.json.Step; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.io.File; -import java.nio.file.Path; -import java.util.Collections; -import java.util.List; -import java.util.Objects; -import java.util.Optional; -import java.util.stream.Collectors; -import java.util.stream.Stream; - -import static io.qameta.allure.ReportApiUtils.generateUid; -import static io.qameta.allure.ReportApiUtils.listFiles; -import static net.masterthought.cucumber.json.support.Status.FAILED; -import static net.masterthought.cucumber.json.support.Status.PENDING; -import static net.masterthought.cucumber.json.support.Status.SKIPPED; - -/** - * @author Egor Borisov ehborisov@gmail.com - */ -@SuppressWarnings("PMD.ExcessiveImports") -public class CucumberJsonResultsReader implements ResultsProcessor { - - private static final Logger LOGGER = LoggerFactory.getLogger(CucumberJsonResultsReader.class); - - private final AttachmentsStorage storage; - - @Inject - public CucumberJsonResultsReader(final AttachmentsStorage storage) { - this.storage = storage; - } - - @Override - public List readResults(final Path source) { - List cucumberJsonFiles = listFiles(source, "cucumber*.json") - .map(Path::toString) - .collect(Collectors.toList()); - if (cucumberJsonFiles.isEmpty()) { - return Collections.emptyList(); - } - Configuration configuration = new Configuration(source.toFile(), "Unknown project"); - File embeddings = configuration.getEmbeddingDirectory(); - if (!embeddings.exists() && !embeddings.mkdirs()) { - LOGGER.warn("Could not create embeddings directory"); - } - ReportParser parser = new ReportParser(configuration); - List features = parse(parser, cucumberJsonFiles); - listFiles(embeddings.toPath(), "embedding*") - .forEach(storage::addAttachment); - return features.stream() - .flatMap(feature -> Stream.of(feature.getElements()).map(this::convert)) - .collect(Collectors.toList()); - } - - private TestCaseResult convert(final Element element) { - TestCaseResult result = new TestCaseResult(); - String testName = Optional.ofNullable(element.getName()).orElse("Unnamed scenario"); - String featureName = Optional.ofNullable(element.getFeature().getName()).orElse("Unnamed feature"); - result.setTestCaseId(String.format("%s#%s", featureName, testName)); - result.setUid(generateUid()); - result.setName(firstNonNull(element.getName(), element.getKeyword(), element.getDescription(), "Unknown")); - result.setTime(getTime(element)); - result.setStatus(getStatus(element)); - result.setStatusDetails(getStatusDetails(element)); - result.addLabelIfNotExists(LabelName.FEATURE, element.getFeature().getName()); - result.setDescription(element.getDescription()); - - if (Objects.nonNull(element.getSteps()) && element.getSteps().length > 0) { - result.setTestStage(getTestStage(element)); - } - - if (Objects.nonNull(element.getBefore())) { - result.setBeforeStages(convertHooks(element.getBefore())); - } - - if (Objects.nonNull(element.getAfter())) { - result.setAfterStages(convertHooks(element.getAfter())); - } - return result; - } - - private long getTime(final Element source) { - return Stream.of(source.getSteps()) - .map(Step::getDuration) - .reduce((t1, t2) -> t1 + t2).orElse(0L); - } - - private Status getStatus(final Element source) { - if (source.getStatus().isPassed()) { - return Status.PASSED; - } - if (Objects.nonNull(source.getSteps())) { - return Stream.of(source.getSteps()) - .map(this::getStepStatus) - .min(Enum::compareTo) - .orElse(Status.UNKNOWN); - } - return getStatus(source.getStatus()); - } - - @SuppressWarnings("PMD.UnnecessaryFullyQualifiedName") - private Status getStatus(final net.masterthought.cucumber.json.support.Status status) { - if (status.isPassed()) { - return Status.PASSED; - } - if (status == FAILED) { - return Status.FAILED; - } - if (status == PENDING) { - return Status.SKIPPED; - } - if (status == SKIPPED) { - return Status.SKIPPED; - } - return Status.UNKNOWN; - } - - private StatusDetails getStatusDetails(final Element source) { - return Stream.of(source.getSteps()) - .map(Step::getResult) - .map(this::getStatusDetails) - .filter(Objects::nonNull) - .findFirst().orElse(null); - } - - private StatusDetails getStatusDetails(final Result result) { - return Optional.ofNullable(result.getErrorMessage()) - .map(msg -> new StatusDetails().withMessage(msg)) - .orElse(null); - } - - private StageResult getTestStage(final Element source) { - return new StageResult().withSteps( - Stream.of(source.getSteps()) - .map(step -> new io.qameta.allure.entity.Step() - .withName(step.getName()) - .withStatus(getStepStatus(step)) - .withTime(new Time().withDuration(step.getResult().getDuration())) - .withAttachments( - Stream.of(step.getEmbeddings()) - .map(this::convertAttachment) - .collect(Collectors.toList()) - ) - .withStatusDetails(getStatusDetails(step.getResult())) - ) - .collect(Collectors.toList())) - .withStatusDetails(getStatusDetails(source)); - } - - private List convertHooks(final Hook... hooks) { - return Stream.of(hooks) - .map(hook -> new StageResult() - .withAttachments( - Stream.of(hook.getEmbeddings()) - .map(this::convertAttachment) - .collect(Collectors.toList())) - .withStatusDetails(getStatusDetails(hook.getResult())) - .withTime(new Time().withDuration(hook.getResult().getDuration())) - ).collect(Collectors.toList()); - } - - private Attachment convertAttachment(final Embedding embedding) { - Attachment found = storage.findAttachmentByFileName(embedding.getFileName()) - .orElseGet(() -> new Attachment().withName("unknown").withSize(0L).withType("*/*")); - if (Objects.nonNull(embedding.getMimeType())) { - found.setType(embedding.getMimeType()); - } - return found; - } - - private Status getStepStatus(final Step step) { - return getStatus(step.getResult().getStatus()); - } - - @SafeVarargs - private final T firstNonNull(final T... items) { - return Stream.of(items) - .filter(Objects::nonNull) - .findFirst() - .orElseThrow(() -> new IllegalStateException("At least one item should be non-null")); - } - - private List parse(final ReportParser parser, final List cucumberJsonFiles) { - try { - return cucumberJsonFiles.isEmpty() - ? Collections.emptyList() - : parser.parseJsonFiles(cucumberJsonFiles); - } catch (Exception e) { - LOGGER.error("Could not parse results {}", e); - return Collections.emptyList(); - } - } -} diff --git a/plugins/cucumber-json-plugin/src/main/resources/log4j2.properties b/plugins/cucumber-json-plugin/src/main/resources/log4j2.properties deleted file mode 100644 index e69de29bb..000000000 diff --git a/plugins/cucumber-json-plugin/src/test/java/io/qameta/allure/cucumberjson/test/CucumberJsonReportTest.java b/plugins/cucumber-json-plugin/src/test/java/io/qameta/allure/cucumberjson/test/CucumberJsonReportTest.java deleted file mode 100644 index bbdc452fa..000000000 --- a/plugins/cucumber-json-plugin/src/test/java/io/qameta/allure/cucumberjson/test/CucumberJsonReportTest.java +++ /dev/null @@ -1,128 +0,0 @@ -/* - * Copyright 2019 Qameta Software OÜ - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package io.qameta.allure.cucumberjson.test; - -import io.qameta.allure.AttachmentsStorage; -import io.qameta.allure.core.DefaultAttachmentsStorage; -import io.qameta.allure.cucumberjson.CucumberJsonResultsReader; -import io.qameta.allure.entity.Attachment; -import io.qameta.allure.entity.StageResult; -import io.qameta.allure.entity.Step; -import io.qameta.allure.entity.TestCaseResult; -import org.junit.Before; -import org.junit.Rule; -import org.junit.Test; -import org.junit.rules.TemporaryFolder; - -import java.io.IOException; -import java.io.InputStream; -import java.nio.file.Files; -import java.nio.file.Path; -import java.util.Arrays; -import java.util.Iterator; -import java.util.List; - -import static io.qameta.allure.entity.Status.FAILED; -import static io.qameta.allure.entity.Status.PASSED; -import static io.qameta.allure.entity.Status.SKIPPED; -import static io.qameta.allure.entity.Status.UNKNOWN; -import static org.assertj.core.api.Assertions.assertThat; - -/** - * @author Egor Borisov ehborisov@gmail.com - */ -public class CucumberJsonReportTest { - - @Rule - public TemporaryFolder folder = new TemporaryFolder(); - - private AttachmentsStorage storage; - - @Before - public void setUp() throws Exception { - storage = new DefaultAttachmentsStorage(); - } - - @Test - public void readSingleJsonFile() throws Exception { - List testCases = process("simple.json", "cucumber-simple.json"); - assertThat(testCases) - .isNotNull() - .hasSize(5) - .extracting(TestCaseResult::getStatus) - .contains(FAILED, PASSED, SKIPPED, UNKNOWN); - } - - @Test - public void readEmptyJsonFile() throws Exception { - List results = process("empty.json", "cucumber-empty.json"); - - assertThat(results) - .isEmpty(); - } - - @Test - public void readInvalidJsonFile() throws Exception { - List results = process("invalid.json", "cucumber-invalid.json"); - - assertThat(results) - .isEmpty(); - } - - @Test - public void readJsonWithAttachment() throws Exception { - List results = process("complex.json", "cucumber-complex.json"); - assertThat(results) - .isNotNull() - .hasSize(4) - .extracting(TestCaseResult::getTestStage) - .flatExtracting(StageResult::getSteps) - .hasSize(21) - .flatExtracting(Step::getAttachments) - .hasSize(8) - .extracting(Attachment::getName) - .contains("embedding_-115657502.image", "embedding_61853345.png"); - } - - @Test - public void readSeveralJsonFiles() throws Exception { - List testCases = process( - "simple.json", "cucumber-simple.json", - "complex.json", "cucumber-complex.json" - ); - - assertThat(testCases) - .hasSize(9); - } - - private List process(String... strings) throws IOException { - Path resultsDirectory = folder.newFolder().toPath(); - Iterator iterator = Arrays.asList(strings).iterator(); - while (iterator.hasNext()) { - String first = iterator.next(); - String second = iterator.next(); - copyFile(resultsDirectory, first, second); - } - CucumberJsonResultsReader reader = new CucumberJsonResultsReader(storage); - return reader.readResults(resultsDirectory); - } - - private void copyFile(Path dir, String resourceName, String fileName) throws IOException { - try (InputStream is = getClass().getClassLoader().getResourceAsStream(resourceName)) { - Files.copy(is, dir.resolve(fileName)); - } - } -} diff --git a/plugins/cucumber-json-plugin/src/test/resources/complex.json b/plugins/cucumber-json-plugin/src/test/resources/complex.json deleted file mode 100644 index 908a30acf..000000000 --- a/plugins/cucumber-json-plugin/src/test/resources/complex.json +++ /dev/null @@ -1,560 +0,0 @@ -[ - { - "id": "account-holder-withdraws-cash", - "tags": [ - { - "name": "@featureTag", - "line": 1 - } - ], - "description": "This is description of the feature", - "name": "1st feature", - "keyword": "Feature", - "line": 2, - "elements": [ - { - "description": "Perfect background", - "name": "Activate Credit Card", - "keyword": "Background", - "line": 7, - "steps": [ - { - "result": { - "duration": 99107447000, - "status": "passed" - }, - "name": "I have a new credit card", - "keyword": "Given ", - "line": 8, - "match": { - "location": "ATMScenario.I_have_a_new_credit_card()" - }, - "embeddings": [ - { - "mime_type": "image/url", - "data": "aHR0cDovL2xvY2FsaG9zdC9zdGF0aWMvbG9nby5wbmc=" - } - ] - }, - { - "result": { - "duration": 9520000, - "status": "passed" - }, - "name": "My credit card is described as follow:", - "keyword": "And ", - "line": 9, - "match": { - "location": "ATMScenario.My_credit_card_is_described_as_follow" - }, - "doc_string": { - "content_type": "", - "line": 10, - "value": "{\n\"issuer\": {\n\"name\": \"Real Bank Inc.\",\n\"isn:\": \"RB55800093842N\"\n},\n\"card_number\": \"4896 0215 8478 6325\",\n\"holder\": \"A guy\"\n}" - } - }, - { - "result": { - "duration": 7040000, - "status": "passed" - }, - "name": "I confirm my pin number", - "keyword": "When ", - "line": 18, - "match": { - "location": "ATMScenario.I_confirm_my_pin_number()" - }, - "rows": [ - { - "cells": [ - "Müller", - "Deutschland" - ], - "line": 2 - }, - { - "cells": [ - "Nováková", - "Česko" - ], - "line": 3 - }, - { - "cells": [ - "Kovačević", - "Hrvatska" - ], - "line": 4 - }, - { - "cells": [ - "Παπαδόπουλος", - "Παπαδόπουλος" - ], - "line": 5 - }, - { - "cells": [ - "罗/羅", - "中國" - ], - "line": 6 - } - ] - }, - { - "result": { - "duration": 111111, - "status": "passed" - }, - "name": "the card should be activated", - "keyword": "Then ", - "line": 19, - "match": { - "location": "ATMScenario.the_card_should_be_activated()" - } - } - ], - "type": "background" - }, - { - "id": "account-holder-withdraws-cash;account-has-\u0027sufficient-funds\u0027;;2", - "tags": [ - { - "name": "@fast", - "line": 21 - }, - { - "name": "@featureTag", - "line": 1 - }, - { - "name": "@checkout", - "line": 21 - } - ], - "description": "Account holder withdraws cash", - "name": "Account has ", - "keyword": "Scenario Outline", - "line": 33, - "steps": [ - { - "result": { - "duration": 17007000, - "status": "passed" - }, - "name": "the account balance is 100", - "keyword": "Given ", - "line": 23, - "match": { - "arguments": [ - { - "val": "100", - "offset": 23 - } - ], - "location": "ATMScenario.createAccount(int)" - } - }, - { - "result": { - "duration": 33444444, - "status": "passed" - }, - "name": "the card is valid", - "keyword": "And ", - "line": 24, - "match": { - "location": "ATMScenario.createCreditCard()" - } - }, - { - "result": { - "duration": 44333333, - "status": "passed" - }, - "name": "the machine contains 100", - "keyword": "And ", - "line": 25, - "match": { - "arguments": [ - { - "val": "100", - "offset": 21 - } - ], - "location": "ATMScenario.createATM(int)" - }, - "matchedColumns": [ - 1 - ] - }, - { - "result": { - "duration": 11000001, - "status": "passed" - }, - "name": "the Account Holder requests 10", - "keyword": "When ", - "line": 26, - "match": { - "arguments": [ - { - "val": "10", - "offset": 28 - } - ], - "location": "ATMScenario.requestMoney(int)" - }, - "matchedColumns": [ - 2 - ] - }, - { - "result": { - "duration": 3220000, - "status": "passed" - }, - "name": "the ATM should dispense 10", - "keyword": "Then ", - "line": 27, - "match": { - "arguments": [ - { - "val": "10", - "offset": 24 - } - ], - "location": "ATMScenario.checkMoney(int)" - }, - "matchedColumns": [ - 3 - ] - }, - { - "result": { - "duration": 30000000, - "status": "passed" - }, - "name": "the account balance should be 90", - "keyword": "And ", - "line": 28, - "match": { - "arguments": [ - { - "val": "90", - "offset": 30 - } - ], - "location": "ATMScenario.checkBalance(int)" - }, - "matchedColumns": [ - 4 - ] - } - ], - "type": "scenario", - "after": [ - { - "result": { - "duration": 60744700, - "status": "passed", - "error_message": "Completed" - }, - "match": { - "location": "MachineFactory.timeout()" - } - } - ] - } - ], - "uri": "net/masterthought/example(s)/ATM:local.feature" - }, - { - "id": "account-holder-withdraws-more-cash", - "description": "As an Account Holder\nI want to withdraw cash from an ATM,
so that I can get money when the bank is closed", - "name": "Second feature", - "keyword": "Feature", - "line": 1, - "elements": [ - { - "id": "account-holder-withdraws-more-cash;account-has-sufficient-funds;;2", - "tags": [ - { - "name": "@checkout", - "line": 101 - } - ], - "before": [ - { - "result": { - "duration": 10744700, - "status": "passed" - }, - "match": { - "location": "MachineFactory.findCachMachine()" - } - }, - { - "result": { - "duration": 1000001, - "status": "failed" - }, - "match": { - "location": "MachineFactory.wait()" - } - } - ], - "description": "Account holder withdraws more cash", - "name": "Account may not have sufficient funds", - "keyword": "Scenario Outline", - "line": 19, - "steps": [ - { - "result": { - "status": "undefined" - }, - "name": "the account balance is 100", - "keyword": "Given ", - "line": 7, - "match": { - "arguments": [ - { - "val": "100", - "offset": 23 - } - ] - }, - "matchedColumns": [ - 0 - ] - }, - { - "result": { - "duration": 13000, - "status": "passed" - }, - "name": "the card is valid", - "keyword": "And ", - "line": 8, - "match": { - "location": "ATMScenario.createCreditCard()" - } - }, - { - "result": { - "duration": 36000, - "status": "passed" - }, - "name": "the machine contains 100", - "keyword": "And ", - "line": 9, - "match": { - "arguments": [ - { - "val": "100", - "offset": 21 - } - ], - "location": "ATMScenario.createATM(int)" - }, - "matchedColumns": [ - 1 - ] - }, - { - "result": { - "duration": 32000, - "status": "passed" - }, - "name": "the Account Holder requests 20", - "keyword": "When ", - "line": 10, - "match": { - "arguments": [ - { - "val": "20", - "offset": 28 - } - ], - "location": "ATMScenario.requestMoney(int)" - }, - "matchedColumns": [ - 2 - ] - }, - { - "result": { - "duration": 36000, - "status": "passed" - }, - "name": "the ATM should dispense 20", - "keyword": "Then ", - "line": 11, - "match": { - "arguments": [ - { - "val": "20", - "offset": 24 - } - ], - "location": "ATMScenario.checkMoney(int)" - }, - "matchedColumns": [ - 3 - ] - }, - { - "result": { - "duration": 1933000, - "status": "skipped", - "error_message": "java.lang.AssertionError: \nExpected: is \u003c80\u003e\n got: \u003c90\u003e\n\n\tat org.junit.Assert.assertThat(Assert.java:780)\n\tat org.junit.Assert.assertThat(Assert.java:738)\n\tat net.masterthought.example.ATMScenario.checkBalance(ATMScenario.java:69)\n\tat ✽.And the account balance should be 90(net/masterthought/example/ATMK.feature:12)\n" - }, - "name": "the account balance should be 90", - "keyword": "And ", - "line": 12, - "match": { - "arguments": [ - { - "val": "90", - "offset": 30 - } - ], - "location": "ATMScenario.checkBalance(int)" - }, - "matchedColumns": [ - 4 - ], - "embeddings": [ - { - "mime_type": "image/png", - "data": "iVBORw0KGgoAAAANSUhEUgAAACwAAAE+CAIAAAB5j2VyAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAEVSURBVHhe7c6hAYAwEMDAhzkqu/9m7ICAzFBzZ2JzPWvPafffo0zEREzEREzEREzEREzEREzEREzEREzEREzEREzEREzEREzEREzEREzEREzEREzEREzEREzEREzEREzEREzEREzEREzEREzEREzEREzEREzEREzEREzEREzEREzEREzEREzEREzEREzEREzEREzEREzEREzEREzEREzEREzEREzEREzEREzEREzEREzEREzEREzEREzEREzEREzEREzEREzEREzEREzEREzEREzEREzEREzEREzEREzEREzEREzEREzEREzEREzEREzEREzEREzEREzEREzEREzEREzEREzEREzEREzEREzEREzExGfmBTSnA6klpvCvAAAAAElFTkSuQmCC" - }, - { - "mime_type": "image/jpeg", - "data": "/9j/4AAQSkZJRgABAQEAYABgAAD/4QBaRXhpZgAATU0AKgAAAAgABQMBAAUAAAABAAAASgMDAAEAAAABAAAAAFEQAAEAAAABAQAAAFERAAQAAAABAAAOw1ESAAQAAAABAAAOwwAAAAAAAYagAACxj//bAEMAAgEBAgEBAgICAgICAgIDBQMDAwMDBgQEAwUHBgcHBwYHBwgJCwkICAoIBwcKDQoKCwwMDAwHCQ4PDQwOCwwMDP/bAEMBAgICAwMDBgMDBgwIBwgMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDP/AABEIADUBngMBIgACEQEDEQH/xAAfAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgv/xAC1EAACAQMDAgQDBQUEBAAAAX0BAgMABBEFEiExQQYTUWEHInEUMoGRoQgjQrHBFVLR8CQzYnKCCQoWFxgZGiUmJygpKjQ1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4eLj5OXm5+jp6vHy8/T19vf4+fr/xAAfAQADAQEBAQEBAQEBAAAAAAAAAQIDBAUGBwgJCgv/xAC1EQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4+Tl5ufo6ery8/T19vf4+fr/2gAMAwEAAhEDEQA/AMeiiiv74P8AKMKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAP/9k=" - }, - { - "mime_type": "text/plain", - "data": "amF2YS5sYW5nLlRocm93YWJsZQ==" - }, - { - "mime_type": "text/html", - "data": "PGk+SGVsbG88L2k+IDxiPldvcmxkITwvYj4=" - }, - { - "mime_type": "text/xml", - "data": "PD94bWwgdmVyc2lvbj0iMS4wIj8+DQo8eG1sPg0KICA8c29tZU5vZGUgYXR0cj0idmFsdWUiIC8+DQo8L3htbD4=" - }, - { - "mime_type": "js", - "data": "ZnVuY3Rpb24gbG9nZ2VyKG1lc3NhZ2UpIHsNCiAgY29uc29sZS5sb2cobWVzc2FnZSk7DQp9" - } - ] - }, - { - "result": { - "status": "pending" - }, - "name": "the card should be returned", - "keyword": "And ", - "line": 13, - "match": { - "location": "ATMScenario.cardShouldBeReturned()" - }, - "embeddings": [ - { - "mime_type": "application/json", - "data": "ew0KICAibW9kZWwiIDogIjEzNGIyIiwNCiAgInByaWNlIiA6IHsNCiAgICAidmFsdWUiIDogMTAwMDAwLA0KICAgICJjdXJyZW5jeSIgOiAiJCINCiAgfSwNCiAgIm5vdGVzIiA6IG51bGwNCn0=" - } - ] - }, - { - "result": { - "status": "skipped" - }, - "name": "its not implemented", - "keyword": "And ", - "line": 14, - "match": { - "location": "ATMScenario.its_not_implemented()" - }, - "output": [ - [ - "Could not connect to the server @Rocky@" - ], - [ - "Could not connect to the server @Mike@" - ] - ] - }, - { - "result": { - "status": "failed" - }, - "name": "the card is valid", - "keyword": "And ", - "line": 15, - "match": { - "location": "ATMScenario.createCreditCard()" - }, - "output": [ - "Checkpoints", - 232 - ] - }, - { - "result": { - "duration": 90000000, - "status": "ambiguous" - }, - "name": "the card should be returned", - "keyword": "And ", - "line": 29, - "match": { - "location": "ATMScenario.cardShouldBeReturned()" - } - } - ], - "type": "scenario", - "after": [ - { - "result": { - "duration": 64700000, - "status": "undefined", - "error_message": "Undefined step" - }, - "match": { - "location": "any.error()" - }, - "embeddings": [ - { - "mime_type": "image/png", - "data": "iVBORw0KGgoAAAANSUhEUgAAAHgAAAB2CAIAAACMDMD1AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAMoSURBVHhe7dZBbttAEETRHCTL3CPbHD5XyRmcRlgRhDI57LHI6qZYH7XzNAW8lb99OEmGFmVoUYYWZWhRhhZlaFGGFmVoUYYWZWhRhhZlaFGGFmVoUYYWZWhRhhb1KvSf7z8GwyNnaFnnQsfw7vadDh3D03tnaFEK6Bhe3zgRdAwHd83Qol6FXiLTreH1LZNCx3Bwv46Bjgh0MBzcrMOgIwLdGl7frALoZbi5TUdCR6S5O5yd1s9fv7eGF6oOho6Icnc4OzQyXR2eqqqHjuHy5YhyPNyoOh46IsfMcPnVCDEzXKo6BToix8xwORnx5Yd7VWdBR+SYHI7TEV9+uFfVDjqG+70Ibnb4iqoToZcIMTkcDyO42eErqk6HXiLH/HC/FsFNDZ8QJoKOSDA/3D9FavnhviIddESC+eH+f8S3O5yVJoWOSDA/3E8q46ZBauiIBJPDcRoar9tUAL1EjpnFFWkOtvxKn8qgI3LcHVFuDV9vViV0RJSDkeZg+HSziqEfESuNKMfDF5vVBToi3MfIcTB8qGWNoCMijhHlePhKy3pBR2+pHDWFJsTMcN+1dtDElxyOG9cLmviSw3HvWkAT3NTwifbVQxPc1PCJK1QMTXBTwycuUiU0wU1t+ecEH7pCZdAEN7VF+VrWNdAEl98z8WP4aO/U0ASXH+HS8PXGSaHJLj9iXR1+o2utoZcrAh1sed8zHTQh7g5nM9Ax3PRLBE2Iu8PZv4hydzhrVkdo3DxFlLvDWacU0OQ4Hm4+RZTj4aZTp0OT43i42Yg0x8NNm7pA4/VepDkebnrUAhpPc5HmYDjo0fWgIwIdDAcNqofGu8kIdGt43aBiaDz6UmS6Ojxt0IWhI2JdHZ5WVwmNFy9EpqvD0+rKoPHnlyPWz8O76i4PHZEsDY+qOx1aEMnS8Ki6d4COCPd5eFGdoUUZWtSbQEfk+xj+XN37QDfP0KIMLcrQogwtytCiDC3K0KIMLcrQogwtytCiDC3K0KIMLcrQogwtytCiDC3K0KIMLcrQogwtytCiDC3K0KIMLcrQogwtytCiDC3K0KIMLcrQogwtytCSPj7+Av1TVHaIlvxNAAAAAElFTkSuQmCC" - } - ] - } - ] - }, - { - "id": "account-holder-withdraws-more-cash;clean-up", - "name": "Clean-up", - "keyword": "Scenario", - "line": 31, - "steps": [ - { - "result": { - "duration": 560000, - "status": "passed" - }, - "name": "Stream closing", - "keyword": "Given ", - "line": 32 - } - ], - "type": "scenario" - } - ], - "uri": "net/masterthought/example/ATMK.feature" - } -] \ No newline at end of file diff --git a/plugins/cucumber-json-plugin/src/test/resources/empty.json b/plugins/cucumber-json-plugin/src/test/resources/empty.json deleted file mode 100644 index 32960f8ce..000000000 --- a/plugins/cucumber-json-plugin/src/test/resources/empty.json +++ /dev/null @@ -1,2 +0,0 @@ -[ -] \ No newline at end of file diff --git a/plugins/cucumber-json-plugin/src/test/resources/invalid.json b/plugins/cucumber-json-plugin/src/test/resources/invalid.json deleted file mode 100644 index cbedf9072..000000000 --- a/plugins/cucumber-json-plugin/src/test/resources/invalid.json +++ /dev/null @@ -1,7 +0,0 @@ -[ - { - "id":"id", - "name":"1st feature", - "keyword":"Feature", - } -] diff --git a/plugins/cucumber-json-plugin/src/test/resources/simple.json b/plugins/cucumber-json-plugin/src/test/resources/simple.json deleted file mode 100644 index 53488e7d7..000000000 --- a/plugins/cucumber-json-plugin/src/test/resources/simple.json +++ /dev/null @@ -1,97 +0,0 @@ -[ - { - "id": "simpleId", - "name": "Simple feature", - "keyword": "Feature", - "elements": [ - { - "keyword": "Scenario", - "steps": [ - { - "result": { - "duration": 123456789, - "status": "passed" - }, - "name": "Simple step name", - "keyword": "Given ", - "match": { - "location": "simple.location()" - } - } - ], - "type": "scenario" - }, - { - "keyword": "Failing scenario", - "steps": [ - { - "result": { - "duration": 15, - "status": "failed", - "error_message": "java.lang.AssertionError: Should parse failed status" - }, - "name": "Another step name", - "keyword": "Given ", - "match": { - "location": "simple.failingLocation()" - } - } - ], - "type": "scenario" - }, - { - "keyword": "Skipped scenario", - "steps": [ - { - "result": { - "status": "skipped" - }, - "name": "Skipped step name", - "keyword": "Given ", - "match": { - "location": "simple.skippedLocation()" - } - } - ], - "type": "scenario" - }, - { - "keyword": "Broken scenario", - "steps": [ - { - "result": { - "duration": 10, - "status": "undefined", - "error_message": "java.lang.IllegalArgumentException: some other exception" - }, - "name": "Broken step name", - "keyword": "Given ", - "match": { - "location": "simple.brokenLocation()" - } - } - ], - "type": "scenario" - }, - { - "keyword": "Pending scenario", - "steps": [ - { - "result": { - "duration": 12, - "status": "pending", - "error_message": "java.lang.IllegalArgumentException: some other exception" - }, - "name": "Broken step name", - "keyword": "Given ", - "match": { - "location": "simple.brokenLocation()" - } - } - ], - "type": "scenario" - } - ], - "uri": "simple:uri" - } -]