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"
- }
-]