diff --git a/.gitignore b/.gitignore index 396cb22..cae3286 100644 --- a/.gitignore +++ b/.gitignore @@ -4,4 +4,5 @@ Gopkg.lock Gopkg.toml -.DS_Store \ No newline at end of file +.DS_Store +.idea \ No newline at end of file diff --git a/features/formatter/pretty.feature b/features/formatter/pretty.feature index cdd538f..8492c2d 100644 --- a/features/formatter/pretty.feature +++ b/features/formatter/pretty.feature @@ -45,6 +45,7 @@ Feature: pretty formatter No steps 0s """ + Scenario: Support of Feature Plus Scenario Outline Given a feature "features/simple.feature" file: """ @@ -111,6 +112,7 @@ Feature: pretty formatter No steps 0s """ + Scenario: Support of Feature Plus Scenario With Steps Given a feature "features/simple.feature" file: """ @@ -146,6 +148,7 @@ Feature: pretty formatter 2 steps (1 passed, 1 failed) 0s """ + Scenario: Support of Feature Plus Scenario Outline With Steps Given a feature "features/simple.feature" file: """ @@ -214,6 +217,7 @@ Feature: pretty formatter No steps 0s """ + Scenario: Support of Docstrings Given a feature "features/simple.feature" file: """ @@ -244,6 +248,7 @@ Feature: pretty formatter 1 steps (1 passed) 0s """ + Scenario: Support of Undefined, Pending and Skipped status Given a feature "features/simple.feature" file: """ @@ -286,3 +291,30 @@ Feature: pretty formatter s.Step(`^undefined$`, undefined) } """ + + # Ensure s will not break when injecting data from BeforeStep + Scenario: Support data injection in BeforeStep + Given a feature "features/inject.feature" file: + """ + Feature: inject long value + + Scenario: test scenario + Given Ignore I save some value X under key Y + When Ignore I use value {{Y}} + Then Ignore Godog rendering should not break + """ + And I allow variable injection + When I run feature suite with formatter "pretty" + Then the rendered output will be as follows: + """ + Feature: inject long value + + Scenario: test scenario # features/inject.feature:3 + Given Ignore I save some value X under key Y # suite_context.go:0 -> SuiteContext.func7 + When Ignore I use value someverylonginjectionsoweacanbesureitsurpasstheinitiallongeststeplenghtanditwillhelptestsmethodsafety # suite_context.go:0 -> SuiteContext.func7 + Then Ignore Godog rendering should not break # suite_context.go:0 -> SuiteContext.func7 + + 1 scenarios (1 passed) + 3 steps (3 passed) + 0s + """ \ No newline at end of file diff --git a/fixtures/cucumber_output.json b/fixtures/cucumber_output.json index 54f419d..3efd57a 100644 --- a/fixtures/cucumber_output.json +++ b/fixtures/cucumber_output.json @@ -1,5640 +1,5712 @@ [ - { - "uri": "features/background.feature", - "id": "run-background", - "keyword": "Feature", - "name": "run background", - "description": " In order to test application behavior\n As a test suite\n I need to be able to run background correctly", - "line": 1, - "elements": [ - { - "id": "run-background;should-run-background-steps", - "keyword": "Scenario", - "name": "should run background steps", - "description": "", - "line": 6, - "type": "scenario", - "steps": [ - { - "keyword": "Given ", - "name": "a feature \"normal.feature\" file:", - "line": 7, - "doc_string": { - "value": "Feature: with background\n\n Background:\n Given a feature path \"features/load.feature:6\"\n\n Scenario: parse a scenario\n When I parse features\n Then I should have 1 scenario registered", - "content_type": "", - "line": 8 - }, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "When ", - "name": "I run feature suite", - "line": 18, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "Then ", - "name": "the suite should have passed", - "line": 19, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "And ", - "name": "the following steps should be passed:", - "line": 20, - "doc_string": { - "value": "a feature path \"features/load.feature:6\"\nI parse features\nI should have 1 scenario registered", - "content_type": "", - "line": 21 - }, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - } - ] + { + "uri": "features/background.feature", + "id": "run-background", + "keyword": "Feature", + "name": "run background", + "description": " In order to test application behavior\n As a test suite\n I need to be able to run background correctly", + "line": 1, + "elements": [ + { + "id": "run-background;should-run-background-steps", + "keyword": "Scenario", + "name": "should run background steps", + "description": "", + "line": 6, + "type": "scenario", + "steps": [ + { + "keyword": "Given ", + "name": "a feature \"normal.feature\" file:", + "line": 7, + "doc_string": { + "value": "Feature: with background\n\n Background:\n Given a feature path \"features/load.feature:6\"\n\n Scenario: parse a scenario\n When I parse features\n Then I should have 1 scenario registered", + "content_type": "", + "line": 8 }, - { - "id": "run-background;should-skip-all-consequent-steps-on-failure", - "keyword": "Scenario", - "name": "should skip all consequent steps on failure", - "description": "", - "line": 27, - "type": "scenario", - "steps": [ - { - "keyword": "Given ", - "name": "a feature \"normal.feature\" file:", - "line": 28, - "doc_string": { - "value": "Feature: with background\n\n Background:\n Given a failing step\n And a feature path \"features/load.feature:6\"\n\n Scenario: parse a scenario\n When I parse features\n Then I should have 1 scenario registered", - "content_type": "", - "line": 29 - }, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "When ", - "name": "I run feature suite", - "line": 40, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "Then ", - "name": "the suite should have failed", - "line": 41, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "And ", - "name": "the following steps should be failed:", - "line": 42, - "doc_string": { - "value": "a failing step", - "content_type": "", - "line": 43 - }, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "And ", - "name": "the following steps should be skipped:", - "line": 46, - "doc_string": { - "value": "a feature path \"features/load.feature:6\"\nI parse features\nI should have 1 scenario registered", - "content_type": "", - "line": 47 - }, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - } - ] + "match": { + "location": "suite_context.go:0" }, - { - "id": "run-background;should-continue-undefined-steps", - "keyword": "Scenario", - "name": "should continue undefined steps", - "description": "", - "line": 53, - "type": "scenario", - "steps": [ - { - "keyword": "Given ", - "name": "a feature \"normal.feature\" file:", - "line": 54, - "doc_string": { - "value": "Feature: with background\n\n Background:\n Given an undefined step\n\n Scenario: parse a scenario\n When I do undefined action\n Then I should have 1 scenario registered", - "content_type": "", - "line": 55 - }, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "When ", - "name": "I run feature suite", - "line": 65, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "Then ", - "name": "the suite should have passed", - "line": 66, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "And ", - "name": "the following steps should be undefined:", - "line": 67, - "doc_string": { - "value": "an undefined step\nI do undefined action", - "content_type": "", - "line": 68 - }, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "And ", - "name": "the following steps should be skipped:", - "line": 72, - "doc_string": { - "value": "I should have 1 scenario registered", - "content_type": "", - "line": 73 - }, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - } - ] + "result": { + "status": "passed", + "duration": 0 } + }, + { + "keyword": "When ", + "name": "I run feature suite", + "line": 18, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + }, + { + "keyword": "Then ", + "name": "the suite should have passed", + "line": 19, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + }, + { + "keyword": "And ", + "name": "the following steps should be passed:", + "line": 20, + "doc_string": { + "value": "a feature path \"features/load.feature:6\"\nI parse features\nI should have 1 scenario registered", + "content_type": "", + "line": 21 + }, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + } ] - }, - { - "uri": "features/events.feature", - "id": "suite-events", - "keyword": "Feature", - "name": "suite events", - "description": " In order to run tasks before and after important events\n As a test suite\n I need to provide a way to hook into these events", - "line": 1, - "elements": [ - { - "id": "suite-events;triggers-before-scenario-event", - "keyword": "Scenario", - "name": "triggers before scenario event", - "description": "", - "line": 9, - "type": "scenario", - "steps": [ - { - "keyword": "Given ", - "name": "I'm listening to suite events", - "line": 7, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "Given ", - "name": "a feature path \"features/load.feature:6\"", - "line": 10, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "When ", - "name": "I run feature suite", - "line": 11, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "Then ", - "name": "there was event triggered before scenario \"load features within path\"", - "line": 12, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - } - ] + }, + { + "id": "run-background;should-skip-all-consequent-steps-on-failure", + "keyword": "Scenario", + "name": "should skip all consequent steps on failure", + "description": "", + "line": 27, + "type": "scenario", + "steps": [ + { + "keyword": "Given ", + "name": "a feature \"normal.feature\" file:", + "line": 28, + "doc_string": { + "value": "Feature: with background\n\n Background:\n Given a failing step\n And a feature path \"features/load.feature:6\"\n\n Scenario: parse a scenario\n When I parse features\n Then I should have 1 scenario registered", + "content_type": "", + "line": 29 }, - { - "id": "suite-events;triggers-appropriate-events-for-a-single-scenario", - "keyword": "Scenario", - "name": "triggers appropriate events for a single scenario", - "description": "", - "line": 14, - "type": "scenario", - "steps": [ - { - "keyword": "Given ", - "name": "I'm listening to suite events", - "line": 7, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "Given ", - "name": "a feature path \"features/load.feature:6\"", - "line": 15, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "When ", - "name": "I run feature suite", - "line": 16, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "Then ", - "name": "these events had to be fired for a number of times:", - "line": 17, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - }, - "rows": [ - { - "cells": [ - "BeforeSuite", - "1" - ] - }, - { - "cells": [ - "BeforeFeature", - "1" - ] - }, - { - "cells": [ - "BeforeScenario", - "1" - ] - }, - { - "cells": [ - "BeforeStep", - "3" - ] - }, - { - "cells": [ - "AfterStep", - "3" - ] - }, - { - "cells": [ - "AfterScenario", - "1" - ] - }, - { - "cells": [ - "AfterFeature", - "1" - ] - }, - { - "cells": [ - "AfterSuite", - "1" - ] - } - ] - } - ] + "match": { + "location": "suite_context.go:0" }, - { - "id": "suite-events;triggers-appropriate-events-whole-feature", - "keyword": "Scenario", - "name": "triggers appropriate events whole feature", - "description": "", - "line": 27, - "type": "scenario", - "steps": [ - { - "keyword": "Given ", - "name": "I'm listening to suite events", - "line": 7, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "Given ", - "name": "a feature path \"features/load.feature\"", - "line": 28, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "When ", - "name": "I run feature suite", - "line": 29, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "Then ", - "name": "these events had to be fired for a number of times:", - "line": 30, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - }, - "rows": [ - { - "cells": [ - "BeforeSuite", - "1" - ] - }, - { - "cells": [ - "BeforeFeature", - "1" - ] - }, - { - "cells": [ - "BeforeScenario", - "6" - ] - }, - { - "cells": [ - "BeforeStep", - "19" - ] - }, - { - "cells": [ - "AfterStep", - "19" - ] - }, - { - "cells": [ - "AfterScenario", - "6" - ] - }, - { - "cells": [ - "AfterFeature", - "1" - ] - }, - { - "cells": [ - "AfterSuite", - "1" - ] - } - ] - } - ] - }, - { - "id": "suite-events;triggers-appropriate-events-for-two-feature-files", - "keyword": "Scenario", - "name": "triggers appropriate events for two feature files", - "description": "", - "line": 40, - "type": "scenario", - "steps": [ - { - "keyword": "Given ", - "name": "I'm listening to suite events", - "line": 7, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "Given ", - "name": "a feature path \"features/load.feature:6\"", - "line": 41, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "And ", - "name": "a feature path \"features/multistep.feature:6\"", - "line": 42, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "When ", - "name": "I run feature suite", - "line": 43, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "Then ", - "name": "these events had to be fired for a number of times:", - "line": 44, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - }, - "rows": [ - { - "cells": [ - "BeforeSuite", - "1" - ] - }, - { - "cells": [ - "BeforeFeature", - "2" - ] - }, - { - "cells": [ - "BeforeScenario", - "2" - ] - }, - { - "cells": [ - "BeforeStep", - "7" - ] - }, - { - "cells": [ - "AfterStep", - "7" - ] - }, - { - "cells": [ - "AfterScenario", - "2" - ] - }, - { - "cells": [ - "AfterFeature", - "2" - ] - }, - { - "cells": [ - "AfterSuite", - "1" - ] - } - ] - } - ] - }, - { - "id": "suite-events;should-not-trigger-events-on-empty-feature", - "keyword": "Scenario", - "name": "should not trigger events on empty feature", - "description": "", - "line": 54, - "type": "scenario", - "steps": [ - { - "keyword": "Given ", - "name": "I'm listening to suite events", - "line": 7, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "Given ", - "name": "a feature \"normal.feature\" file:", - "line": 55, - "doc_string": { - "value": "Feature: empty\n\n Scenario: one\n\n Scenario: two", - "content_type": "", - "line": 56 - }, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "When ", - "name": "I run feature suite", - "line": 63, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "Then ", - "name": "these events had to be fired for a number of times:", - "line": 64, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - }, - "rows": [ - { - "cells": [ - "BeforeSuite", - "1" - ] - }, - { - "cells": [ - "BeforeFeature", - "0" - ] - }, - { - "cells": [ - "BeforeScenario", - "0" - ] - }, - { - "cells": [ - "BeforeStep", - "0" - ] - }, - { - "cells": [ - "AfterStep", - "0" - ] - }, - { - "cells": [ - "AfterScenario", - "0" - ] - }, - { - "cells": [ - "AfterFeature", - "0" - ] - }, - { - "cells": [ - "AfterSuite", - "1" - ] - } - ] - } - ] - }, - { - "id": "suite-events;should-not-trigger-events-on-empty-scenarios", - "keyword": "Scenario", - "name": "should not trigger events on empty scenarios", - "description": "", - "line": 74, - "type": "scenario", - "steps": [ - { - "keyword": "Given ", - "name": "I'm listening to suite events", - "line": 7, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "Given ", - "name": "a feature \"normal.feature\" file:", - "line": 75, - "doc_string": { - "value": "Feature: half empty\n\n Scenario: one\n\n Scenario: two\n Then passing step\n\n Scenario Outline: three\n Then passing step\n\n Examples:\n | a |\n | 1 |", - "content_type": "", - "line": 76 - }, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "When ", - "name": "I run feature suite", - "line": 91, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "Then ", - "name": "these events had to be fired for a number of times:", - "line": 92, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - }, - "rows": [ - { - "cells": [ - "BeforeSuite", - "1" - ] - }, - { - "cells": [ - "BeforeFeature", - "1" - ] - }, - { - "cells": [ - "BeforeScenario", - "2" - ] - }, - { - "cells": [ - "BeforeStep", - "2" - ] - }, - { - "cells": [ - "AfterStep", - "2" - ] - }, - { - "cells": [ - "AfterScenario", - "2" - ] - }, - { - "cells": [ - "AfterFeature", - "1" - ] - }, - { - "cells": [ - "AfterSuite", - "1" - ] - } - ] - } - ] + "result": { + "status": "passed", + "duration": 0 } + }, + { + "keyword": "When ", + "name": "I run feature suite", + "line": 40, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + }, + { + "keyword": "Then ", + "name": "the suite should have failed", + "line": 41, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + }, + { + "keyword": "And ", + "name": "the following steps should be failed:", + "line": 42, + "doc_string": { + "value": "a failing step", + "content_type": "", + "line": 43 + }, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + }, + { + "keyword": "And ", + "name": "the following steps should be skipped:", + "line": 46, + "doc_string": { + "value": "a feature path \"features/load.feature:6\"\nI parse features\nI should have 1 scenario registered", + "content_type": "", + "line": 47 + }, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + } ] - }, - { - "uri": "features/formatter/cucumber.feature", - "id": "cucumber-json-formatter", - "keyword": "Feature", - "name": "cucumber json formatter", - "description": " In order to support tools that import cucumber json output\n I need to be able to support cucumber json formatted output", - "line": 1, - "comments": [ - { - "value": "# Currently godog only supports comments on Feature and not", - "line": 365 + }, + { + "id": "run-background;should-continue-undefined-steps", + "keyword": "Scenario", + "name": "should continue undefined steps", + "description": "", + "line": 53, + "type": "scenario", + "steps": [ + { + "keyword": "Given ", + "name": "a feature \"normal.feature\" file:", + "line": 54, + "doc_string": { + "value": "Feature: with background\n\n Background:\n Given an undefined step\n\n Scenario: parse a scenario\n When I do undefined action\n Then I should have 1 scenario registered", + "content_type": "", + "line": 55 }, - { - "value": "# scenario and steps.", - "line": 366 + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 } - ], - "elements": [ - { - "id": "cucumber-json-formatter;support-of-feature-plus-scenario-node", - "keyword": "Scenario", - "name": "Support of Feature Plus Scenario Node", - "description": "", - "line": 5, - "type": "scenario", - "steps": [ - { - "keyword": "Given ", - "name": "a feature \"features/simple.feature\" file:", - "line": 6, - "doc_string": { - "value": " Feature: simple feature\n simple feature description\n Scenario: simple scenario\n simple scenario description", - "content_type": "", - "line": 7 - }, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "When ", - "name": "I run feature suite with formatter \"cucumber\"", - "line": 13, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "Then ", - "name": "the rendered json will be as follows:", - "line": 14, - "doc_string": { - "value": " [\n {\n \"uri\": \"features/simple.feature\",\n \"id\": \"simple-feature\",\n \"keyword\": \"Feature\",\n \"name\": \"simple feature\",\n \"description\": \" simple feature description\",\n \"line\": 1,\n \"elements\": [\n {\n \"id\": \"simple-feature;simple-scenario\",\n \"keyword\": \"Scenario\",\n \"name\": \"simple scenario\",\n \"description\": \" simple scenario description\",\n \"line\": 3,\n \"type\": \"scenario\"\n }\n ]\n }\n ]", - "content_type": "application/json", - "line": 15 - }, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - } - ] + }, + { + "keyword": "When ", + "name": "I run feature suite", + "line": 65, + "match": { + "location": "suite_context.go:0" }, - { - "id": "cucumber-json-formatter;support-of-feature-plus-scenario-node-with-tags", - "keyword": "Scenario", - "name": "Support of Feature Plus Scenario Node With Tags", - "description": "", - "line": 38, - "type": "scenario", - "steps": [ - { - "keyword": "Given ", - "name": "a feature \"features/simple.feature\" file:", - "line": 39, - "doc_string": { - "value": " @TAG1\n Feature: simple feature\n simple feature description\n @TAG2 @TAG3\n Scenario: simple scenario\n simple scenario description", - "content_type": "", - "line": 40 - }, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "When ", - "name": "I run feature suite with formatter \"cucumber\"", - "line": 48, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "Then ", - "name": "the rendered json will be as follows:", - "line": 49, - "doc_string": { - "value": " [\n {\n \"uri\": \"features/simple.feature\",\n \"id\": \"simple-feature\",\n \"keyword\": \"Feature\",\n \"name\": \"simple feature\",\n \"description\": \" simple feature description\",\n \"line\": 2,\n \"tags\": [\n {\n \"name\": \"@TAG1\",\n \"line\": 1\n }\n ],\n \"elements\": [\n {\n \"id\": \"simple-feature;simple-scenario\",\n \"keyword\": \"Scenario\",\n \"name\": \"simple scenario\",\n \"description\": \" simple scenario description\",\n \"line\": 5,\n \"type\": \"scenario\",\n \"tags\": [\n {\n \"name\": \"@TAG1\",\n \"line\": 1\n },\n {\n \"name\": \"@TAG2\",\n \"line\": 4\n },\n {\n \"name\": \"@TAG3\",\n \"line\": 4\n }\n ]\n }\n ]\n }\n]", - "content_type": "application/json", - "line": 50 - }, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - } - ] - }, - { - "id": "cucumber-json-formatter;support-of-feature-plus-scenario-outline", - "keyword": "Scenario", - "name": "Support of Feature Plus Scenario Outline", - "description": "", - "line": 92, - "type": "scenario", - "steps": [ - { - "keyword": "Given ", - "name": "a feature \"features/simple.feature\" file:", - "line": 93, - "doc_string": { - "value": " Feature: simple feature\n simple feature description\n\n Scenario Outline: simple scenario\n simple scenario description\n\n Examples: simple examples\n | status |\n | pass |\n | fail |", - "content_type": "", - "line": 94 - }, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "When ", - "name": "I run feature suite with formatter \"cucumber\"", - "line": 106, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "Then ", - "name": "the rendered json will be as follows:", - "line": 107, - "doc_string": { - "value": " [\n {\n \"uri\": \"features/simple.feature\",\n \"id\": \"simple-feature\",\n \"keyword\": \"Feature\",\n \"name\": \"simple feature\",\n \"description\": \" simple feature description\",\n \"line\": 1,\n \"elements\": [\n {\n \"id\": \"simple-feature;simple-scenario;simple-examples;2\",\n \"keyword\": \"Scenario Outline\",\n \"name\": \"simple scenario\",\n \"description\": \" simple scenario description\",\n \"line\": 9,\n \"type\": \"scenario\"\n },\n {\n \"id\": \"simple-feature;simple-scenario;simple-examples;3\",\n \"keyword\": \"Scenario Outline\",\n \"name\": \"simple scenario\",\n \"description\": \" simple scenario description\",\n \"line\": 10,\n \"type\": \"scenario\"\n }\n ]\n }\n ]", - "content_type": "", - "line": 108 - }, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - } - ] - }, - { - "id": "cucumber-json-formatter;support-of-feature-plus-scenario-outline-with-tags", - "keyword": "Scenario", - "name": "Support of Feature Plus Scenario Outline With Tags", - "description": "", - "line": 139, - "type": "scenario", - "steps": [ - { - "keyword": "Given ", - "name": "a feature \"features/simple.feature\" file:", - "line": 140, - "doc_string": { - "value": " @TAG1\n Feature: simple feature\n simple feature description\n\n @TAG2\n Scenario Outline: simple scenario\n simple scenario description\n\n @TAG3\n Examples: simple examples\n | status |\n | pass |\n | fail |", - "content_type": "", - "line": 141 - }, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "When ", - "name": "I run feature suite with formatter \"cucumber\"", - "line": 156, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "Then ", - "name": "the rendered json will be as follows:", - "line": 157, - "doc_string": { - "value": " [\n {\n \"uri\": \"features/simple.feature\",\n \"id\": \"simple-feature\",\n \"keyword\": \"Feature\",\n \"name\": \"simple feature\",\n \"description\": \" simple feature description\",\n \"line\": 2,\n \"tags\": [\n {\n \"name\": \"@TAG1\",\n \"line\": 1\n }\n ],\n \"elements\": [\n {\n \"id\": \"simple-feature;simple-scenario;simple-examples;2\",\n \"keyword\": \"Scenario Outline\",\n \"name\": \"simple scenario\",\n \"description\": \" simple scenario description\",\n \"line\": 12,\n \"type\": \"scenario\",\n \"tags\": [\n {\n \"name\": \"@TAG1\",\n \"line\": 1\n },\n {\n \"name\": \"@TAG2\",\n \"line\": 5\n },\n {\n \"name\": \"@TAG3\",\n \"line\": 9\n }\n ]\n },\n {\n \"id\": \"simple-feature;simple-scenario;simple-examples;3\",\n \"keyword\": \"Scenario Outline\",\n \"name\": \"simple scenario\",\n \"description\": \" simple scenario description\",\n \"line\": 13,\n \"type\": \"scenario\",\n \"tags\": [\n {\n \"name\": \"@TAG1\",\n \"line\": 1\n },\n {\n \"name\": \"@TAG2\",\n \"line\": 5\n },\n {\n \"name\": \"@TAG3\",\n \"line\": 9\n }\n ]\n }\n ]\n }\n ]", - "content_type": "", - "line": 158 - }, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - } - ] - }, - { - "id": "cucumber-json-formatter;support-of-feature-plus-scenario-with-steps", - "keyword": "Scenario", - "name": "Support of Feature Plus Scenario With Steps", - "description": "", - "line": 222, - "type": "scenario", - "steps": [ - { - "keyword": "Given ", - "name": "a feature \"features/simple.feature\" file:", - "line": 223, - "doc_string": { - "value": " Feature: simple feature\n simple feature description\n\n Scenario: simple scenario\n simple scenario description\n\n Given passing step\n Then a failing step\n", - "content_type": "", - "line": 224 - }, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "When ", - "name": "I run feature suite with formatter \"cucumber\"", - "line": 235, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "Then ", - "name": "the rendered json will be as follows:", - "line": 236, - "doc_string": { - "value": " [\n {\n \"uri\": \"features/simple.feature\",\n \"id\": \"simple-feature\",\n \"keyword\": \"Feature\",\n \"name\": \"simple feature\",\n \"description\": \" simple feature description\",\n \"line\": 1,\n \"elements\": [\n {\n \"id\": \"simple-feature;simple-scenario\",\n \"keyword\": \"Scenario\",\n \"name\": \"simple scenario\",\n \"description\": \" simple scenario description\",\n \"line\": 4,\n \"type\": \"scenario\",\n \"steps\": [\n {\n \"keyword\": \"Given \",\n \"name\": \"passing step\",\n \"line\": 7,\n \"match\": {\n \"location\": \"suite_context.go:0\"\n },\n \"result\": {\n \"status\": \"passed\",\n \"duration\": 0\n }\n },\n {\n \"keyword\": \"Then \",\n \"name\": \"a failing step\",\n \"line\": 8,\n \"match\": {\n \"location\": \"suite_context.go:0\"\n },\n \"result\": {\n \"status\": \"failed\",\n \"error_message\": \"intentional failure\",\n \"duration\": 0\n }\n }\n ]\n }\n ]\n }\n ]", - "content_type": "", - "line": 237 - }, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - } - ] - }, - { - "id": "cucumber-json-formatter;support-of-feature-plus-scenario-outline-with-steps", - "keyword": "Scenario", - "name": "Support of Feature Plus Scenario Outline With Steps", - "description": "", - "line": 286, - "type": "scenario", - "steps": [ - { - "keyword": "Given ", - "name": "a feature \"features/simple.feature\" file:", - "line": 287, - "doc_string": { - "value": " Feature: simple feature\n simple feature description\n\n Scenario Outline: simple scenario\n simple scenario description\n\n Given \u003cstatus\u003e step\n\n Examples: simple examples\n | status |\n | passing |\n | failing |\n", - "content_type": "", - "line": 288 - }, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "When ", - "name": "I run feature suite with formatter \"cucumber\"", - "line": 303, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "Then ", - "name": "the rendered json will be as follows:", - "line": 304, - "doc_string": { - "value": " [\n {\n \"uri\": \"features/simple.feature\",\n \"id\": \"simple-feature\",\n \"keyword\": \"Feature\",\n \"name\": \"simple feature\",\n \"description\": \" simple feature description\",\n \"line\": 1,\n \"elements\": [\n {\n \"id\": \"simple-feature;simple-scenario;simple-examples;2\",\n \"keyword\": \"Scenario Outline\",\n \"name\": \"simple scenario\",\n \"description\": \" simple scenario description\",\n \"line\": 11,\n \"type\": \"scenario\",\n \"steps\": [\n {\n \"keyword\": \"Given \",\n \"name\": \"passing step\",\n \"line\": 11,\n \"match\": {\n \"location\": \"suite_context.go:0\"\n },\n \"result\": {\n \"status\": \"passed\",\n \"duration\": 0\n }\n }\n ]\n },\n {\n \"id\": \"simple-feature;simple-scenario;simple-examples;3\",\n \"keyword\": \"Scenario Outline\",\n \"name\": \"simple scenario\",\n \"description\": \" simple scenario description\",\n \"line\": 12,\n \"type\": \"scenario\",\n \"steps\": [\n {\n \"keyword\": \"Given \",\n \"name\": \"failing step\",\n \"line\": 12,\n \"match\": {\n \"location\": \"suite_context.go:0\"\n },\n \"result\": {\n \"status\": \"failed\",\n \"error_message\": \"intentional failure\",\n \"duration\": 0\n }\n }\n ]\n }\n ]\n }\n ]", - "content_type": "", - "line": 305 - }, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - } - ] - }, - { - "id": "cucumber-json-formatter;support-of-comments", - "keyword": "Scenario", - "name": "Support of Comments", - "description": "", - "line": 367, - "type": "scenario", - "steps": [ - { - "keyword": "Given ", - "name": "a feature \"features/simple.feature\" file:", - "line": 368, - "doc_string": { - "value": " #Feature comment\n Feature: simple feature\n simple description\n\n Scenario: simple scenario\n simple feature description", - "content_type": "", - "line": 369 - }, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "When ", - "name": "I run feature suite with formatter \"cucumber\"", - "line": 377, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "Then ", - "name": "the rendered json will be as follows:", - "line": 378, - "doc_string": { - "value": " [\n {\n \"uri\": \"features/simple.feature\",\n \"id\": \"simple-feature\",\n \"keyword\": \"Feature\",\n \"name\": \"simple feature\",\n \"description\": \" simple description\",\n \"line\": 2,\n \"comments\": [\n {\n \"value\": \"#Feature comment\",\n \"line\": 1\n }\n ],\n \"elements\": [\n {\n \"id\": \"simple-feature;simple-scenario\",\n \"keyword\": \"Scenario\",\n \"name\": \"simple scenario\",\n \"description\": \" simple feature description\",\n \"line\": 5,\n \"type\": \"scenario\"\n }\n ]\n }\n ]", - "content_type": "", - "line": 379 - }, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - } - ] - }, - { - "id": "cucumber-json-formatter;support-of-docstrings", - "keyword": "Scenario", - "name": "Support of Docstrings", - "description": "", - "line": 407, - "type": "scenario", - "steps": [ - { - "keyword": "Given ", - "name": "a feature \"features/simple.feature\" file:", - "line": 408, - "doc_string": { - "value": " Feature: simple feature\n simple description\n\n Scenario: simple scenario\n simple feature description\n\n Given passing step\n \"\"\" content type\n step doc string\n \"\"\"", - "content_type": "", - "line": 409 - }, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "When ", - "name": "I run feature suite with formatter \"cucumber\"", - "line": 421, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "Then ", - "name": "the rendered json will be as follows:", - "line": 422, - "doc_string": { - "value": " [\n {\n \"uri\": \"features/simple.feature\",\n \"id\": \"simple-feature\",\n \"keyword\": \"Feature\",\n \"name\": \"simple feature\",\n \"description\": \" simple description\",\n \"line\": 1,\n \"elements\": [\n {\n \"id\": \"simple-feature;simple-scenario\",\n \"keyword\": \"Scenario\",\n \"name\": \"simple scenario\",\n \"description\": \" simple feature description\",\n \"line\": 4,\n \"type\": \"scenario\",\n \"steps\": [\n {\n \"keyword\": \"Given \",\n \"name\": \"passing step\",\n \"line\": 7,\n \"doc_string\": {\n \"value\": \"step doc string\",\n \"content_type\": \"content type\",\n \"line\": 8\n },\n \"match\": {\n \"location\": \"suite_context.go:0\"\n },\n \"result\": {\n \"status\": \"passed\",\n \"duration\": 0\n }\n }\n ]\n }\n ]\n }\n]", - "content_type": "", - "line": 423 - }, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - } - ] - }, - { - "id": "cucumber-json-formatter;support-of-undefined,-pending-and-skipped-status", - "keyword": "Scenario", - "name": "Support of Undefined, Pending and Skipped status", - "description": "", - "line": 464, - "type": "scenario", - "steps": [ - { - "keyword": "Given ", - "name": "a feature \"features/simple.feature\" file:", - "line": 465, - "doc_string": { - "value": " Feature: simple feature\n simple feature description\n\n Scenario: simple scenario\n simple scenario description\n\n Given passing step\n And pending step\n And undefined\n And passing step\n", - "content_type": "", - "line": 466 - }, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "When ", - "name": "I run feature suite with formatter \"cucumber\"", - "line": 479, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "Then ", - "name": "the rendered json will be as follows:", - "line": 480, - "doc_string": { - "value": " [\n {\n \"uri\": \"features/simple.feature\",\n \"id\": \"simple-feature\",\n \"keyword\": \"Feature\",\n \"name\": \"simple feature\",\n \"description\": \" simple feature description\",\n \"line\": 1,\n \"elements\": [\n {\n \"id\": \"simple-feature;simple-scenario\",\n \"keyword\": \"Scenario\",\n \"name\": \"simple scenario\",\n \"description\": \" simple scenario description\",\n \"line\": 4,\n \"type\": \"scenario\",\n \"steps\": [\n {\n \"keyword\": \"Given \",\n \"name\": \"passing step\",\n \"line\": 7,\n \"match\": {\n \"location\": \"suite_context.go:0\"\n },\n \"result\": {\n \"status\": \"passed\",\n \"duration\": 0\n }\n },\n {\n \"keyword\": \"And \",\n \"name\": \"pending step\",\n \"line\": 8,\n \"match\": {\n \"location\": \"features/simple.feature:8\"\n },\n \"result\": {\n \"status\": \"pending\"\n }\n },\n {\n \"keyword\": \"And \",\n \"name\": \"undefined\",\n \"line\": 9,\n \"match\": {\n \"location\": \"features/simple.feature:9\"\n },\n \"result\": {\n \"status\": \"undefined\"\n }\n },\n {\n \"keyword\": \"And \",\n \"name\": \"passing step\",\n \"line\": 10,\n \"match\": {\n \"location\": \"suite_context.go:0\"\n },\n \"result\": {\n \"status\": \"skipped\"\n }\n }\n ]\n }\n ]\n }\n ]", - "content_type": "", - "line": 481 - }, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - } - ] + "result": { + "status": "passed", + "duration": 0 } + }, + { + "keyword": "Then ", + "name": "the suite should have passed", + "line": 66, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + }, + { + "keyword": "And ", + "name": "the following steps should be undefined:", + "line": 67, + "doc_string": { + "value": "an undefined step\nI do undefined action", + "content_type": "", + "line": 68 + }, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + }, + { + "keyword": "And ", + "name": "the following steps should be skipped:", + "line": 72, + "doc_string": { + "value": "I should have 1 scenario registered", + "content_type": "", + "line": 73 + }, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + } ] - }, - { - "uri": "features/formatter/events.feature", - "id": "event-stream-formatter", - "keyword": "Feature", - "name": "event stream formatter", - "description": " In order to have universal cucumber formatter\n As a test suite\n I need to be able to support event stream formatter", - "line": 1, - "elements": [ - { - "id": "event-stream-formatter;should-fire-only-suite-events-without-any-scenario", - "keyword": "Scenario", - "name": "should fire only suite events without any scenario", - "description": "", - "line": 6, - "type": "scenario", - "steps": [ - { - "keyword": "Given ", - "name": "a feature path \"features/load.feature:4\"", - "line": 7, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "When ", - "name": "I run feature suite with formatter \"events\"", - "line": 8, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "Then ", - "name": "the following events should be fired:", - "line": 9, - "doc_string": { - "value": " TestRunStarted\n TestSource\n TestRunFinished", - "content_type": "", - "line": 10 - }, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - } - ] + } + ] + }, + { + "uri": "features/events.feature", + "id": "suite-events", + "keyword": "Feature", + "name": "suite events", + "description": " In order to run tasks before and after important events\n As a test suite\n I need to provide a way to hook into these events", + "line": 1, + "elements": [ + { + "id": "suite-events;triggers-before-scenario-event", + "keyword": "Scenario", + "name": "triggers before scenario event", + "description": "", + "line": 9, + "type": "scenario", + "steps": [ + { + "keyword": "Given ", + "name": "I'm listening to suite events", + "line": 7, + "match": { + "location": "suite_context.go:0" }, - { - "id": "event-stream-formatter;should-process-simple-scenario", - "keyword": "Scenario", - "name": "should process simple scenario", - "description": "", - "line": 16, - "type": "scenario", - "steps": [ - { - "keyword": "Given ", - "name": "a feature path \"features/load.feature:26\"", - "line": 17, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "When ", - "name": "I run feature suite with formatter \"events\"", - "line": 18, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "Then ", - "name": "the following events should be fired:", - "line": 19, - "doc_string": { - "value": " TestRunStarted\n TestSource\n TestCaseStarted\n StepDefinitionFound\n TestStepStarted\n TestStepFinished\n StepDefinitionFound\n TestStepStarted\n TestStepFinished\n StepDefinitionFound\n TestStepStarted\n TestStepFinished\n TestCaseFinished\n TestRunFinished", - "content_type": "", - "line": 20 - }, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - } - ] - }, - { - "id": "event-stream-formatter;should-process-outline-scenario", - "keyword": "Scenario", - "name": "should process outline scenario", - "description": "", - "line": 37, - "type": "scenario", - "steps": [ - { - "keyword": "Given ", - "name": "a feature path \"features/load.feature:34\"", - "line": 38, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "When ", - "name": "I run feature suite with formatter \"events\"", - "line": 39, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "Then ", - "name": "the following events should be fired:", - "line": 40, - "doc_string": { - "value": " TestRunStarted\n TestSource\n TestCaseStarted\n StepDefinitionFound\n TestStepStarted\n TestStepFinished\n StepDefinitionFound\n TestStepStarted\n TestStepFinished\n StepDefinitionFound\n TestStepStarted\n TestStepFinished\n TestCaseFinished\n TestCaseStarted\n StepDefinitionFound\n TestStepStarted\n TestStepFinished\n StepDefinitionFound\n TestStepStarted\n TestStepFinished\n StepDefinitionFound\n TestStepStarted\n TestStepFinished\n TestCaseFinished\n TestCaseStarted\n StepDefinitionFound\n TestStepStarted\n TestStepFinished\n StepDefinitionFound\n TestStepStarted\n TestStepFinished\n StepDefinitionFound\n TestStepStarted\n TestStepFinished\n TestCaseFinished\n TestRunFinished", - "content_type": "", - "line": 41 - }, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - } - ] + "result": { + "status": "passed", + "duration": 0 } + }, + { + "keyword": "Given ", + "name": "a feature path \"features/load.feature:6\"", + "line": 10, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + }, + { + "keyword": "When ", + "name": "I run feature suite", + "line": 11, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + }, + { + "keyword": "Then ", + "name": "there was event triggered before scenario \"load features within path\"", + "line": 12, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + } ] - }, - { - "uri": "features/formatter/junit.feature", - "id": "junit-xml-formatter", - "keyword": "Feature", - "name": "JUnit XML formatter", - "description": " In order to support tools that import JUnit XML output\n I need to be able to support junit formatted output", - "line": 1, - "comments": [ - { - "value": "# Currently godog only supports comments on Feature and not", - "line": 154 + }, + { + "id": "suite-events;triggers-appropriate-events-for-a-single-scenario", + "keyword": "Scenario", + "name": "triggers appropriate events for a single scenario", + "description": "", + "line": 14, + "type": "scenario", + "steps": [ + { + "keyword": "Given ", + "name": "I'm listening to suite events", + "line": 7, + "match": { + "location": "suite_context.go:0" }, - { - "value": "# scenario and steps.", - "line": 155 + "result": { + "status": "passed", + "duration": 0 } - ], - "elements": [ - { - "id": "junit-xml-formatter;support-of-feature-plus-scenario-node", - "keyword": "Scenario", - "name": "Support of Feature Plus Scenario Node", - "description": "", - "line": 5, - "type": "scenario", - "steps": [ - { - "keyword": "Given ", - "name": "a feature \"features/simple.feature\" file:", - "line": 6, - "doc_string": { - "value": " Feature: simple feature\n simple feature description\n Scenario: simple scenario\n simple scenario description", - "content_type": "", - "line": 7 - }, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "When ", - "name": "I run feature suite with formatter \"junit\"", - "line": 13, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "Then ", - "name": "the rendered xml will be as follows:", - "line": 14, - "doc_string": { - "value": " \u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\n \u003ctestsuites name=\"godog\" tests=\"1\" skipped=\"0\" failures=\"0\" errors=\"0\" time=\"0\"\u003e\n \u003ctestsuite name=\"simple feature\" tests=\"1\" skipped=\"0\" failures=\"0\" errors=\"0\" time=\"0\"\u003e\n \u003ctestcase name=\"simple scenario\" status=\"\" time=\"0\"\u003e\u003c/testcase\u003e\n \u003c/testsuite\u003e\n \u003c/testsuites\u003e", - "content_type": "application/xml", - "line": 15 - }, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - } - ] + }, + { + "keyword": "Given ", + "name": "a feature path \"features/load.feature:6\"", + "line": 15, + "match": { + "location": "suite_context.go:0" }, - { - "id": "junit-xml-formatter;support-of-feature-plus-scenario-node-with-tags", - "keyword": "Scenario", - "name": "Support of Feature Plus Scenario Node With Tags", - "description": "", - "line": 24, - "type": "scenario", - "steps": [ - { - "keyword": "Given ", - "name": "a feature \"features/simple.feature\" file:", - "line": 25, - "doc_string": { - "value": " @TAG1\n Feature: simple feature\n simple feature description\n @TAG2 @TAG3\n Scenario: simple scenario\n simple scenario description", - "content_type": "", - "line": 26 - }, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "When ", - "name": "I run feature suite with formatter \"junit\"", - "line": 34, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "Then ", - "name": "the rendered xml will be as follows:", - "line": 35, - "doc_string": { - "value": " \u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\n \u003ctestsuites name=\"godog\" tests=\"1\" skipped=\"0\" failures=\"0\" errors=\"0\" time=\"0\"\u003e\n \u003ctestsuite name=\"simple feature\" tests=\"1\" skipped=\"0\" failures=\"0\" errors=\"0\" time=\"0\"\u003e\n \u003ctestcase name=\"simple scenario\" status=\"\" time=\"0\"\u003e\u003c/testcase\u003e\n \u003c/testsuite\u003e\n \u003c/testsuites\u003e", - "content_type": "application/xml", - "line": 36 - }, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - } - ] - }, - { - "id": "junit-xml-formatter;support-of-feature-plus-scenario-outline", - "keyword": "Scenario", - "name": "Support of Feature Plus Scenario Outline", - "description": "", - "line": 44, - "type": "scenario", - "steps": [ - { - "keyword": "Given ", - "name": "a feature \"features/simple.feature\" file:", - "line": 45, - "doc_string": { - "value": " Feature: simple feature\n simple feature description\n\n Scenario Outline: simple scenario\n simple scenario description\n\n Examples: simple examples\n | status |\n | pass |\n | fail |", - "content_type": "", - "line": 46 - }, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "When ", - "name": "I run feature suite with formatter \"junit\"", - "line": 58, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "Then ", - "name": "the rendered xml will be as follows:", - "line": 59, - "doc_string": { - "value": " \u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\n \u003ctestsuites name=\"godog\" tests=\"2\" skipped=\"0\" failures=\"0\" errors=\"0\" time=\"0\"\u003e\n \u003ctestsuite name=\"simple feature\" tests=\"2\" skipped=\"0\" failures=\"0\" errors=\"0\" time=\"0\"\u003e\n \u003ctestcase name=\"simple scenario #1\" status=\"\" time=\"0\"\u003e\u003c/testcase\u003e\n \u003ctestcase name=\"simple scenario #2\" status=\"\" time=\"0\"\u003e\u003c/testcase\u003e\n \u003c/testsuite\u003e\n \u003c/testsuites\u003e", - "content_type": "application/xml", - "line": 60 - }, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - } - ] - }, - { - "id": "junit-xml-formatter;support-of-feature-plus-scenario-outline-with-tags", - "keyword": "Scenario", - "name": "Support of Feature Plus Scenario Outline With Tags", - "description": "", - "line": 70, - "type": "scenario", - "steps": [ - { - "keyword": "Given ", - "name": "a feature \"features/simple.feature\" file:", - "line": 71, - "doc_string": { - "value": " @TAG1\n Feature: simple feature\n simple feature description\n\n @TAG2\n Scenario Outline: simple scenario\n simple scenario description\n\n @TAG3\n Examples: simple examples\n | status |\n | pass |\n | fail |", - "content_type": "", - "line": 72 - }, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "When ", - "name": "I run feature suite with formatter \"junit\"", - "line": 87, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "Then ", - "name": "the rendered xml will be as follows:", - "line": 88, - "doc_string": { - "value": " \u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\n \u003ctestsuites name=\"godog\" tests=\"2\" skipped=\"0\" failures=\"0\" errors=\"0\" time=\"0\"\u003e\n \u003ctestsuite name=\"simple feature\" tests=\"2\" skipped=\"0\" failures=\"0\" errors=\"0\" time=\"0\"\u003e\n \u003ctestcase name=\"simple scenario #1\" status=\"\" time=\"0\"\u003e\u003c/testcase\u003e\n \u003ctestcase name=\"simple scenario #2\" status=\"\" time=\"0\"\u003e\u003c/testcase\u003e\n \u003c/testsuite\u003e\n \u003c/testsuites\u003e", - "content_type": "application/xml", - "line": 89 - }, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - } - ] - }, - { - "id": "junit-xml-formatter;support-of-feature-plus-scenario-with-steps", - "keyword": "Scenario", - "name": "Support of Feature Plus Scenario With Steps", - "description": "", - "line": 98, - "type": "scenario", - "steps": [ - { - "keyword": "Given ", - "name": "a feature \"features/simple.feature\" file:", - "line": 99, - "doc_string": { - "value": " Feature: simple feature\n simple feature description\n\n Scenario: simple scenario\n simple scenario description\n\n Given passing step\n Then a failing step\n", - "content_type": "", - "line": 100 - }, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "When ", - "name": "I run feature suite with formatter \"junit\"", - "line": 111, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "Then ", - "name": "the rendered xml will be as follows:", - "line": 112, - "doc_string": { - "value": " \u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\n \u003ctestsuites name=\"godog\" tests=\"1\" skipped=\"0\" failures=\"1\" errors=\"0\" time=\"0\"\u003e\n \u003ctestsuite name=\"simple feature\" tests=\"1\" skipped=\"0\" failures=\"1\" errors=\"0\" time=\"0\"\u003e\n \u003ctestcase name=\"simple scenario\" status=\"failed\" time=\"0\"\u003e\n \u003cfailure message=\"Step a failing step: intentional failure\"\u003e\u003c/failure\u003e\n \u003c/testcase\u003e\n \u003c/testsuite\u003e\n \u003c/testsuites\u003e", - "content_type": "application/xml", - "line": 113 - }, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - } - ] - }, - { - "id": "junit-xml-formatter;support-of-feature-plus-scenario-outline-with-steps", - "keyword": "Scenario", - "name": "Support of Feature Plus Scenario Outline With Steps", - "description": "", - "line": 123, - "type": "scenario", - "steps": [ - { - "keyword": "Given ", - "name": "a feature \"features/simple.feature\" file:", - "line": 124, - "doc_string": { - "value": " Feature: simple feature\n simple feature description\n\n Scenario Outline: simple scenario\n simple scenario description\n\n Given \u003cstatus\u003e step\n\n Examples: simple examples\n | status |\n | passing |\n | failing |\n", - "content_type": "", - "line": 125 - }, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "When ", - "name": "I run feature suite with formatter \"junit\"", - "line": 140, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "Then ", - "name": "the rendered xml will be as follows:", - "line": 141, - "doc_string": { - "value": " \u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\n \u003ctestsuites name=\"godog\" tests=\"2\" skipped=\"0\" failures=\"1\" errors=\"0\" time=\"0\"\u003e\n \u003ctestsuite name=\"simple feature\" tests=\"2\" skipped=\"0\" failures=\"1\" errors=\"0\" time=\"0\"\u003e\n \u003ctestcase name=\"simple scenario #1\" status=\"passed\" time=\"0\"\u003e\u003c/testcase\u003e\n \u003ctestcase name=\"simple scenario #2\" status=\"failed\" time=\"0\"\u003e\n \u003cfailure message=\"Step failing step: intentional failure\"\u003e\u003c/failure\u003e\n \u003c/testcase\u003e\n \u003c/testsuite\u003e\n \u003c/testsuites\u003e", - "content_type": "application/xml", - "line": 142 - }, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - } - ] - }, - { - "id": "junit-xml-formatter;support-of-comments", - "keyword": "Scenario", - "name": "Support of Comments", - "description": "", - "line": 156, - "type": "scenario", - "steps": [ - { - "keyword": "Given ", - "name": "a feature \"features/simple.feature\" file:", - "line": 157, - "doc_string": { - "value": " #Feature comment\n Feature: simple feature\n simple description\n\n Scenario: simple scenario\n simple feature description", - "content_type": "", - "line": 158 - }, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "When ", - "name": "I run feature suite with formatter \"junit\"", - "line": 166, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "Then ", - "name": "the rendered xml will be as follows:", - "line": 167, - "doc_string": { - "value": " \u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\n \u003ctestsuites name=\"godog\" tests=\"1\" skipped=\"0\" failures=\"0\" errors=\"0\" time=\"0\"\u003e\n \u003ctestsuite name=\"simple feature\" tests=\"1\" skipped=\"0\" failures=\"0\" errors=\"0\" time=\"0\"\u003e\n \u003ctestcase name=\"simple scenario\" status=\"\" time=\"0\"\u003e\u003c/testcase\u003e\n \u003c/testsuite\u003e\n \u003c/testsuites\u003e", - "content_type": "application/xml", - "line": 168 - }, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - } - ] - }, - { - "id": "junit-xml-formatter;support-of-docstrings", - "keyword": "Scenario", - "name": "Support of Docstrings", - "description": "", - "line": 176, - "type": "scenario", - "steps": [ - { - "keyword": "Given ", - "name": "a feature \"features/simple.feature\" file:", - "line": 177, - "doc_string": { - "value": " Feature: simple feature\n simple description\n\n Scenario: simple scenario\n simple feature description\n\n Given passing step\n \"\"\" content type\n step doc string\n \"\"\"", - "content_type": "", - "line": 178 - }, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "When ", - "name": "I run feature suite with formatter \"junit\"", - "line": 190, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "Then ", - "name": "the rendered xml will be as follows:", - "line": 191, - "doc_string": { - "value": " \u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\n \u003ctestsuites name=\"godog\" tests=\"1\" skipped=\"0\" failures=\"0\" errors=\"0\" time=\"0\"\u003e\n \u003ctestsuite name=\"simple feature\" tests=\"1\" skipped=\"0\" failures=\"0\" errors=\"0\" time=\"0\"\u003e\n \u003ctestcase name=\"simple scenario\" status=\"passed\" time=\"0\"\u003e\u003c/testcase\u003e\n \u003c/testsuite\u003e\n \u003c/testsuites\u003e", - "content_type": "application/xml", - "line": 192 - }, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - } - ] - }, - { - "id": "junit-xml-formatter;support-of-undefined,-pending-and-skipped-status", - "keyword": "Scenario", - "name": "Support of Undefined, Pending and Skipped status", - "description": "", - "line": 200, - "type": "scenario", - "steps": [ - { - "keyword": "Given ", - "name": "a feature \"features/simple.feature\" file:", - "line": 201, - "doc_string": { - "value": " Feature: simple feature\n simple feature description\n\n Scenario: simple scenario\n simple scenario description\n\n Given passing step\n And pending step\n And undefined\n And passing step\n", - "content_type": "", - "line": 202 - }, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "When ", - "name": "I run feature suite with formatter \"junit\"", - "line": 215, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "Then ", - "name": "the rendered xml will be as follows:", - "line": 216, - "doc_string": { - "value": " \u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\n \u003ctestsuites name=\"godog\" tests=\"1\" skipped=\"0\" failures=\"0\" errors=\"1\" time=\"0\"\u003e\n \u003ctestsuite name=\"simple feature\" tests=\"1\" skipped=\"0\" failures=\"0\" errors=\"1\" time=\"0\"\u003e\n \u003ctestcase name=\"simple scenario\" status=\"undefined\" time=\"0\"\u003e\n \u003cerror message=\"Step pending step: TODO: write pending definition\" type=\"pending\"\u003e\u003c/error\u003e\n \u003cerror message=\"Step undefined\" type=\"undefined\"\u003e\u003c/error\u003e\n \u003cerror message=\"Step passing step\" type=\"skipped\"\u003e\u003c/error\u003e\n \u003c/testcase\u003e\n \u003c/testsuite\u003e\n \u003c/testsuites\u003e", - "content_type": "application/xml", - "line": 217 - }, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - } - ] + "result": { + "status": "passed", + "duration": 0 } + }, + { + "keyword": "When ", + "name": "I run feature suite", + "line": 16, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + }, + { + "keyword": "Then ", + "name": "these events had to be fired for a number of times:", + "line": 17, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + }, + "rows": [ + { + "cells": [ + "BeforeSuite", + "1" + ] + }, + { + "cells": [ + "BeforeFeature", + "1" + ] + }, + { + "cells": [ + "BeforeScenario", + "1" + ] + }, + { + "cells": [ + "BeforeStep", + "3" + ] + }, + { + "cells": [ + "AfterStep", + "3" + ] + }, + { + "cells": [ + "AfterScenario", + "1" + ] + }, + { + "cells": [ + "AfterFeature", + "1" + ] + }, + { + "cells": [ + "AfterSuite", + "1" + ] + } + ] + } ] - }, - { - "uri": "features/formatter/pretty.feature", - "id": "pretty-formatter", - "keyword": "Feature", - "name": "pretty formatter", - "description": " In order to support tools that import pretty output\n I need to be able to support pretty formatted output", - "line": 1, - "comments": [ - { - "value": "# Currently godog only supports comments on Feature and not", - "line": 193 + }, + { + "id": "suite-events;triggers-appropriate-events-whole-feature", + "keyword": "Scenario", + "name": "triggers appropriate events whole feature", + "description": "", + "line": 27, + "type": "scenario", + "steps": [ + { + "keyword": "Given ", + "name": "I'm listening to suite events", + "line": 7, + "match": { + "location": "suite_context.go:0" }, - { - "value": "# scenario and steps.", - "line": 194 + "result": { + "status": "passed", + "duration": 0 } - ], - "elements": [ - { - "id": "pretty-formatter;support-of-feature-plus-scenario-node", - "keyword": "Scenario", - "name": "Support of Feature Plus Scenario Node", - "description": "", - "line": 5, - "type": "scenario", - "steps": [ - { - "keyword": "Given ", - "name": "a feature \"features/simple.feature\" file:", - "line": 6, - "doc_string": { - "value": " Feature: simple feature\n simple feature description\n Scenario: simple scenario\n simple scenario description", - "content_type": "", - "line": 7 - }, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "When ", - "name": "I run feature suite with formatter \"pretty\"", - "line": 13, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "Then ", - "name": "the rendered output will be as follows:", - "line": 14, - "doc_string": { - "value": " Feature: simple feature\n simple feature description\n\n Scenario: simple scenario # features/simple.feature:3\n\n 1 scenarios (1 undefined)\n No steps\n 0s", - "content_type": "", - "line": 15 - }, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - } - ] + }, + { + "keyword": "Given ", + "name": "a feature path \"features/load.feature\"", + "line": 28, + "match": { + "location": "suite_context.go:0" }, - { - "id": "pretty-formatter;support-of-feature-plus-scenario-node-with-tags", - "keyword": "Scenario", - "name": "Support of Feature Plus Scenario Node With Tags", - "description": "", - "line": 26, - "type": "scenario", - "steps": [ - { - "keyword": "Given ", - "name": "a feature \"features/simple.feature\" file:", - "line": 27, - "doc_string": { - "value": " @TAG1\n Feature: simple feature\n simple feature description\n @TAG2 @TAG3\n Scenario: simple scenario\n simple scenario description", - "content_type": "", - "line": 28 - }, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "When ", - "name": "I run feature suite with formatter \"pretty\"", - "line": 36, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "Then ", - "name": "the rendered output will be as follows:", - "line": 37, - "doc_string": { - "value": " Feature: simple feature\n simple feature description\n\n Scenario: simple scenario # features/simple.feature:5\n\n 1 scenarios (1 undefined)\n No steps\n 0s", - "content_type": "", - "line": 38 - }, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - } - ] - }, - { - "id": "pretty-formatter;support-of-feature-plus-scenario-outline", - "keyword": "Scenario", - "name": "Support of Feature Plus Scenario Outline", - "description": "", - "line": 48, - "type": "scenario", - "steps": [ - { - "keyword": "Given ", - "name": "a feature \"features/simple.feature\" file:", - "line": 49, - "doc_string": { - "value": " Feature: simple feature\n simple feature description\n\n Scenario Outline: simple scenario\n simple scenario description\n\n Examples: simple examples\n | status |\n | pass |\n | fail |", - "content_type": "", - "line": 50 - }, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "When ", - "name": "I run feature suite with formatter \"pretty\"", - "line": 62, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "Then ", - "name": "the rendered output will be as follows:", - "line": 63, - "doc_string": { - "value": " Feature: simple feature\n simple feature description\n\n Scenario Outline: simple scenario # features/simple.feature:4\n\n Examples: simple examples\n | status |\n | pass |\n | fail |\n\n 2 scenarios (2 undefined)\n No steps\n 0s", - "content_type": "", - "line": 64 - }, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - } - ] - }, - { - "id": "pretty-formatter;support-of-feature-plus-scenario-outline-with-tags", - "keyword": "Scenario", - "name": "Support of Feature Plus Scenario Outline With Tags", - "description": "", - "line": 80, - "type": "scenario", - "steps": [ - { - "keyword": "Given ", - "name": "a feature \"features/simple.feature\" file:", - "line": 81, - "doc_string": { - "value": " @TAG1\n Feature: simple feature\n simple feature description\n\n @TAG2\n Scenario Outline: simple scenario\n simple scenario description\n\n @TAG3\n Examples: simple examples\n | status |\n | pass |\n | fail |", - "content_type": "", - "line": 82 - }, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "When ", - "name": "I run feature suite with formatter \"pretty\"", - "line": 97, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "Then ", - "name": "the rendered output will be as follows:", - "line": 98, - "doc_string": { - "value": " Feature: simple feature\n simple feature description\n\n Scenario Outline: simple scenario # features/simple.feature:6\n\n Examples: simple examples\n | status |\n | pass |\n | fail |\n\n 2 scenarios (2 undefined)\n No steps\n 0s", - "content_type": "", - "line": 99 - }, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - } - ] - }, - { - "id": "pretty-formatter;support-of-feature-plus-scenario-with-steps", - "keyword": "Scenario", - "name": "Support of Feature Plus Scenario With Steps", - "description": "", - "line": 114, - "type": "scenario", - "steps": [ - { - "keyword": "Given ", - "name": "a feature \"features/simple.feature\" file:", - "line": 115, - "doc_string": { - "value": " Feature: simple feature\n simple feature description\n\n Scenario: simple scenario\n simple scenario description\n\n Given passing step\n Then a failing step\n", - "content_type": "", - "line": 116 - }, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "When ", - "name": "I run feature suite with formatter \"pretty\"", - "line": 127, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "Then ", - "name": "the rendered output will be as follows:", - "line": 128, - "doc_string": { - "value": " Feature: simple feature\n simple feature description\n\n Scenario: simple scenario # features/simple.feature:4\n Given passing step # suite_context.go:0 -\u003e SuiteContext.func2\n Then a failing step # suite_context.go:0 -\u003e *suiteContext\n intentional failure\n\n --- Failed steps:\n\n Scenario: simple scenario # features/simple.feature:4\n Then a failing step # features/simple.feature:8\n Error: intentional failure\n\n\n 1 scenarios (1 failed)\n 2 steps (1 passed, 1 failed)\n 0s", - "content_type": "", - "line": 129 - }, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - } - ] - }, - { - "id": "pretty-formatter;support-of-feature-plus-scenario-outline-with-steps", - "keyword": "Scenario", - "name": "Support of Feature Plus Scenario Outline With Steps", - "description": "", - "line": 149, - "type": "scenario", - "steps": [ - { - "keyword": "Given ", - "name": "a feature \"features/simple.feature\" file:", - "line": 150, - "doc_string": { - "value": " Feature: simple feature\n simple feature description\n\n Scenario Outline: simple scenario\n simple scenario description\n\n Given \u003cstatus\u003e step\n\n Examples: simple examples\n | status |\n | passing |\n | failing |\n", - "content_type": "", - "line": 151 - }, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "When ", - "name": "I run feature suite with formatter \"pretty\"", - "line": 166, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "Then ", - "name": "the rendered output will be as follows:", - "line": 167, - "doc_string": { - "value": " Feature: simple feature\n simple feature description\n\n Scenario Outline: simple scenario # features/simple.feature:4\n Given \u003cstatus\u003e step # suite_context.go:0 -\u003e SuiteContext.func2\n\n Examples: simple examples\n | status |\n | passing |\n | failing |\n intentional failure\n\n --- Failed steps:\n\n Scenario Outline: simple scenario # features/simple.feature:4\n Given failing step # features/simple.feature:7\n Error: intentional failure\n\n\n 2 scenarios (1 passed, 1 failed)\n 2 steps (1 passed, 1 failed)\n 0s", - "content_type": "", - "line": 168 - }, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - } - ] - }, - { - "id": "pretty-formatter;support-of-comments", - "keyword": "Scenario", - "name": "Support of Comments", - "description": "", - "line": 195, - "type": "scenario", - "steps": [ - { - "keyword": "Given ", - "name": "a feature \"features/simple.feature\" file:", - "line": 196, - "doc_string": { - "value": " #Feature comment\n Feature: simple feature\n simple description\n\n Scenario: simple scenario\n simple feature description", - "content_type": "", - "line": 197 - }, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "When ", - "name": "I run feature suite with formatter \"pretty\"", - "line": 205, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "Then ", - "name": "the rendered output will be as follows:", - "line": 206, - "doc_string": { - "value": " Feature: simple feature\n simple description\n\n Scenario: simple scenario # features/simple.feature:5\n\n 1 scenarios (1 undefined)\n No steps\n 0s", - "content_type": "", - "line": 207 - }, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - } - ] - }, - { - "id": "pretty-formatter;support-of-docstrings", - "keyword": "Scenario", - "name": "Support of Docstrings", - "description": "", - "line": 217, - "type": "scenario", - "steps": [ - { - "keyword": "Given ", - "name": "a feature \"features/simple.feature\" file:", - "line": 218, - "doc_string": { - "value": " Feature: simple feature\n simple description\n\n Scenario: simple scenario\n simple feature description\n\n Given passing step\n \"\"\" content type\n step doc string\n \"\"\"", - "content_type": "", - "line": 219 - }, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "When ", - "name": "I run feature suite with formatter \"pretty\"", - "line": 231, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "Then ", - "name": "the rendered output will be as follows:", - "line": 232, - "doc_string": { - "value": " Feature: simple feature\n simple description\n\n Scenario: simple scenario # features/simple.feature:4\n Given passing step # suite_context.go:0 -\u003e SuiteContext.func2\n \"\"\" content type\n step doc string\n \"\"\"\n\n 1 scenarios (1 passed)\n 1 steps (1 passed)\n 0s", - "content_type": "", - "line": 233 - }, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - } - ] - }, - { - "id": "pretty-formatter;support-of-undefined,-pending-and-skipped-status", - "keyword": "Scenario", - "name": "Support of Undefined, Pending and Skipped status", - "description": "", - "line": 247, - "type": "scenario", - "steps": [ - { - "keyword": "Given ", - "name": "a feature \"features/simple.feature\" file:", - "line": 248, - "doc_string": { - "value": " Feature: simple feature\n simple feature description\n\n Scenario: simple scenario\n simple scenario description\n\n Given passing step\n And pending step\n And undefined\n And passing step\n", - "content_type": "", - "line": 249 - }, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "When ", - "name": "I run feature suite with formatter \"pretty\"", - "line": 262, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "Then ", - "name": "the rendered output will be as follows:", - "line": 263, - "doc_string": { - "value": " Feature: simple feature\n simple feature description\n\n Scenario: simple scenario # features/simple.feature:4\n Given passing step # suite_context.go:0 -\u003e SuiteContext.func2\n And pending step # suite_context.go:0 -\u003e SuiteContext.func1\n TODO: write pending definition\n And undefined\n And passing step # suite_context.go:0 -\u003e SuiteContext.func2\n\n 1 scenarios (1 pending, 1 undefined)\n 4 steps (1 passed, 1 pending, 1 undefined, 1 skipped)\n 0s\n\n You can implement step definitions for undefined steps with these snippets:\n\n func undefined() error {\n return godog.ErrPending\n }\n\n func FeatureContext(s *godog.Suite) {\n s.Step(`^undefined$`, undefined)\n }", - "content_type": "", - "line": 264 - }, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - } - ] + "result": { + "status": "passed", + "duration": 0 } + }, + { + "keyword": "When ", + "name": "I run feature suite", + "line": 29, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + }, + { + "keyword": "Then ", + "name": "these events had to be fired for a number of times:", + "line": 30, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + }, + "rows": [ + { + "cells": [ + "BeforeSuite", + "1" + ] + }, + { + "cells": [ + "BeforeFeature", + "1" + ] + }, + { + "cells": [ + "BeforeScenario", + "6" + ] + }, + { + "cells": [ + "BeforeStep", + "19" + ] + }, + { + "cells": [ + "AfterStep", + "19" + ] + }, + { + "cells": [ + "AfterScenario", + "6" + ] + }, + { + "cells": [ + "AfterFeature", + "1" + ] + }, + { + "cells": [ + "AfterSuite", + "1" + ] + } + ] + } ] - }, - { - "uri": "features/lang.feature", - "id": "užkrauti-savybes", - "keyword": "Savybė", - "name": "užkrauti savybes", - "description": " Kad būtų galima paleisti savybių testus\n Kaip testavimo įrankis\n Aš turiu galėti užregistruoti savybes", - "line": 3, + }, + { + "id": "suite-events;triggers-appropriate-events-for-two-feature-files", + "keyword": "Scenario", + "name": "triggers appropriate events for two feature files", + "description": "", + "line": 40, + "type": "scenario", + "steps": [ + { + "keyword": "Given ", + "name": "I'm listening to suite events", + "line": 7, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + }, + { + "keyword": "Given ", + "name": "a feature path \"features/load.feature:6\"", + "line": 41, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + }, + { + "keyword": "And ", + "name": "a feature path \"features/multistep.feature:6\"", + "line": 42, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + }, + { + "keyword": "When ", + "name": "I run feature suite", + "line": 43, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + }, + { + "keyword": "Then ", + "name": "these events had to be fired for a number of times:", + "line": 44, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + }, + "rows": [ + { + "cells": [ + "BeforeSuite", + "1" + ] + }, + { + "cells": [ + "BeforeFeature", + "2" + ] + }, + { + "cells": [ + "BeforeScenario", + "2" + ] + }, + { + "cells": [ + "BeforeStep", + "7" + ] + }, + { + "cells": [ + "AfterStep", + "7" + ] + }, + { + "cells": [ + "AfterScenario", + "2" + ] + }, + { + "cells": [ + "AfterFeature", + "2" + ] + }, + { + "cells": [ + "AfterSuite", + "1" + ] + } + ] + } + ] + }, + { + "id": "suite-events;should-not-trigger-events-on-empty-feature", + "keyword": "Scenario", + "name": "should not trigger events on empty feature", + "description": "", + "line": 54, + "type": "scenario", + "steps": [ + { + "keyword": "Given ", + "name": "I'm listening to suite events", + "line": 7, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + }, + { + "keyword": "Given ", + "name": "a feature \"normal.feature\" file:", + "line": 55, + "doc_string": { + "value": "Feature: empty\n\n Scenario: one\n\n Scenario: two", + "content_type": "", + "line": 56 + }, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + }, + { + "keyword": "When ", + "name": "I run feature suite", + "line": 63, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + }, + { + "keyword": "Then ", + "name": "these events had to be fired for a number of times:", + "line": 64, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + }, + "rows": [ + { + "cells": [ + "BeforeSuite", + "1" + ] + }, + { + "cells": [ + "BeforeFeature", + "0" + ] + }, + { + "cells": [ + "BeforeScenario", + "0" + ] + }, + { + "cells": [ + "BeforeStep", + "0" + ] + }, + { + "cells": [ + "AfterStep", + "0" + ] + }, + { + "cells": [ + "AfterScenario", + "0" + ] + }, + { + "cells": [ + "AfterFeature", + "0" + ] + }, + { + "cells": [ + "AfterSuite", + "1" + ] + } + ] + } + ] + }, + { + "id": "suite-events;should-not-trigger-events-on-empty-scenarios", + "keyword": "Scenario", + "name": "should not trigger events on empty scenarios", + "description": "", + "line": 74, + "type": "scenario", + "steps": [ + { + "keyword": "Given ", + "name": "I'm listening to suite events", + "line": 7, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + }, + { + "keyword": "Given ", + "name": "a feature \"normal.feature\" file:", + "line": 75, + "doc_string": { + "value": "Feature: half empty\n\n Scenario: one\n\n Scenario: two\n Then passing step\n\n Scenario Outline: three\n Then passing step\n\n Examples:\n | a |\n | 1 |", + "content_type": "", + "line": 76 + }, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + }, + { + "keyword": "When ", + "name": "I run feature suite", + "line": 91, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + }, + { + "keyword": "Then ", + "name": "these events had to be fired for a number of times:", + "line": 92, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + }, + "rows": [ + { + "cells": [ + "BeforeSuite", + "1" + ] + }, + { + "cells": [ + "BeforeFeature", + "1" + ] + }, + { + "cells": [ + "BeforeScenario", + "2" + ] + }, + { + "cells": [ + "BeforeStep", + "2" + ] + }, + { + "cells": [ + "AfterStep", + "2" + ] + }, + { + "cells": [ + "AfterScenario", + "2" + ] + }, + { + "cells": [ + "AfterFeature", + "1" + ] + }, + { + "cells": [ + "AfterSuite", + "1" + ] + } + ] + } + ] + } + ] + }, + { + "uri": "features/formatter/cucumber.feature", + "id": "cucumber-json-formatter", + "keyword": "Feature", + "name": "cucumber json formatter", + "description": " In order to support tools that import cucumber json output\n I need to be able to support cucumber json formatted output", + "line": 1, + "comments": [ + { + "value": "# Currently godog only supports comments on Feature and not", + "line": 365 + }, + { + "value": "# scenario and steps.", + "line": 366 + } + ], + "elements": [ + { + "id": "cucumber-json-formatter;support-of-feature-plus-scenario-node", + "keyword": "Scenario", + "name": "Support of Feature Plus Scenario Node", + "description": "", + "line": 5, + "type": "scenario", + "steps": [ + { + "keyword": "Given ", + "name": "a feature \"features/simple.feature\" file:", + "line": 6, + "doc_string": { + "value": " Feature: simple feature\n simple feature description\n Scenario: simple scenario\n simple scenario description", + "content_type": "", + "line": 7 + }, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + }, + { + "keyword": "When ", + "name": "I run feature suite with formatter \"cucumber\"", + "line": 13, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + }, + { + "keyword": "Then ", + "name": "the rendered json will be as follows:", + "line": 14, + "doc_string": { + "value": " [\n {\n \"uri\": \"features/simple.feature\",\n \"id\": \"simple-feature\",\n \"keyword\": \"Feature\",\n \"name\": \"simple feature\",\n \"description\": \" simple feature description\",\n \"line\": 1,\n \"elements\": [\n {\n \"id\": \"simple-feature;simple-scenario\",\n \"keyword\": \"Scenario\",\n \"name\": \"simple scenario\",\n \"description\": \" simple scenario description\",\n \"line\": 3,\n \"type\": \"scenario\"\n }\n ]\n }\n ]", + "content_type": "application/json", + "line": 15 + }, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + } + ] + }, + { + "id": "cucumber-json-formatter;support-of-feature-plus-scenario-node-with-tags", + "keyword": "Scenario", + "name": "Support of Feature Plus Scenario Node With Tags", + "description": "", + "line": 38, + "type": "scenario", + "steps": [ + { + "keyword": "Given ", + "name": "a feature \"features/simple.feature\" file:", + "line": 39, + "doc_string": { + "value": " @TAG1\n Feature: simple feature\n simple feature description\n @TAG2 @TAG3\n Scenario: simple scenario\n simple scenario description", + "content_type": "", + "line": 40 + }, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + }, + { + "keyword": "When ", + "name": "I run feature suite with formatter \"cucumber\"", + "line": 48, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + }, + { + "keyword": "Then ", + "name": "the rendered json will be as follows:", + "line": 49, + "doc_string": { + "value": " [\n {\n \"uri\": \"features/simple.feature\",\n \"id\": \"simple-feature\",\n \"keyword\": \"Feature\",\n \"name\": \"simple feature\",\n \"description\": \" simple feature description\",\n \"line\": 2,\n \"tags\": [\n {\n \"name\": \"@TAG1\",\n \"line\": 1\n }\n ],\n \"elements\": [\n {\n \"id\": \"simple-feature;simple-scenario\",\n \"keyword\": \"Scenario\",\n \"name\": \"simple scenario\",\n \"description\": \" simple scenario description\",\n \"line\": 5,\n \"type\": \"scenario\",\n \"tags\": [\n {\n \"name\": \"@TAG1\",\n \"line\": 1\n },\n {\n \"name\": \"@TAG2\",\n \"line\": 4\n },\n {\n \"name\": \"@TAG3\",\n \"line\": 4\n }\n ]\n }\n ]\n }\n]", + "content_type": "application/json", + "line": 50 + }, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + } + ] + }, + { + "id": "cucumber-json-formatter;support-of-feature-plus-scenario-outline", + "keyword": "Scenario", + "name": "Support of Feature Plus Scenario Outline", + "description": "", + "line": 92, + "type": "scenario", + "steps": [ + { + "keyword": "Given ", + "name": "a feature \"features/simple.feature\" file:", + "line": 93, + "doc_string": { + "value": " Feature: simple feature\n simple feature description\n\n Scenario Outline: simple scenario\n simple scenario description\n\n Examples: simple examples\n | status |\n | pass |\n | fail |", + "content_type": "", + "line": 94 + }, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + }, + { + "keyword": "When ", + "name": "I run feature suite with formatter \"cucumber\"", + "line": 106, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + }, + { + "keyword": "Then ", + "name": "the rendered json will be as follows:", + "line": 107, + "doc_string": { + "value": " [\n {\n \"uri\": \"features/simple.feature\",\n \"id\": \"simple-feature\",\n \"keyword\": \"Feature\",\n \"name\": \"simple feature\",\n \"description\": \" simple feature description\",\n \"line\": 1,\n \"elements\": [\n {\n \"id\": \"simple-feature;simple-scenario;simple-examples;2\",\n \"keyword\": \"Scenario Outline\",\n \"name\": \"simple scenario\",\n \"description\": \" simple scenario description\",\n \"line\": 9,\n \"type\": \"scenario\"\n },\n {\n \"id\": \"simple-feature;simple-scenario;simple-examples;3\",\n \"keyword\": \"Scenario Outline\",\n \"name\": \"simple scenario\",\n \"description\": \" simple scenario description\",\n \"line\": 10,\n \"type\": \"scenario\"\n }\n ]\n }\n ]", + "content_type": "", + "line": 108 + }, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + } + ] + }, + { + "id": "cucumber-json-formatter;support-of-feature-plus-scenario-outline-with-tags", + "keyword": "Scenario", + "name": "Support of Feature Plus Scenario Outline With Tags", + "description": "", + "line": 139, + "type": "scenario", + "steps": [ + { + "keyword": "Given ", + "name": "a feature \"features/simple.feature\" file:", + "line": 140, + "doc_string": { + "value": " @TAG1\n Feature: simple feature\n simple feature description\n\n @TAG2\n Scenario Outline: simple scenario\n simple scenario description\n\n @TAG3\n Examples: simple examples\n | status |\n | pass |\n | fail |", + "content_type": "", + "line": 141 + }, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + }, + { + "keyword": "When ", + "name": "I run feature suite with formatter \"cucumber\"", + "line": 156, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + }, + { + "keyword": "Then ", + "name": "the rendered json will be as follows:", + "line": 157, + "doc_string": { + "value": " [\n {\n \"uri\": \"features/simple.feature\",\n \"id\": \"simple-feature\",\n \"keyword\": \"Feature\",\n \"name\": \"simple feature\",\n \"description\": \" simple feature description\",\n \"line\": 2,\n \"tags\": [\n {\n \"name\": \"@TAG1\",\n \"line\": 1\n }\n ],\n \"elements\": [\n {\n \"id\": \"simple-feature;simple-scenario;simple-examples;2\",\n \"keyword\": \"Scenario Outline\",\n \"name\": \"simple scenario\",\n \"description\": \" simple scenario description\",\n \"line\": 12,\n \"type\": \"scenario\",\n \"tags\": [\n {\n \"name\": \"@TAG1\",\n \"line\": 1\n },\n {\n \"name\": \"@TAG2\",\n \"line\": 5\n },\n {\n \"name\": \"@TAG3\",\n \"line\": 9\n }\n ]\n },\n {\n \"id\": \"simple-feature;simple-scenario;simple-examples;3\",\n \"keyword\": \"Scenario Outline\",\n \"name\": \"simple scenario\",\n \"description\": \" simple scenario description\",\n \"line\": 13,\n \"type\": \"scenario\",\n \"tags\": [\n {\n \"name\": \"@TAG1\",\n \"line\": 1\n },\n {\n \"name\": \"@TAG2\",\n \"line\": 5\n },\n {\n \"name\": \"@TAG3\",\n \"line\": 9\n }\n ]\n }\n ]\n }\n ]", + "content_type": "", + "line": 158 + }, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + } + ] + }, + { + "id": "cucumber-json-formatter;support-of-feature-plus-scenario-with-steps", + "keyword": "Scenario", + "name": "Support of Feature Plus Scenario With Steps", + "description": "", + "line": 222, + "type": "scenario", + "steps": [ + { + "keyword": "Given ", + "name": "a feature \"features/simple.feature\" file:", + "line": 223, + "doc_string": { + "value": " Feature: simple feature\n simple feature description\n\n Scenario: simple scenario\n simple scenario description\n\n Given passing step\n Then a failing step\n", + "content_type": "", + "line": 224 + }, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + }, + { + "keyword": "When ", + "name": "I run feature suite with formatter \"cucumber\"", + "line": 235, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + }, + { + "keyword": "Then ", + "name": "the rendered json will be as follows:", + "line": 236, + "doc_string": { + "value": " [\n {\n \"uri\": \"features/simple.feature\",\n \"id\": \"simple-feature\",\n \"keyword\": \"Feature\",\n \"name\": \"simple feature\",\n \"description\": \" simple feature description\",\n \"line\": 1,\n \"elements\": [\n {\n \"id\": \"simple-feature;simple-scenario\",\n \"keyword\": \"Scenario\",\n \"name\": \"simple scenario\",\n \"description\": \" simple scenario description\",\n \"line\": 4,\n \"type\": \"scenario\",\n \"steps\": [\n {\n \"keyword\": \"Given \",\n \"name\": \"passing step\",\n \"line\": 7,\n \"match\": {\n \"location\": \"suite_context.go:0\"\n },\n \"result\": {\n \"status\": \"passed\",\n \"duration\": 0\n }\n },\n {\n \"keyword\": \"Then \",\n \"name\": \"a failing step\",\n \"line\": 8,\n \"match\": {\n \"location\": \"suite_context.go:0\"\n },\n \"result\": {\n \"status\": \"failed\",\n \"error_message\": \"intentional failure\",\n \"duration\": 0\n }\n }\n ]\n }\n ]\n }\n ]", + "content_type": "", + "line": 237 + }, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + } + ] + }, + { + "id": "cucumber-json-formatter;support-of-feature-plus-scenario-outline-with-steps", + "keyword": "Scenario", + "name": "Support of Feature Plus Scenario Outline With Steps", + "description": "", + "line": 286, + "type": "scenario", + "steps": [ + { + "keyword": "Given ", + "name": "a feature \"features/simple.feature\" file:", + "line": 287, + "doc_string": { + "value": " Feature: simple feature\n simple feature description\n\n Scenario Outline: simple scenario\n simple scenario description\n\n Given \u003cstatus\u003e step\n\n Examples: simple examples\n | status |\n | passing |\n | failing |\n", + "content_type": "", + "line": 288 + }, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + }, + { + "keyword": "When ", + "name": "I run feature suite with formatter \"cucumber\"", + "line": 303, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + }, + { + "keyword": "Then ", + "name": "the rendered json will be as follows:", + "line": 304, + "doc_string": { + "value": " [\n {\n \"uri\": \"features/simple.feature\",\n \"id\": \"simple-feature\",\n \"keyword\": \"Feature\",\n \"name\": \"simple feature\",\n \"description\": \" simple feature description\",\n \"line\": 1,\n \"elements\": [\n {\n \"id\": \"simple-feature;simple-scenario;simple-examples;2\",\n \"keyword\": \"Scenario Outline\",\n \"name\": \"simple scenario\",\n \"description\": \" simple scenario description\",\n \"line\": 11,\n \"type\": \"scenario\",\n \"steps\": [\n {\n \"keyword\": \"Given \",\n \"name\": \"passing step\",\n \"line\": 11,\n \"match\": {\n \"location\": \"suite_context.go:0\"\n },\n \"result\": {\n \"status\": \"passed\",\n \"duration\": 0\n }\n }\n ]\n },\n {\n \"id\": \"simple-feature;simple-scenario;simple-examples;3\",\n \"keyword\": \"Scenario Outline\",\n \"name\": \"simple scenario\",\n \"description\": \" simple scenario description\",\n \"line\": 12,\n \"type\": \"scenario\",\n \"steps\": [\n {\n \"keyword\": \"Given \",\n \"name\": \"failing step\",\n \"line\": 12,\n \"match\": {\n \"location\": \"suite_context.go:0\"\n },\n \"result\": {\n \"status\": \"failed\",\n \"error_message\": \"intentional failure\",\n \"duration\": 0\n }\n }\n ]\n }\n ]\n }\n ]", + "content_type": "", + "line": 305 + }, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + } + ] + }, + { + "id": "cucumber-json-formatter;support-of-comments", + "keyword": "Scenario", + "name": "Support of Comments", + "description": "", + "line": 367, + "type": "scenario", + "steps": [ + { + "keyword": "Given ", + "name": "a feature \"features/simple.feature\" file:", + "line": 368, + "doc_string": { + "value": " #Feature comment\n Feature: simple feature\n simple description\n\n Scenario: simple scenario\n simple feature description", + "content_type": "", + "line": 369 + }, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + }, + { + "keyword": "When ", + "name": "I run feature suite with formatter \"cucumber\"", + "line": 377, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + }, + { + "keyword": "Then ", + "name": "the rendered json will be as follows:", + "line": 378, + "doc_string": { + "value": " [\n {\n \"uri\": \"features/simple.feature\",\n \"id\": \"simple-feature\",\n \"keyword\": \"Feature\",\n \"name\": \"simple feature\",\n \"description\": \" simple description\",\n \"line\": 2,\n \"comments\": [\n {\n \"value\": \"#Feature comment\",\n \"line\": 1\n }\n ],\n \"elements\": [\n {\n \"id\": \"simple-feature;simple-scenario\",\n \"keyword\": \"Scenario\",\n \"name\": \"simple scenario\",\n \"description\": \" simple feature description\",\n \"line\": 5,\n \"type\": \"scenario\"\n }\n ]\n }\n ]", + "content_type": "", + "line": 379 + }, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + } + ] + }, + { + "id": "cucumber-json-formatter;support-of-docstrings", + "keyword": "Scenario", + "name": "Support of Docstrings", + "description": "", + "line": 407, + "type": "scenario", + "steps": [ + { + "keyword": "Given ", + "name": "a feature \"features/simple.feature\" file:", + "line": 408, + "doc_string": { + "value": " Feature: simple feature\n simple description\n\n Scenario: simple scenario\n simple feature description\n\n Given passing step\n \"\"\" content type\n step doc string\n \"\"\"", + "content_type": "", + "line": 409 + }, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + }, + { + "keyword": "When ", + "name": "I run feature suite with formatter \"cucumber\"", + "line": 421, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + }, + { + "keyword": "Then ", + "name": "the rendered json will be as follows:", + "line": 422, + "doc_string": { + "value": " [\n {\n \"uri\": \"features/simple.feature\",\n \"id\": \"simple-feature\",\n \"keyword\": \"Feature\",\n \"name\": \"simple feature\",\n \"description\": \" simple description\",\n \"line\": 1,\n \"elements\": [\n {\n \"id\": \"simple-feature;simple-scenario\",\n \"keyword\": \"Scenario\",\n \"name\": \"simple scenario\",\n \"description\": \" simple feature description\",\n \"line\": 4,\n \"type\": \"scenario\",\n \"steps\": [\n {\n \"keyword\": \"Given \",\n \"name\": \"passing step\",\n \"line\": 7,\n \"doc_string\": {\n \"value\": \"step doc string\",\n \"content_type\": \"content type\",\n \"line\": 8\n },\n \"match\": {\n \"location\": \"suite_context.go:0\"\n },\n \"result\": {\n \"status\": \"passed\",\n \"duration\": 0\n }\n }\n ]\n }\n ]\n }\n]", + "content_type": "", + "line": 423 + }, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + } + ] + }, + { + "id": "cucumber-json-formatter;support-of-undefined,-pending-and-skipped-status", + "keyword": "Scenario", + "name": "Support of Undefined, Pending and Skipped status", + "description": "", + "line": 464, + "type": "scenario", + "steps": [ + { + "keyword": "Given ", + "name": "a feature \"features/simple.feature\" file:", + "line": 465, + "doc_string": { + "value": " Feature: simple feature\n simple feature description\n\n Scenario: simple scenario\n simple scenario description\n\n Given passing step\n And pending step\n And undefined\n And passing step\n", + "content_type": "", + "line": 466 + }, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + }, + { + "keyword": "When ", + "name": "I run feature suite with formatter \"cucumber\"", + "line": 479, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + }, + { + "keyword": "Then ", + "name": "the rendered json will be as follows:", + "line": 480, + "doc_string": { + "value": " [\n {\n \"uri\": \"features/simple.feature\",\n \"id\": \"simple-feature\",\n \"keyword\": \"Feature\",\n \"name\": \"simple feature\",\n \"description\": \" simple feature description\",\n \"line\": 1,\n \"elements\": [\n {\n \"id\": \"simple-feature;simple-scenario\",\n \"keyword\": \"Scenario\",\n \"name\": \"simple scenario\",\n \"description\": \" simple scenario description\",\n \"line\": 4,\n \"type\": \"scenario\",\n \"steps\": [\n {\n \"keyword\": \"Given \",\n \"name\": \"passing step\",\n \"line\": 7,\n \"match\": {\n \"location\": \"suite_context.go:0\"\n },\n \"result\": {\n \"status\": \"passed\",\n \"duration\": 0\n }\n },\n {\n \"keyword\": \"And \",\n \"name\": \"pending step\",\n \"line\": 8,\n \"match\": {\n \"location\": \"features/simple.feature:8\"\n },\n \"result\": {\n \"status\": \"pending\"\n }\n },\n {\n \"keyword\": \"And \",\n \"name\": \"undefined\",\n \"line\": 9,\n \"match\": {\n \"location\": \"features/simple.feature:9\"\n },\n \"result\": {\n \"status\": \"undefined\"\n }\n },\n {\n \"keyword\": \"And \",\n \"name\": \"passing step\",\n \"line\": 10,\n \"match\": {\n \"location\": \"suite_context.go:0\"\n },\n \"result\": {\n \"status\": \"skipped\"\n }\n }\n ]\n }\n ]\n }\n ]", + "content_type": "", + "line": 481 + }, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + } + ] + } + ] + }, + { + "uri": "features/formatter/events.feature", + "id": "event-stream-formatter", + "keyword": "Feature", + "name": "event stream formatter", + "description": " In order to have universal cucumber formatter\n As a test suite\n I need to be able to support event stream formatter", + "line": 1, + "elements": [ + { + "id": "event-stream-formatter;should-fire-only-suite-events-without-any-scenario", + "keyword": "Scenario", + "name": "should fire only suite events without any scenario", + "description": "", + "line": 6, + "type": "scenario", + "steps": [ + { + "keyword": "Given ", + "name": "a feature path \"features/load.feature:4\"", + "line": 7, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + }, + { + "keyword": "When ", + "name": "I run feature suite with formatter \"events\"", + "line": 8, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + }, + { + "keyword": "Then ", + "name": "the following events should be fired:", + "line": 9, + "doc_string": { + "value": " TestRunStarted\n TestSource\n TestRunFinished", + "content_type": "", + "line": 10 + }, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + } + ] + }, + { + "id": "event-stream-formatter;should-process-simple-scenario", + "keyword": "Scenario", + "name": "should process simple scenario", + "description": "", + "line": 16, + "type": "scenario", + "steps": [ + { + "keyword": "Given ", + "name": "a feature path \"features/load.feature:26\"", + "line": 17, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + }, + { + "keyword": "When ", + "name": "I run feature suite with formatter \"events\"", + "line": 18, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + }, + { + "keyword": "Then ", + "name": "the following events should be fired:", + "line": 19, + "doc_string": { + "value": " TestRunStarted\n TestSource\n TestCaseStarted\n StepDefinitionFound\n TestStepStarted\n TestStepFinished\n StepDefinitionFound\n TestStepStarted\n TestStepFinished\n StepDefinitionFound\n TestStepStarted\n TestStepFinished\n TestCaseFinished\n TestRunFinished", + "content_type": "", + "line": 20 + }, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + } + ] + }, + { + "id": "event-stream-formatter;should-process-outline-scenario", + "keyword": "Scenario", + "name": "should process outline scenario", + "description": "", + "line": 37, + "type": "scenario", + "steps": [ + { + "keyword": "Given ", + "name": "a feature path \"features/load.feature:34\"", + "line": 38, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + }, + { + "keyword": "When ", + "name": "I run feature suite with formatter \"events\"", + "line": 39, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + }, + { + "keyword": "Then ", + "name": "the following events should be fired:", + "line": 40, + "doc_string": { + "value": " TestRunStarted\n TestSource\n TestCaseStarted\n StepDefinitionFound\n TestStepStarted\n TestStepFinished\n StepDefinitionFound\n TestStepStarted\n TestStepFinished\n StepDefinitionFound\n TestStepStarted\n TestStepFinished\n TestCaseFinished\n TestCaseStarted\n StepDefinitionFound\n TestStepStarted\n TestStepFinished\n StepDefinitionFound\n TestStepStarted\n TestStepFinished\n StepDefinitionFound\n TestStepStarted\n TestStepFinished\n TestCaseFinished\n TestCaseStarted\n StepDefinitionFound\n TestStepStarted\n TestStepFinished\n StepDefinitionFound\n TestStepStarted\n TestStepFinished\n StepDefinitionFound\n TestStepStarted\n TestStepFinished\n TestCaseFinished\n TestRunFinished", + "content_type": "", + "line": 41 + }, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + } + ] + } + ] + }, + { + "uri": "features/formatter/junit.feature", + "id": "junit-xml-formatter", + "keyword": "Feature", + "name": "JUnit XML formatter", + "description": " In order to support tools that import JUnit XML output\n I need to be able to support junit formatted output", + "line": 1, + "comments": [ + { + "value": "# Currently godog only supports comments on Feature and not", + "line": 154 + }, + { + "value": "# scenario and steps.", + "line": 155 + } + ], + "elements": [ + { + "id": "junit-xml-formatter;support-of-feature-plus-scenario-node", + "keyword": "Scenario", + "name": "Support of Feature Plus Scenario Node", + "description": "", + "line": 5, + "type": "scenario", + "steps": [ + { + "keyword": "Given ", + "name": "a feature \"features/simple.feature\" file:", + "line": 6, + "doc_string": { + "value": " Feature: simple feature\n simple feature description\n Scenario: simple scenario\n simple scenario description", + "content_type": "", + "line": 7 + }, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + }, + { + "keyword": "When ", + "name": "I run feature suite with formatter \"junit\"", + "line": 13, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + }, + { + "keyword": "Then ", + "name": "the rendered xml will be as follows:", + "line": 14, + "doc_string": { + "value": " \u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\n \u003ctestsuites name=\"godog\" tests=\"1\" skipped=\"0\" failures=\"0\" errors=\"0\" time=\"0\"\u003e\n \u003ctestsuite name=\"simple feature\" tests=\"1\" skipped=\"0\" failures=\"0\" errors=\"0\" time=\"0\"\u003e\n \u003ctestcase name=\"simple scenario\" status=\"\" time=\"0\"\u003e\u003c/testcase\u003e\n \u003c/testsuite\u003e\n \u003c/testsuites\u003e", + "content_type": "application/xml", + "line": 15 + }, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + } + ] + }, + { + "id": "junit-xml-formatter;support-of-feature-plus-scenario-node-with-tags", + "keyword": "Scenario", + "name": "Support of Feature Plus Scenario Node With Tags", + "description": "", + "line": 24, + "type": "scenario", + "steps": [ + { + "keyword": "Given ", + "name": "a feature \"features/simple.feature\" file:", + "line": 25, + "doc_string": { + "value": " @TAG1\n Feature: simple feature\n simple feature description\n @TAG2 @TAG3\n Scenario: simple scenario\n simple scenario description", + "content_type": "", + "line": 26 + }, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + }, + { + "keyword": "When ", + "name": "I run feature suite with formatter \"junit\"", + "line": 34, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + }, + { + "keyword": "Then ", + "name": "the rendered xml will be as follows:", + "line": 35, + "doc_string": { + "value": " \u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\n \u003ctestsuites name=\"godog\" tests=\"1\" skipped=\"0\" failures=\"0\" errors=\"0\" time=\"0\"\u003e\n \u003ctestsuite name=\"simple feature\" tests=\"1\" skipped=\"0\" failures=\"0\" errors=\"0\" time=\"0\"\u003e\n \u003ctestcase name=\"simple scenario\" status=\"\" time=\"0\"\u003e\u003c/testcase\u003e\n \u003c/testsuite\u003e\n \u003c/testsuites\u003e", + "content_type": "application/xml", + "line": 36 + }, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + } + ] + }, + { + "id": "junit-xml-formatter;support-of-feature-plus-scenario-outline", + "keyword": "Scenario", + "name": "Support of Feature Plus Scenario Outline", + "description": "", + "line": 44, + "type": "scenario", + "steps": [ + { + "keyword": "Given ", + "name": "a feature \"features/simple.feature\" file:", + "line": 45, + "doc_string": { + "value": " Feature: simple feature\n simple feature description\n\n Scenario Outline: simple scenario\n simple scenario description\n\n Examples: simple examples\n | status |\n | pass |\n | fail |", + "content_type": "", + "line": 46 + }, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + }, + { + "keyword": "When ", + "name": "I run feature suite with formatter \"junit\"", + "line": 58, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + }, + { + "keyword": "Then ", + "name": "the rendered xml will be as follows:", + "line": 59, + "doc_string": { + "value": " \u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\n \u003ctestsuites name=\"godog\" tests=\"2\" skipped=\"0\" failures=\"0\" errors=\"0\" time=\"0\"\u003e\n \u003ctestsuite name=\"simple feature\" tests=\"2\" skipped=\"0\" failures=\"0\" errors=\"0\" time=\"0\"\u003e\n \u003ctestcase name=\"simple scenario #1\" status=\"\" time=\"0\"\u003e\u003c/testcase\u003e\n \u003ctestcase name=\"simple scenario #2\" status=\"\" time=\"0\"\u003e\u003c/testcase\u003e\n \u003c/testsuite\u003e\n \u003c/testsuites\u003e", + "content_type": "application/xml", + "line": 60 + }, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + } + ] + }, + { + "id": "junit-xml-formatter;support-of-feature-plus-scenario-outline-with-tags", + "keyword": "Scenario", + "name": "Support of Feature Plus Scenario Outline With Tags", + "description": "", + "line": 70, + "type": "scenario", + "steps": [ + { + "keyword": "Given ", + "name": "a feature \"features/simple.feature\" file:", + "line": 71, + "doc_string": { + "value": " @TAG1\n Feature: simple feature\n simple feature description\n\n @TAG2\n Scenario Outline: simple scenario\n simple scenario description\n\n @TAG3\n Examples: simple examples\n | status |\n | pass |\n | fail |", + "content_type": "", + "line": 72 + }, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + }, + { + "keyword": "When ", + "name": "I run feature suite with formatter \"junit\"", + "line": 87, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + }, + { + "keyword": "Then ", + "name": "the rendered xml will be as follows:", + "line": 88, + "doc_string": { + "value": " \u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\n \u003ctestsuites name=\"godog\" tests=\"2\" skipped=\"0\" failures=\"0\" errors=\"0\" time=\"0\"\u003e\n \u003ctestsuite name=\"simple feature\" tests=\"2\" skipped=\"0\" failures=\"0\" errors=\"0\" time=\"0\"\u003e\n \u003ctestcase name=\"simple scenario #1\" status=\"\" time=\"0\"\u003e\u003c/testcase\u003e\n \u003ctestcase name=\"simple scenario #2\" status=\"\" time=\"0\"\u003e\u003c/testcase\u003e\n \u003c/testsuite\u003e\n \u003c/testsuites\u003e", + "content_type": "application/xml", + "line": 89 + }, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + } + ] + }, + { + "id": "junit-xml-formatter;support-of-feature-plus-scenario-with-steps", + "keyword": "Scenario", + "name": "Support of Feature Plus Scenario With Steps", + "description": "", + "line": 98, + "type": "scenario", + "steps": [ + { + "keyword": "Given ", + "name": "a feature \"features/simple.feature\" file:", + "line": 99, + "doc_string": { + "value": " Feature: simple feature\n simple feature description\n\n Scenario: simple scenario\n simple scenario description\n\n Given passing step\n Then a failing step\n", + "content_type": "", + "line": 100 + }, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + }, + { + "keyword": "When ", + "name": "I run feature suite with formatter \"junit\"", + "line": 111, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + }, + { + "keyword": "Then ", + "name": "the rendered xml will be as follows:", + "line": 112, + "doc_string": { + "value": " \u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\n \u003ctestsuites name=\"godog\" tests=\"1\" skipped=\"0\" failures=\"1\" errors=\"0\" time=\"0\"\u003e\n \u003ctestsuite name=\"simple feature\" tests=\"1\" skipped=\"0\" failures=\"1\" errors=\"0\" time=\"0\"\u003e\n \u003ctestcase name=\"simple scenario\" status=\"failed\" time=\"0\"\u003e\n \u003cfailure message=\"Step a failing step: intentional failure\"\u003e\u003c/failure\u003e\n \u003c/testcase\u003e\n \u003c/testsuite\u003e\n \u003c/testsuites\u003e", + "content_type": "application/xml", + "line": 113 + }, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + } + ] + }, + { + "id": "junit-xml-formatter;support-of-feature-plus-scenario-outline-with-steps", + "keyword": "Scenario", + "name": "Support of Feature Plus Scenario Outline With Steps", + "description": "", + "line": 123, + "type": "scenario", + "steps": [ + { + "keyword": "Given ", + "name": "a feature \"features/simple.feature\" file:", + "line": 124, + "doc_string": { + "value": " Feature: simple feature\n simple feature description\n\n Scenario Outline: simple scenario\n simple scenario description\n\n Given \u003cstatus\u003e step\n\n Examples: simple examples\n | status |\n | passing |\n | failing |\n", + "content_type": "", + "line": 125 + }, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + }, + { + "keyword": "When ", + "name": "I run feature suite with formatter \"junit\"", + "line": 140, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + }, + { + "keyword": "Then ", + "name": "the rendered xml will be as follows:", + "line": 141, + "doc_string": { + "value": " \u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\n \u003ctestsuites name=\"godog\" tests=\"2\" skipped=\"0\" failures=\"1\" errors=\"0\" time=\"0\"\u003e\n \u003ctestsuite name=\"simple feature\" tests=\"2\" skipped=\"0\" failures=\"1\" errors=\"0\" time=\"0\"\u003e\n \u003ctestcase name=\"simple scenario #1\" status=\"passed\" time=\"0\"\u003e\u003c/testcase\u003e\n \u003ctestcase name=\"simple scenario #2\" status=\"failed\" time=\"0\"\u003e\n \u003cfailure message=\"Step failing step: intentional failure\"\u003e\u003c/failure\u003e\n \u003c/testcase\u003e\n \u003c/testsuite\u003e\n \u003c/testsuites\u003e", + "content_type": "application/xml", + "line": 142 + }, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + } + ] + }, + { + "id": "junit-xml-formatter;support-of-comments", + "keyword": "Scenario", + "name": "Support of Comments", + "description": "", + "line": 156, + "type": "scenario", + "steps": [ + { + "keyword": "Given ", + "name": "a feature \"features/simple.feature\" file:", + "line": 157, + "doc_string": { + "value": " #Feature comment\n Feature: simple feature\n simple description\n\n Scenario: simple scenario\n simple feature description", + "content_type": "", + "line": 158 + }, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + }, + { + "keyword": "When ", + "name": "I run feature suite with formatter \"junit\"", + "line": 166, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + }, + { + "keyword": "Then ", + "name": "the rendered xml will be as follows:", + "line": 167, + "doc_string": { + "value": " \u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\n \u003ctestsuites name=\"godog\" tests=\"1\" skipped=\"0\" failures=\"0\" errors=\"0\" time=\"0\"\u003e\n \u003ctestsuite name=\"simple feature\" tests=\"1\" skipped=\"0\" failures=\"0\" errors=\"0\" time=\"0\"\u003e\n \u003ctestcase name=\"simple scenario\" status=\"\" time=\"0\"\u003e\u003c/testcase\u003e\n \u003c/testsuite\u003e\n \u003c/testsuites\u003e", + "content_type": "application/xml", + "line": 168 + }, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + } + ] + }, + { + "id": "junit-xml-formatter;support-of-docstrings", + "keyword": "Scenario", + "name": "Support of Docstrings", + "description": "", + "line": 176, + "type": "scenario", + "steps": [ + { + "keyword": "Given ", + "name": "a feature \"features/simple.feature\" file:", + "line": 177, + "doc_string": { + "value": " Feature: simple feature\n simple description\n\n Scenario: simple scenario\n simple feature description\n\n Given passing step\n \"\"\" content type\n step doc string\n \"\"\"", + "content_type": "", + "line": 178 + }, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + }, + { + "keyword": "When ", + "name": "I run feature suite with formatter \"junit\"", + "line": 190, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + }, + { + "keyword": "Then ", + "name": "the rendered xml will be as follows:", + "line": 191, + "doc_string": { + "value": " \u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\n \u003ctestsuites name=\"godog\" tests=\"1\" skipped=\"0\" failures=\"0\" errors=\"0\" time=\"0\"\u003e\n \u003ctestsuite name=\"simple feature\" tests=\"1\" skipped=\"0\" failures=\"0\" errors=\"0\" time=\"0\"\u003e\n \u003ctestcase name=\"simple scenario\" status=\"passed\" time=\"0\"\u003e\u003c/testcase\u003e\n \u003c/testsuite\u003e\n \u003c/testsuites\u003e", + "content_type": "application/xml", + "line": 192 + }, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + } + ] + }, + { + "id": "junit-xml-formatter;support-of-undefined,-pending-and-skipped-status", + "keyword": "Scenario", + "name": "Support of Undefined, Pending and Skipped status", + "description": "", + "line": 200, + "type": "scenario", + "steps": [ + { + "keyword": "Given ", + "name": "a feature \"features/simple.feature\" file:", + "line": 201, + "doc_string": { + "value": " Feature: simple feature\n simple feature description\n\n Scenario: simple scenario\n simple scenario description\n\n Given passing step\n And pending step\n And undefined\n And passing step\n", + "content_type": "", + "line": 202 + }, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + }, + { + "keyword": "When ", + "name": "I run feature suite with formatter \"junit\"", + "line": 215, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + }, + { + "keyword": "Then ", + "name": "the rendered xml will be as follows:", + "line": 216, + "doc_string": { + "value": " \u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\n \u003ctestsuites name=\"godog\" tests=\"1\" skipped=\"0\" failures=\"0\" errors=\"1\" time=\"0\"\u003e\n \u003ctestsuite name=\"simple feature\" tests=\"1\" skipped=\"0\" failures=\"0\" errors=\"1\" time=\"0\"\u003e\n \u003ctestcase name=\"simple scenario\" status=\"undefined\" time=\"0\"\u003e\n \u003cerror message=\"Step pending step: TODO: write pending definition\" type=\"pending\"\u003e\u003c/error\u003e\n \u003cerror message=\"Step undefined\" type=\"undefined\"\u003e\u003c/error\u003e\n \u003cerror message=\"Step passing step\" type=\"skipped\"\u003e\u003c/error\u003e\n \u003c/testcase\u003e\n \u003c/testsuite\u003e\n \u003c/testsuites\u003e", + "content_type": "application/xml", + "line": 217 + }, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + } + ] + } + ] + }, + { + "uri": "features/formatter/pretty.feature", + "id": "pretty-formatter", + "keyword": "Feature", + "name": "pretty formatter", + "description": " In order to support tools that import pretty output\n I need to be able to support pretty formatted output", + "line": 1, + "comments": [ + { + "value": "# Currently godog only supports comments on Feature and not", + "line": 196 + }, + { + "value": "# scenario and steps.", + "line": 197 + }, + { + "value": "# Ensure s will not break when injecting data from BeforeStep", + "line": 295 + } + ], + "elements": [ + { + "id": "pretty-formatter;support-of-feature-plus-scenario-node", + "keyword": "Scenario", + "name": "Support of Feature Plus Scenario Node", + "description": "", + "line": 5, + "type": "scenario", + "steps": [ + { + "keyword": "Given ", + "name": "a feature \"features/simple.feature\" file:", + "line": 6, + "doc_string": { + "value": " Feature: simple feature\n simple feature description\n Scenario: simple scenario\n simple scenario description", + "content_type": "", + "line": 7 + }, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + }, + { + "keyword": "When ", + "name": "I run feature suite with formatter \"pretty\"", + "line": 13, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + }, + { + "keyword": "Then ", + "name": "the rendered output will be as follows:", + "line": 14, + "doc_string": { + "value": " Feature: simple feature\n simple feature description\n\n Scenario: simple scenario # features/simple.feature:3\n\n 1 scenarios (1 undefined)\n No steps\n 0s", + "content_type": "", + "line": 15 + }, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + } + ] + }, + { + "id": "pretty-formatter;support-of-feature-plus-scenario-node-with-tags", + "keyword": "Scenario", + "name": "Support of Feature Plus Scenario Node With Tags", + "description": "", + "line": 26, + "type": "scenario", + "steps": [ + { + "keyword": "Given ", + "name": "a feature \"features/simple.feature\" file:", + "line": 27, + "doc_string": { + "value": " @TAG1\n Feature: simple feature\n simple feature description\n @TAG2 @TAG3\n Scenario: simple scenario\n simple scenario description", + "content_type": "", + "line": 28 + }, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + }, + { + "keyword": "When ", + "name": "I run feature suite with formatter \"pretty\"", + "line": 36, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + }, + { + "keyword": "Then ", + "name": "the rendered output will be as follows:", + "line": 37, + "doc_string": { + "value": " Feature: simple feature\n simple feature description\n\n Scenario: simple scenario # features/simple.feature:5\n\n 1 scenarios (1 undefined)\n No steps\n 0s", + "content_type": "", + "line": 38 + }, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + } + ] + }, + { + "id": "pretty-formatter;support-of-feature-plus-scenario-outline", + "keyword": "Scenario", + "name": "Support of Feature Plus Scenario Outline", + "description": "", + "line": 49, + "type": "scenario", + "steps": [ + { + "keyword": "Given ", + "name": "a feature \"features/simple.feature\" file:", + "line": 50, + "doc_string": { + "value": " Feature: simple feature\n simple feature description\n\n Scenario Outline: simple scenario\n simple scenario description\n\n Examples: simple examples\n | status |\n | pass |\n | fail |", + "content_type": "", + "line": 51 + }, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + }, + { + "keyword": "When ", + "name": "I run feature suite with formatter \"pretty\"", + "line": 63, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + }, + { + "keyword": "Then ", + "name": "the rendered output will be as follows:", + "line": 64, + "doc_string": { + "value": " Feature: simple feature\n simple feature description\n\n Scenario Outline: simple scenario # features/simple.feature:4\n\n Examples: simple examples\n | status |\n | pass |\n | fail |\n\n 2 scenarios (2 undefined)\n No steps\n 0s", + "content_type": "", + "line": 65 + }, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + } + ] + }, + { + "id": "pretty-formatter;support-of-feature-plus-scenario-outline-with-tags", + "keyword": "Scenario", + "name": "Support of Feature Plus Scenario Outline With Tags", + "description": "", + "line": 81, + "type": "scenario", + "steps": [ + { + "keyword": "Given ", + "name": "a feature \"features/simple.feature\" file:", + "line": 82, + "doc_string": { + "value": " @TAG1\n Feature: simple feature\n simple feature description\n\n @TAG2\n Scenario Outline: simple scenario\n simple scenario description\n\n @TAG3\n Examples: simple examples\n | status |\n | pass |\n | fail |", + "content_type": "", + "line": 83 + }, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + }, + { + "keyword": "When ", + "name": "I run feature suite with formatter \"pretty\"", + "line": 98, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + }, + { + "keyword": "Then ", + "name": "the rendered output will be as follows:", + "line": 99, + "doc_string": { + "value": " Feature: simple feature\n simple feature description\n\n Scenario Outline: simple scenario # features/simple.feature:6\n\n Examples: simple examples\n | status |\n | pass |\n | fail |\n\n 2 scenarios (2 undefined)\n No steps\n 0s", + "content_type": "", + "line": 100 + }, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + } + ] + }, + { + "id": "pretty-formatter;support-of-feature-plus-scenario-with-steps", + "keyword": "Scenario", + "name": "Support of Feature Plus Scenario With Steps", + "description": "", + "line": 116, + "type": "scenario", + "steps": [ + { + "keyword": "Given ", + "name": "a feature \"features/simple.feature\" file:", + "line": 117, + "doc_string": { + "value": " Feature: simple feature\n simple feature description\n\n Scenario: simple scenario\n simple scenario description\n\n Given passing step\n Then a failing step\n", + "content_type": "", + "line": 118 + }, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + }, + { + "keyword": "When ", + "name": "I run feature suite with formatter \"pretty\"", + "line": 129, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + }, + { + "keyword": "Then ", + "name": "the rendered output will be as follows:", + "line": 130, + "doc_string": { + "value": " Feature: simple feature\n simple feature description\n\n Scenario: simple scenario # features/simple.feature:4\n Given passing step # suite_context.go:0 -\u003e SuiteContext.func2\n Then a failing step # suite_context.go:0 -\u003e *suiteContext\n intentional failure\n\n --- Failed steps:\n\n Scenario: simple scenario # features/simple.feature:4\n Then a failing step # features/simple.feature:8\n Error: intentional failure\n\n\n 1 scenarios (1 failed)\n 2 steps (1 passed, 1 failed)\n 0s", + "content_type": "", + "line": 131 + }, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + } + ] + }, + { + "id": "pretty-formatter;support-of-feature-plus-scenario-outline-with-steps", + "keyword": "Scenario", + "name": "Support of Feature Plus Scenario Outline With Steps", + "description": "", + "line": 152, + "type": "scenario", + "steps": [ + { + "keyword": "Given ", + "name": "a feature \"features/simple.feature\" file:", + "line": 153, + "doc_string": { + "value": " Feature: simple feature\n simple feature description\n\n Scenario Outline: simple scenario\n simple scenario description\n\n Given \u003cstatus\u003e step\n\n Examples: simple examples\n | status |\n | passing |\n | failing |\n", + "content_type": "", + "line": 154 + }, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + }, + { + "keyword": "When ", + "name": "I run feature suite with formatter \"pretty\"", + "line": 169, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + }, + { + "keyword": "Then ", + "name": "the rendered output will be as follows:", + "line": 170, + "doc_string": { + "value": " Feature: simple feature\n simple feature description\n\n Scenario Outline: simple scenario # features/simple.feature:4\n Given \u003cstatus\u003e step # suite_context.go:0 -\u003e SuiteContext.func2\n\n Examples: simple examples\n | status |\n | passing |\n | failing |\n intentional failure\n\n --- Failed steps:\n\n Scenario Outline: simple scenario # features/simple.feature:4\n Given failing step # features/simple.feature:7\n Error: intentional failure\n\n\n 2 scenarios (1 passed, 1 failed)\n 2 steps (1 passed, 1 failed)\n 0s", + "content_type": "", + "line": 171 + }, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + } + ] + }, + { + "id": "pretty-formatter;support-of-comments", + "keyword": "Scenario", + "name": "Support of Comments", + "description": "", + "line": 198, + "type": "scenario", + "steps": [ + { + "keyword": "Given ", + "name": "a feature \"features/simple.feature\" file:", + "line": 199, + "doc_string": { + "value": " #Feature comment\n Feature: simple feature\n simple description\n\n Scenario: simple scenario\n simple feature description", + "content_type": "", + "line": 200 + }, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + }, + { + "keyword": "When ", + "name": "I run feature suite with formatter \"pretty\"", + "line": 208, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + }, + { + "keyword": "Then ", + "name": "the rendered output will be as follows:", + "line": 209, + "doc_string": { + "value": " Feature: simple feature\n simple description\n\n Scenario: simple scenario # features/simple.feature:5\n\n 1 scenarios (1 undefined)\n No steps\n 0s", + "content_type": "", + "line": 210 + }, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + } + ] + }, + { + "id": "pretty-formatter;support-of-docstrings", + "keyword": "Scenario", + "name": "Support of Docstrings", + "description": "", + "line": 221, + "type": "scenario", + "steps": [ + { + "keyword": "Given ", + "name": "a feature \"features/simple.feature\" file:", + "line": 222, + "doc_string": { + "value": " Feature: simple feature\n simple description\n\n Scenario: simple scenario\n simple feature description\n\n Given passing step\n \"\"\" content type\n step doc string\n \"\"\"", + "content_type": "", + "line": 223 + }, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + }, + { + "keyword": "When ", + "name": "I run feature suite with formatter \"pretty\"", + "line": 235, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + }, + { + "keyword": "Then ", + "name": "the rendered output will be as follows:", + "line": 236, + "doc_string": { + "value": " Feature: simple feature\n simple description\n\n Scenario: simple scenario # features/simple.feature:4\n Given passing step # suite_context.go:0 -\u003e SuiteContext.func2\n \"\"\" content type\n step doc string\n \"\"\"\n\n 1 scenarios (1 passed)\n 1 steps (1 passed)\n 0s", + "content_type": "", + "line": 237 + }, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + } + ] + }, + { + "id": "pretty-formatter;support-of-undefined,-pending-and-skipped-status", + "keyword": "Scenario", + "name": "Support of Undefined, Pending and Skipped status", + "description": "", + "line": 252, + "type": "scenario", + "steps": [ + { + "keyword": "Given ", + "name": "a feature \"features/simple.feature\" file:", + "line": 253, + "doc_string": { + "value": " Feature: simple feature\n simple feature description\n\n Scenario: simple scenario\n simple scenario description\n\n Given passing step\n And pending step\n And undefined\n And passing step\n", + "content_type": "", + "line": 254 + }, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + }, + { + "keyword": "When ", + "name": "I run feature suite with formatter \"pretty\"", + "line": 267, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + }, + { + "keyword": "Then ", + "name": "the rendered output will be as follows:", + "line": 268, + "doc_string": { + "value": " Feature: simple feature\n simple feature description\n\n Scenario: simple scenario # features/simple.feature:4\n Given passing step # suite_context.go:0 -\u003e SuiteContext.func2\n And pending step # suite_context.go:0 -\u003e SuiteContext.func1\n TODO: write pending definition\n And undefined\n And passing step # suite_context.go:0 -\u003e SuiteContext.func2\n\n 1 scenarios (1 pending, 1 undefined)\n 4 steps (1 passed, 1 pending, 1 undefined, 1 skipped)\n 0s\n\n You can implement step definitions for undefined steps with these snippets:\n\n func undefined() error {\n return godog.ErrPending\n }\n\n func FeatureContext(s *godog.Suite) {\n s.Step(`^undefined$`, undefined)\n }", + "content_type": "", + "line": 269 + }, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + } + ] + }, + { + "id": "pretty-formatter;support-data-injection-in-beforestep", + "keyword": "Scenario", + "name": "Support data injection in BeforeStep", + "description": "", + "line": 296, + "type": "scenario", + "steps": [ + { + "keyword": "Given ", + "name": "a feature \"features/inject.feature\" file:", + "line": 297, + "doc_string": { + "value": " Feature: inject long value\n\n Scenario: test scenario\n Given Ignore I save some value X under key Y\n When Ignore I use value someverylonginjectionsoweacanbesureitsurpasstheinitiallongeststeplenghtanditwillhelptestsmethodsafety\n Then Ignore Godog rendering should not break", + "content_type": "", + "line": 298 + }, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + }, + { + "keyword": "And ", + "name": "I allow variable injection", + "line": 306, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + }, + { + "keyword": "When ", + "name": "I run feature suite with formatter \"pretty\"", + "line": 307, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + }, + { + "keyword": "Then ", + "name": "the rendered output will be as follows:", + "line": 308, + "doc_string": { + "value": " Feature: inject long value\n\n Scenario: test scenario # features/inject.feature:3\n Given Ignore I save some value X under key Y # suite_context.go:0 -\u003e SuiteContext.func7\n When Ignore I use value someverylonginjectionsoweacanbesureitsurpasstheinitiallongeststeplenghtanditwillhelptestsmethodsafety # suite_context.go:0 -\u003e SuiteContext.func7\n Then Ignore Godog rendering should not break # suite_context.go:0 -\u003e SuiteContext.func7\n\n 1 scenarios (1 passed)\n 3 steps (3 passed)\n 0s", + "content_type": "", + "line": 309 + }, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + } + ] + } + ] + }, + { + "uri": "features/lang.feature", + "id": "užkrauti-savybes", + "keyword": "Savybė", + "name": "užkrauti savybes", + "description": " Kad būtų galima paleisti savybių testus\n Kaip testavimo įrankis\n Aš turiu galėti užregistruoti savybes", + "line": 3, + "tags": [ + { + "name": "@lang", + "line": 2 + } + ], + "elements": [ + { + "id": "užkrauti-savybes;savybių-užkrovimas-iš-aplanko", + "keyword": "Scenarijus", + "name": "savybių užkrovimas iš aplanko", + "description": "", + "line": 8, + "type": "scenario", "tags": [ - { - "name": "@lang", - "line": 2 - } + { + "name": "@lang", + "line": 2 + } ], - "elements": [ - { - "id": "užkrauti-savybes;savybių-užkrovimas-iš-aplanko", - "keyword": "Scenarijus", - "name": "savybių užkrovimas iš aplanko", - "description": "", - "line": 8, - "type": "scenario", - "tags": [ - { - "name": "@lang", - "line": 2 - } - ], - "steps": [ - { - "keyword": "Duota ", - "name": "savybių aplankas \"features\"", - "line": 9, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "Kai ", - "name": "aš išskaitau savybes", - "line": 10, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "Tada ", - "name": "aš turėčiau turėti 13 savybių failus:", - "line": 11, - "doc_string": { - "value": "features/background.feature\nfeatures/events.feature\nfeatures/formatter/cucumber.feature\nfeatures/formatter/events.feature\nfeatures/formatter/junit.feature\nfeatures/formatter/pretty.feature\nfeatures/lang.feature\nfeatures/load.feature\nfeatures/multistep.feature\nfeatures/outline.feature\nfeatures/run.feature\nfeatures/snippets.feature\nfeatures/tags.feature", - "content_type": "", - "line": 12 - }, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - } - ] + "steps": [ + { + "keyword": "Duota ", + "name": "savybių aplankas \"features\"", + "line": 9, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 } - ] - }, - { - "uri": "features/load.feature", - "id": "load-features", - "keyword": "Feature", - "name": "load features", - "description": " In order to run features\n As a test suite\n I need to be able to load features", - "line": 1, - "elements": [ - { - "id": "load-features;load-features-within-path", - "keyword": "Scenario", - "name": "load features within path", - "description": "", - "line": 6, - "type": "scenario", - "steps": [ - { - "keyword": "Given ", - "name": "a feature path \"features\"", - "line": 7, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "When ", - "name": "I parse features", - "line": 8, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "Then ", - "name": "I should have 13 feature files:", - "line": 9, - "doc_string": { - "value": "features/background.feature\nfeatures/events.feature\nfeatures/formatter/cucumber.feature\nfeatures/formatter/events.feature\nfeatures/formatter/junit.feature\nfeatures/formatter/pretty.feature\nfeatures/lang.feature\nfeatures/load.feature\nfeatures/multistep.feature\nfeatures/outline.feature\nfeatures/run.feature\nfeatures/snippets.feature\nfeatures/tags.feature", - "content_type": "", - "line": 10 - }, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - } - ] + }, + { + "keyword": "Kai ", + "name": "aš išskaitau savybes", + "line": 10, + "match": { + "location": "suite_context.go:0" }, - { - "id": "load-features;load-a-specific-feature-file", - "keyword": "Scenario", - "name": "load a specific feature file", - "description": "", - "line": 26, - "type": "scenario", - "steps": [ - { - "keyword": "Given ", - "name": "a feature path \"features/load.feature\"", - "line": 27, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "When ", - "name": "I parse features", - "line": 28, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "Then ", - "name": "I should have 1 feature file:", - "line": 29, - "doc_string": { - "value": "features/load.feature", - "content_type": "", - "line": 30 - }, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - } - ] - }, - { - "id": "load-features;loaded-feature-should-have-a-number-of-scenarios;;2", - "keyword": "Scenario Outline", - "name": "loaded feature should have a number of scenarios", - "description": "", - "line": 41, - "type": "scenario", - "steps": [ - { - "keyword": "Given ", - "name": "a feature path \"features/load.feature:3\"", - "line": 41, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "When ", - "name": "I parse features", - "line": 41, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "Then ", - "name": "I should have 0 scenario registered", - "line": 41, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - } - ] - }, - { - "id": "load-features;loaded-feature-should-have-a-number-of-scenarios;;3", - "keyword": "Scenario Outline", - "name": "loaded feature should have a number of scenarios", - "description": "", - "line": 42, - "type": "scenario", - "steps": [ - { - "keyword": "Given ", - "name": "a feature path \"features/load.feature:6\"", - "line": 42, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "When ", - "name": "I parse features", - "line": 42, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "Then ", - "name": "I should have 1 scenario registered", - "line": 42, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - } - ] - }, - { - "id": "load-features;loaded-feature-should-have-a-number-of-scenarios;;4", - "keyword": "Scenario Outline", - "name": "loaded feature should have a number of scenarios", - "description": "", - "line": 43, - "type": "scenario", - "steps": [ - { - "keyword": "Given ", - "name": "a feature path \"features/load.feature\"", - "line": 43, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "When ", - "name": "I parse features", - "line": 43, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "Then ", - "name": "I should have 4 scenario registered", - "line": 43, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - } - ] - }, - { - "id": "load-features;load-a-number-of-feature-files", - "keyword": "Scenario", - "name": "load a number of feature files", - "description": "", - "line": 45, - "type": "scenario", - "steps": [ - { - "keyword": "Given ", - "name": "a feature path \"features/load.feature\"", - "line": 46, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "And ", - "name": "a feature path \"features/events.feature\"", - "line": 47, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "When ", - "name": "I parse features", - "line": 48, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "Then ", - "name": "I should have 2 feature files:", - "line": 49, - "doc_string": { - "value": "features/events.feature\nfeatures/load.feature", - "content_type": "", - "line": 50 - }, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - } - ] + "result": { + "status": "passed", + "duration": 0 } - ] - }, - { - "uri": "features/multistep.feature", - "id": "run-features-with-nested-steps", - "keyword": "Feature", - "name": "run features with nested steps", - "description": " In order to test multisteps\n As a test suite\n I need to be able to execute multisteps", - "line": 1, - "elements": [ - { - "id": "run-features-with-nested-steps;should-run-passing-multistep-successfully", - "keyword": "Scenario", - "name": "should run passing multistep successfully", - "description": "", - "line": 6, - "type": "scenario", - "steps": [ - { - "keyword": "Given ", - "name": "a feature \"normal.feature\" file:", - "line": 7, - "doc_string": { - "value": "Feature: normal feature\n\n Scenario: run passing multistep\n Given passing step\n Then passing multistep", - "content_type": "", - "line": 8 - }, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "When ", - "name": "I run feature suite", - "line": 15, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "Then ", - "name": "the suite should have passed", - "line": 16, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "And ", - "name": "the following steps should be passed:", - "line": 17, - "doc_string": { - "value": "passing step\npassing multistep", - "content_type": "", - "line": 18 - }, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - } - ] + }, + { + "keyword": "Tada ", + "name": "aš turėčiau turėti 13 savybių failus:", + "line": 11, + "doc_string": { + "value": "features/background.feature\nfeatures/events.feature\nfeatures/formatter/cucumber.feature\nfeatures/formatter/events.feature\nfeatures/formatter/junit.feature\nfeatures/formatter/pretty.feature\nfeatures/lang.feature\nfeatures/load.feature\nfeatures/multistep.feature\nfeatures/outline.feature\nfeatures/run.feature\nfeatures/snippets.feature\nfeatures/tags.feature", + "content_type": "", + "line": 12 }, - { - "id": "run-features-with-nested-steps;should-fail-multistep", - "keyword": "Scenario", - "name": "should fail multistep", - "description": "", - "line": 23, - "type": "scenario", - "steps": [ - { - "keyword": "Given ", - "name": "a feature \"failed.feature\" file:", - "line": 24, - "doc_string": { - "value": "Feature: failed feature\n\n Scenario: run failing multistep\n Given passing step\n When failing multistep\n Then I should have 1 scenario registered", - "content_type": "", - "line": 25 - }, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "When ", - "name": "I run feature suite", - "line": 33, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "Then ", - "name": "the suite should have failed", - "line": 34, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "And ", - "name": "the following step should be failed:", - "line": 35, - "doc_string": { - "value": "failing multistep", - "content_type": "", - "line": 36 - }, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "And ", - "name": "the following steps should be skipped:", - "line": 39, - "doc_string": { - "value": "I should have 1 scenario registered", - "content_type": "", - "line": 40 - }, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "And ", - "name": "the following steps should be passed:", - "line": 43, - "doc_string": { - "value": "passing step", - "content_type": "", - "line": 44 - }, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - } - ] + "match": { + "location": "suite_context.go:0" }, - { - "id": "run-features-with-nested-steps;should-fail-nested-multistep", - "keyword": "Scenario", - "name": "should fail nested multistep", - "description": "", - "line": 48, - "type": "scenario", - "steps": [ - { - "keyword": "Given ", - "name": "a feature \"failed.feature\" file:", - "line": 49, - "doc_string": { - "value": "Feature: failed feature\n\n Scenario: run failing nested multistep\n Given failing nested multistep\n When passing step", - "content_type": "", - "line": 50 - }, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "When ", - "name": "I run feature suite", - "line": 57, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "Then ", - "name": "the suite should have failed", - "line": 58, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "And ", - "name": "the following step should be failed:", - "line": 59, - "doc_string": { - "value": "failing nested multistep", - "content_type": "", - "line": 60 - }, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "And ", - "name": "the following steps should be skipped:", - "line": 63, - "doc_string": { - "value": "passing step", - "content_type": "", - "line": 64 - }, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - } - ] - }, - { - "id": "run-features-with-nested-steps;should-skip-steps-after-undefined-multistep", - "keyword": "Scenario", - "name": "should skip steps after undefined multistep", - "description": "", - "line": 68, - "type": "scenario", - "steps": [ - { - "keyword": "Given ", - "name": "a feature \"undefined.feature\" file:", - "line": 69, - "doc_string": { - "value": "Feature: run undefined multistep\n\n Scenario: run undefined multistep\n Given passing step\n When undefined multistep\n Then passing multistep", - "content_type": "", - "line": 70 - }, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "When ", - "name": "I run feature suite", - "line": 78, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "Then ", - "name": "the suite should have passed", - "line": 79, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "And ", - "name": "the following step should be passed:", - "line": 80, - "doc_string": { - "value": "passing step", - "content_type": "", - "line": 81 - }, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "And ", - "name": "the following step should be undefined:", - "line": 84, - "doc_string": { - "value": "undefined multistep", - "content_type": "", - "line": 85 - }, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "And ", - "name": "the following step should be skipped:", - "line": 88, - "doc_string": { - "value": "passing multistep", - "content_type": "", - "line": 89 - }, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - } - ] - }, - { - "id": "run-features-with-nested-steps;should-match-undefined-steps-in-a-row", - "keyword": "Scenario", - "name": "should match undefined steps in a row", - "description": "", - "line": 93, - "type": "scenario", - "steps": [ - { - "keyword": "Given ", - "name": "a feature \"undefined.feature\" file:", - "line": 94, - "doc_string": { - "value": "Feature: undefined feature\n\n Scenario: parse a scenario\n Given undefined step\n When undefined multistep\n Then I should have 1 scenario registered", - "content_type": "", - "line": 95 - }, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "When ", - "name": "I run feature suite", - "line": 103, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "Then ", - "name": "the suite should have passed", - "line": 104, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "And ", - "name": "the following steps should be undefined:", - "line": 105, - "doc_string": { - "value": "undefined step\nundefined multistep", - "content_type": "", - "line": 106 - }, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "And ", - "name": "the following step should be skipped:", - "line": 110, - "doc_string": { - "value": "I should have 1 scenario registered", - "content_type": "", - "line": 111 - }, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - } - ] - }, - { - "id": "run-features-with-nested-steps;should-mark-undefined-steps-after-pending", - "keyword": "Scenario", - "name": "should mark undefined steps after pending", - "description": "", - "line": 115, - "type": "scenario", - "steps": [ - { - "keyword": "Given ", - "name": "a feature \"pending.feature\" file:", - "line": 116, - "doc_string": { - "value": "Feature: pending feature\n\n Scenario: parse a scenario\n Given pending step\n When undefined step\n Then undefined multistep\n And I should have 1 scenario registered", - "content_type": "", - "line": 117 - }, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "When ", - "name": "I run feature suite", - "line": 126, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "Then ", - "name": "the suite should have passed", - "line": 127, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "And ", - "name": "the following steps should be undefined:", - "line": 128, - "doc_string": { - "value": "undefined step\nundefined multistep", - "content_type": "", - "line": 129 - }, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "And ", - "name": "the following step should be pending:", - "line": 133, - "doc_string": { - "value": "pending step", - "content_type": "", - "line": 134 - }, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "And ", - "name": "the following step should be skipped:", - "line": 137, - "doc_string": { - "value": "I should have 1 scenario registered", - "content_type": "", - "line": 138 - }, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - } - ] + "result": { + "status": "passed", + "duration": 0 } + } ] - }, - { - "uri": "features/outline.feature", - "id": "run-outline", - "keyword": "Feature", - "name": "run outline", - "description": " In order to test application behavior\n As a test suite\n I need to be able to run outline scenarios", - "line": 1, - "elements": [ - { - "id": "run-outline;should-run-a-normal-outline", - "keyword": "Scenario", - "name": "should run a normal outline", - "description": "", - "line": 6, - "type": "scenario", - "steps": [ - { - "keyword": "Given ", - "name": "a feature \"normal.feature\" file:", - "line": 7, - "doc_string": { - "value": "Feature: outline\n\n Background:\n Given passing step\n\n Scenario Outline: parse a scenario\n Given a feature path \"\u003cpath\u003e\"\n When I parse features\n Then I should have \u003cnum\u003e scenario registered\n\n Examples:\n | path | num |\n | features/load.feature:6 | 1 |\n | features/load.feature:3 | 0 |", - "content_type": "", - "line": 8 - }, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "When ", - "name": "I run feature suite", - "line": 24, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "Then ", - "name": "the suite should have passed", - "line": 25, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "And ", - "name": "the following steps should be passed:", - "line": 26, - "doc_string": { - "value": "a passing step\nI parse features\na feature path \"features/load.feature:6\"\na feature path \"features/load.feature:3\"\nI should have 1 scenario registered\nI should have 0 scenario registered", - "content_type": "", - "line": 27 - }, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - } - ] + } + ] + }, + { + "uri": "features/load.feature", + "id": "load-features", + "keyword": "Feature", + "name": "load features", + "description": " In order to run features\n As a test suite\n I need to be able to load features", + "line": 1, + "elements": [ + { + "id": "load-features;load-features-within-path", + "keyword": "Scenario", + "name": "load features within path", + "description": "", + "line": 6, + "type": "scenario", + "steps": [ + { + "keyword": "Given ", + "name": "a feature path \"features\"", + "line": 7, + "match": { + "location": "suite_context.go:0" }, - { - "id": "run-outline;should-continue-through-examples-on-failure", - "keyword": "Scenario", - "name": "should continue through examples on failure", - "description": "", - "line": 36, - "type": "scenario", - "steps": [ - { - "keyword": "Given ", - "name": "a feature \"normal.feature\" file:", - "line": 37, - "doc_string": { - "value": "Feature: outline\n\n Background:\n Given passing step\n\n Scenario Outline: parse a scenario\n Given a feature path \"\u003cpath\u003e\"\n When I parse features\n Then I should have \u003cnum\u003e scenario registered\n\n Examples:\n | path | num |\n | features/load.feature:6 | 5 |\n | features/load.feature:3 | 0 |", - "content_type": "", - "line": 38 - }, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "When ", - "name": "I run feature suite", - "line": 54, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "Then ", - "name": "the suite should have failed", - "line": 55, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "And ", - "name": "the following steps should be passed:", - "line": 56, - "doc_string": { - "value": "a passing step\nI parse features\na feature path \"features/load.feature:6\"\na feature path \"features/load.feature:3\"\nI should have 0 scenario registered", - "content_type": "", - "line": 57 - }, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "And ", - "name": "the following steps should be failed:", - "line": 64, - "doc_string": { - "value": "I should have 5 scenario registered", - "content_type": "", - "line": 65 - }, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - } - ] - }, - { - "id": "run-outline;should-skip-examples-on-background-failure", - "keyword": "Scenario", - "name": "should skip examples on background failure", - "description": "", - "line": 69, - "type": "scenario", - "steps": [ - { - "keyword": "Given ", - "name": "a feature \"normal.feature\" file:", - "line": 70, - "doc_string": { - "value": "Feature: outline\n\n Background:\n Given a failing step\n\n Scenario Outline: parse a scenario\n Given a feature path \"\u003cpath\u003e\"\n When I parse features\n Then I should have \u003cnum\u003e scenario registered\n\n Examples:\n | path | num |\n | features/load.feature:6 | 1 |\n | features/load.feature:3 | 0 |", - "content_type": "", - "line": 71 - }, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "When ", - "name": "I run feature suite", - "line": 87, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "Then ", - "name": "the suite should have failed", - "line": 88, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "And ", - "name": "the following steps should be skipped:", - "line": 89, - "doc_string": { - "value": "I parse features\na feature path \"features/load.feature:6\"\na feature path \"features/load.feature:3\"\nI should have 0 scenario registered\nI should have 1 scenario registered", - "content_type": "", - "line": 90 - }, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "And ", - "name": "the following steps should be failed:", - "line": 97, - "doc_string": { - "value": "a failing step", - "content_type": "", - "line": 98 - }, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - } - ] - }, - { - "id": "run-outline;should-translate-step-table-body", - "keyword": "Scenario", - "name": "should translate step table body", - "description": "", - "line": 102, - "type": "scenario", - "steps": [ - { - "keyword": "Given ", - "name": "a feature \"normal.feature\" file:", - "line": 103, - "doc_string": { - "value": "Feature: outline\n\n Background:\n Given I'm listening to suite events\n\n Scenario Outline: run with events\n Given a feature path \"\u003cpath\u003e\"\n When I run feature suite\n Then these events had to be fired for a number of times:\n | BeforeScenario | \u003cscen\u003e |\n | BeforeStep | \u003cstep\u003e |\n\n Examples:\n | path | scen | step |\n | features/load.feature:6 | 1 | 3 |\n | features/load.feature | 6 | 19 |", - "content_type": "", - "line": 104 - }, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "When ", - "name": "I run feature suite", - "line": 122, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "Then ", - "name": "the suite should have passed", - "line": 123, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "And ", - "name": "the following steps should be passed:", - "line": 124, - "doc_string": { - "value": "I'm listening to suite events\nI run feature suite\na feature path \"features/load.feature:6\"\na feature path \"features/load.feature\"", - "content_type": "", - "line": 125 - }, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - } - ] - }, - { - "id": "run-outline;should-translate-step-doc-string-argument;;2", - "keyword": "Scenario Outline", - "name": "should translate step doc string argument", - "description": "", - "line": 151, - "type": "scenario", - "steps": [ - { - "keyword": "Given ", - "name": "a feature \"normal.feature\" file:", - "line": 151, - "doc_string": { - "value": "Feature: scenario events\n\n Background:\n Given I'm listening to suite events\n\n Scenario: run with events\n Given a feature path \"features/load.feature:6\"\n When I run feature suite\n Then these events had to be fired for a number of times:\n | BeforeScenario | 1 |", - "content_type": "", - "line": 134 - }, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "When ", - "name": "I run feature suite", - "line": 151, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "Then ", - "name": "the suite should have passed", - "line": 151, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - } - ] - }, - { - "id": "run-outline;should-translate-step-doc-string-argument;;3", - "keyword": "Scenario Outline", - "name": "should translate step doc string argument", - "description": "", - "line": 152, - "type": "scenario", - "steps": [ - { - "keyword": "Given ", - "name": "a feature \"normal.feature\" file:", - "line": 152, - "doc_string": { - "value": "Feature: scenario events\n\n Background:\n Given I'm listening to suite events\n\n Scenario: run with events\n Given a feature path \"features/load.feature\"\n When I run feature suite\n Then these events had to be fired for a number of times:\n | BeforeScenario | 6 |", - "content_type": "", - "line": 134 - }, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "When ", - "name": "I run feature suite", - "line": 152, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "Then ", - "name": "the suite should have passed", - "line": 152, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - } - ] + "result": { + "status": "passed", + "duration": 0 } - ] - }, - { - "uri": "features/run.feature", - "id": "run-features", - "keyword": "Feature", - "name": "run features", - "description": " In order to test application behavior\n As a test suite\n I need to be able to run features", - "line": 1, - "elements": [ - { - "id": "run-features;should-run-a-normal-feature", - "keyword": "Scenario", - "name": "should run a normal feature", - "description": "", - "line": 6, - "type": "scenario", - "steps": [ - { - "keyword": "Given ", - "name": "a feature \"normal.feature\" file:", - "line": 7, - "doc_string": { - "value": "Feature: normal feature\n\n Scenario: parse a scenario\n Given a feature path \"features/load.feature:6\"\n When I parse features\n Then I should have 1 scenario registered", - "content_type": "", - "line": 8 - }, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "When ", - "name": "I run feature suite", - "line": 16, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "Then ", - "name": "the suite should have passed", - "line": 17, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "And ", - "name": "the following steps should be passed:", - "line": 18, - "doc_string": { - "value": "a feature path \"features/load.feature:6\"\nI parse features\nI should have 1 scenario registered", - "content_type": "", - "line": 19 - }, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - } - ] + }, + { + "keyword": "When ", + "name": "I parse features", + "line": 8, + "match": { + "location": "suite_context.go:0" }, - { - "id": "run-features;should-skip-steps-after-failure", - "keyword": "Scenario", - "name": "should skip steps after failure", - "description": "", - "line": 25, - "type": "scenario", - "steps": [ - { - "keyword": "Given ", - "name": "a feature \"failed.feature\" file:", - "line": 26, - "doc_string": { - "value": "Feature: failed feature\n\n Scenario: parse a scenario\n Given a failing step\n When I parse features\n Then I should have 1 scenario registered", - "content_type": "", - "line": 27 - }, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "When ", - "name": "I run feature suite", - "line": 35, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "Then ", - "name": "the suite should have failed", - "line": 36, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "And ", - "name": "the following step should be failed:", - "line": 37, - "doc_string": { - "value": "a failing step", - "content_type": "", - "line": 38 - }, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "And ", - "name": "the following steps should be skipped:", - "line": 41, - "doc_string": { - "value": "I parse features\nI should have 1 scenario registered", - "content_type": "", - "line": 42 - }, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - } - ] - }, - { - "id": "run-features;should-skip-all-scenarios-if-background-fails", - "keyword": "Scenario", - "name": "should skip all scenarios if background fails", - "description": "", - "line": 47, - "type": "scenario", - "steps": [ - { - "keyword": "Given ", - "name": "a feature \"failed.feature\" file:", - "line": 48, - "doc_string": { - "value": "Feature: failed feature\n\n Background:\n Given a failing step\n\n Scenario: parse a scenario\n Given a feature path \"features/load.feature:6\"\n When I parse features\n Then I should have 1 scenario registered", - "content_type": "", - "line": 49 - }, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "When ", - "name": "I run feature suite", - "line": 60, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "Then ", - "name": "the suite should have failed", - "line": 61, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "And ", - "name": "the following step should be failed:", - "line": 62, - "doc_string": { - "value": "a failing step", - "content_type": "", - "line": 63 - }, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "And ", - "name": "the following steps should be skipped:", - "line": 66, - "doc_string": { - "value": "a feature path \"features/load.feature:6\"\nI parse features\nI should have 1 scenario registered", - "content_type": "", - "line": 67 - }, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - } - ] - }, - { - "id": "run-features;should-skip-steps-after-undefined", - "keyword": "Scenario", - "name": "should skip steps after undefined", - "description": "", - "line": 73, - "type": "scenario", - "steps": [ - { - "keyword": "Given ", - "name": "a feature \"undefined.feature\" file:", - "line": 74, - "doc_string": { - "value": "Feature: undefined feature\n\n Scenario: parse a scenario\n Given a feature path \"features/load.feature:6\"\n When undefined action\n Then I should have 1 scenario registered", - "content_type": "", - "line": 75 - }, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "When ", - "name": "I run feature suite", - "line": 83, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "Then ", - "name": "the suite should have passed", - "line": 84, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "And ", - "name": "the following step should be passed:", - "line": 85, - "doc_string": { - "value": "a feature path \"features/load.feature:6\"", - "content_type": "", - "line": 86 - }, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "And ", - "name": "the following step should be undefined:", - "line": 89, - "doc_string": { - "value": "undefined action", - "content_type": "", - "line": 90 - }, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "And ", - "name": "the following step should be skipped:", - "line": 93, - "doc_string": { - "value": "I should have 1 scenario registered", - "content_type": "", - "line": 94 - }, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - } - ] - }, - { - "id": "run-features;should-match-undefined-steps-in-a-row", - "keyword": "Scenario", - "name": "should match undefined steps in a row", - "description": "", - "line": 98, - "type": "scenario", - "steps": [ - { - "keyword": "Given ", - "name": "a feature \"undefined.feature\" file:", - "line": 99, - "doc_string": { - "value": "Feature: undefined feature\n\n Scenario: parse a scenario\n Given undefined step\n When undefined action\n Then I should have 1 scenario registered", - "content_type": "", - "line": 100 - }, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "When ", - "name": "I run feature suite", - "line": 108, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "Then ", - "name": "the suite should have passed", - "line": 109, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "And ", - "name": "the following steps should be undefined:", - "line": 110, - "doc_string": { - "value": "undefined step\nundefined action", - "content_type": "", - "line": 111 - }, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "And ", - "name": "the following step should be skipped:", - "line": 115, - "doc_string": { - "value": "I should have 1 scenario registered", - "content_type": "", - "line": 116 - }, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - } - ] - }, - { - "id": "run-features;should-skip-steps-on-pending", - "keyword": "Scenario", - "name": "should skip steps on pending", - "description": "", - "line": 120, - "type": "scenario", - "steps": [ - { - "keyword": "Given ", - "name": "a feature \"pending.feature\" file:", - "line": 121, - "doc_string": { - "value": "Feature: pending feature\n\n Scenario: parse a scenario\n Given undefined step\n When pending step\n Then I should have 1 scenario registered", - "content_type": "", - "line": 122 - }, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "When ", - "name": "I run feature suite", - "line": 130, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "Then ", - "name": "the suite should have passed", - "line": 131, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "And ", - "name": "the following step should be undefined:", - "line": 132, - "doc_string": { - "value": "undefined step", - "content_type": "", - "line": 133 - }, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "And ", - "name": "the following step should be skipped:", - "line": 136, - "doc_string": { - "value": "pending step\nI should have 1 scenario registered", - "content_type": "", - "line": 137 - }, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - } - ] - }, - { - "id": "run-features;should-handle-pending-step", - "keyword": "Scenario", - "name": "should handle pending step", - "description": "", - "line": 142, - "type": "scenario", - "steps": [ - { - "keyword": "Given ", - "name": "a feature \"pending.feature\" file:", - "line": 143, - "doc_string": { - "value": "Feature: pending feature\n\n Scenario: parse a scenario\n Given a feature path \"features/load.feature:6\"\n When pending step\n Then I should have 1 scenario registered", - "content_type": "", - "line": 144 - }, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "When ", - "name": "I run feature suite", - "line": 152, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "Then ", - "name": "the suite should have passed", - "line": 153, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "And ", - "name": "the following step should be passed:", - "line": 154, - "doc_string": { - "value": "a feature path \"features/load.feature:6\"", - "content_type": "", - "line": 155 - }, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "And ", - "name": "the following step should be pending:", - "line": 158, - "doc_string": { - "value": "pending step", - "content_type": "", - "line": 159 - }, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "And ", - "name": "the following step should be skipped:", - "line": 162, - "doc_string": { - "value": "I should have 1 scenario registered", - "content_type": "", - "line": 163 - }, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - } - ] - }, - { - "id": "run-features;should-mark-undefined-steps-after-pending", - "keyword": "Scenario", - "name": "should mark undefined steps after pending", - "description": "", - "line": 167, - "type": "scenario", - "steps": [ - { - "keyword": "Given ", - "name": "a feature \"pending.feature\" file:", - "line": 168, - "doc_string": { - "value": "Feature: pending feature\n\n Scenario: parse a scenario\n Given pending step\n When undefined\n Then undefined 2\n And I should have 1 scenario registered", - "content_type": "", - "line": 169 - }, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "When ", - "name": "I run feature suite", - "line": 178, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "Then ", - "name": "the suite should have passed", - "line": 179, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "And ", - "name": "the following steps should be undefined:", - "line": 180, - "doc_string": { - "value": "undefined\nundefined 2", - "content_type": "", - "line": 181 - }, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "And ", - "name": "the following step should be pending:", - "line": 185, - "doc_string": { - "value": "pending step", - "content_type": "", - "line": 186 - }, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "And ", - "name": "the following step should be skipped:", - "line": 189, - "doc_string": { - "value": "I should have 1 scenario registered", - "content_type": "", - "line": 190 - }, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - } - ] - }, - { - "id": "run-features;should-fail-suite-if-undefined-steps-follow-after-the-failure", - "keyword": "Scenario", - "name": "should fail suite if undefined steps follow after the failure", - "description": "", - "line": 194, - "type": "scenario", - "steps": [ - { - "keyword": "Given ", - "name": "a feature \"failed.feature\" file:", - "line": 195, - "doc_string": { - "value": "Feature: failed feature\n\n Scenario: parse a scenario\n Given a failing step\n When an undefined step\n Then another undefined step", - "content_type": "", - "line": 196 - }, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "When ", - "name": "I run feature suite", - "line": 204, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "Then ", - "name": "the following step should be failed:", - "line": 205, - "doc_string": { - "value": "a failing step", - "content_type": "", - "line": 206 - }, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "And ", - "name": "the following steps should be undefined:", - "line": 209, - "doc_string": { - "value": "an undefined step\nanother undefined step", - "content_type": "", - "line": 210 - }, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "And ", - "name": "the suite should have failed", - "line": 214, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - } - ] - }, - { - "id": "run-features;should-fail-suite-and-skip-pending-step-after-failed-step", - "keyword": "Scenario", - "name": "should fail suite and skip pending step after failed step", - "description": "", - "line": 216, - "type": "scenario", - "steps": [ - { - "keyword": "Given ", - "name": "a feature \"failed.feature\" file:", - "line": 217, - "doc_string": { - "value": "Feature: failed feature\n\n Scenario: parse a scenario\n Given a failing step\n When pending step\n Then another undefined step", - "content_type": "", - "line": 218 - }, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "When ", - "name": "I run feature suite", - "line": 226, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "Then ", - "name": "the following step should be failed:", - "line": 227, - "doc_string": { - "value": "a failing step", - "content_type": "", - "line": 228 - }, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "And ", - "name": "the following steps should be skipped:", - "line": 231, - "doc_string": { - "value": "pending step", - "content_type": "", - "line": 232 - }, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "And ", - "name": "the following steps should be undefined:", - "line": 235, - "doc_string": { - "value": "another undefined step", - "content_type": "", - "line": 236 - }, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "And ", - "name": "the suite should have failed", - "line": 239, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - } - ] - }, - { - "id": "run-features;should-fail-suite-and-skip-next-step-after-failed-step", - "keyword": "Scenario", - "name": "should fail suite and skip next step after failed step", - "description": "", - "line": 241, - "type": "scenario", - "steps": [ - { - "keyword": "Given ", - "name": "a feature \"failed.feature\" file:", - "line": 242, - "doc_string": { - "value": "Feature: failed feature\n\n Scenario: parse a scenario\n Given a failing step\n When a failing step\n Then another undefined step", - "content_type": "", - "line": 243 - }, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "When ", - "name": "I run feature suite", - "line": 251, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "Then ", - "name": "the following step should be failed:", - "line": 252, - "doc_string": { - "value": "a failing step", - "content_type": "", - "line": 253 - }, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "And ", - "name": "the following steps should be skipped:", - "line": 256, - "doc_string": { - "value": "a failing step", - "content_type": "", - "line": 257 - }, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "And ", - "name": "the following steps should be undefined:", - "line": 260, - "doc_string": { - "value": "another undefined step", - "content_type": "", - "line": 261 - }, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "And ", - "name": "the suite should have failed", - "line": 264, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - } - ] + "result": { + "status": "passed", + "duration": 0 } - ] - }, - { - "uri": "features/snippets.feature", - "id": "undefined-step-snippets", - "keyword": "Feature", - "name": "undefined step snippets", - "description": " In order to implement step definitions faster\n As a test suite user\n I need to be able to get undefined step snippets", - "line": 1, - "elements": [ - { - "id": "undefined-step-snippets;should-generate-snippets", - "keyword": "Scenario", - "name": "should generate snippets", - "description": "", - "line": 6, - "type": "scenario", - "steps": [ - { - "keyword": "Given ", - "name": "a feature \"undefined.feature\" file:", - "line": 7, - "doc_string": { - "value": "Feature: undefined steps\n\n Scenario: get version number from api\n When I send \"GET\" request to \"/version\"\n Then the response code should be 200", - "content_type": "", - "line": 8 - }, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "When ", - "name": "I run feature suite", - "line": 15, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "Then ", - "name": "the following steps should be undefined:", - "line": 16, - "doc_string": { - "value": "I send \"GET\" request to \"/version\"\nthe response code should be 200", - "content_type": "", - "line": 17 - }, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "And ", - "name": "the undefined step snippets should be:", - "line": 21, - "doc_string": { - "value": "func iSendRequestTo(arg1, arg2 string) error {\n return godog.ErrPending\n}\n\nfunc theResponseCodeShouldBe(arg1 int) error {\n return godog.ErrPending\n}\n\nfunc FeatureContext(s *godog.Suite) {\n s.Step(`^I send \"([^\"]*)\" request to \"([^\"]*)\"$`, iSendRequestTo)\n s.Step(`^the response code should be (\\d+)$`, theResponseCodeShouldBe)\n}", - "content_type": "", - "line": 22 - }, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - } - ] + }, + { + "keyword": "Then ", + "name": "I should have 13 feature files:", + "line": 9, + "doc_string": { + "value": "features/background.feature\nfeatures/events.feature\nfeatures/formatter/cucumber.feature\nfeatures/formatter/events.feature\nfeatures/formatter/junit.feature\nfeatures/formatter/pretty.feature\nfeatures/lang.feature\nfeatures/load.feature\nfeatures/multistep.feature\nfeatures/outline.feature\nfeatures/run.feature\nfeatures/snippets.feature\nfeatures/tags.feature", + "content_type": "", + "line": 10 }, - { - "id": "undefined-step-snippets;should-generate-snippets-with-more-arguments", - "keyword": "Scenario", - "name": "should generate snippets with more arguments", - "description": "", - "line": 37, - "type": "scenario", - "steps": [ - { - "keyword": "Given ", - "name": "a feature \"undefined.feature\" file:", - "line": 38, - "doc_string": { - "value": "Feature: undefined steps\n\n Scenario: get version number from api\n When I send \"GET\" request to \"/version\" with:\n | col1 | val1 |\n | col2 | val2 |\n Then the response code should be 200 and header \"X-Powered-By\" should be \"godog\"", - "content_type": "", - "line": 39 - }, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "When ", - "name": "I run feature suite", - "line": 48, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "Then ", - "name": "the undefined step snippets should be:", - "line": 49, - "doc_string": { - "value": "func iSendRequestToWith(arg1, arg2 string, arg3 *gherkin.DataTable) error {\n return godog.ErrPending\n}\n\nfunc theResponseCodeShouldBeAndHeaderShouldBe(arg1 int, arg2, arg3 string) error {\n return godog.ErrPending\n}\n\nfunc FeatureContext(s *godog.Suite) {\n s.Step(`^I send \"([^\"]*)\" request to \"([^\"]*)\" with:$`, iSendRequestToWith)\n s.Step(`^the response code should be (\\d+) and header \"([^\"]*)\" should be \"([^\"]*)\"$`, theResponseCodeShouldBeAndHeaderShouldBe)\n}", - "content_type": "", - "line": 50 - }, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - } - ] + "match": { + "location": "suite_context.go:0" }, - { - "id": "undefined-step-snippets;should-handle-escaped-symbols", - "keyword": "Scenario", - "name": "should handle escaped symbols", - "description": "", - "line": 65, - "type": "scenario", - "steps": [ - { - "keyword": "Given ", - "name": "a feature \"undefined.feature\" file:", - "line": 66, - "doc_string": { - "value": "Feature: undefined steps\n\n Scenario: get version number from api\n When I pull from github.com\n Then the project should be there", - "content_type": "", - "line": 67 - }, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "When ", - "name": "I run feature suite", - "line": 74, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "Then ", - "name": "the following steps should be undefined:", - "line": 75, - "doc_string": { - "value": "I pull from github.com\nthe project should be there", - "content_type": "", - "line": 76 - }, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "And ", - "name": "the undefined step snippets should be:", - "line": 80, - "doc_string": { - "value": "func iPullFromGithubcom() error {\n return godog.ErrPending\n}\n\nfunc theProjectShouldBeThere() error {\n return godog.ErrPending\n}\n\nfunc FeatureContext(s *godog.Suite) {\n s.Step(`^I pull from github\\.com$`, iPullFromGithubcom)\n s.Step(`^the project should be there$`, theProjectShouldBeThere)\n}", - "content_type": "", - "line": 81 - }, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - } - ] - }, - { - "id": "undefined-step-snippets;should-handle-string-argument-followed-by-comma", - "keyword": "Scenario", - "name": "should handle string argument followed by comma", - "description": "", - "line": 96, - "type": "scenario", - "steps": [ - { - "keyword": "Given ", - "name": "a feature \"undefined.feature\" file:", - "line": 97, - "doc_string": { - "value": "Feature: undefined\n\n Scenario: add item to basket\n Given there is a \"Sith Lord Lightsaber\", which costs £5\n When I add the \"Sith Lord Lightsaber\" to the basket", - "content_type": "", - "line": 98 - }, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "When ", - "name": "I run feature suite", - "line": 105, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "And ", - "name": "the undefined step snippets should be:", - "line": 106, - "doc_string": { - "value": "func thereIsAWhichCosts(arg1 string, arg2 int) error {\n return godog.ErrPending\n}\n\nfunc iAddTheToTheBasket(arg1 string) error {\n return godog.ErrPending\n}\n\nfunc FeatureContext(s *godog.Suite) {\n s.Step(`^there is a \"([^\"]*)\", which costs £(\\d+)$`, thereIsAWhichCosts)\n s.Step(`^I add the \"([^\"]*)\" to the basket$`, iAddTheToTheBasket)\n}", - "content_type": "", - "line": 107 - }, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - } - ] - }, - { - "id": "undefined-step-snippets;should-handle-arguments-in-the-beggining-or-end-of-the-step", - "keyword": "Scenario", - "name": "should handle arguments in the beggining or end of the step", - "description": "", - "line": 122, - "type": "scenario", - "steps": [ - { - "keyword": "Given ", - "name": "a feature \"undefined.feature\" file:", - "line": 123, - "doc_string": { - "value": "Feature: undefined\n\n Scenario: add item to basket\n Given \"Sith Lord Lightsaber\", which costs £5\n And 12 godogs", - "content_type": "", - "line": 124 - }, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "When ", - "name": "I run feature suite", - "line": 131, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "And ", - "name": "the undefined step snippets should be:", - "line": 132, - "doc_string": { - "value": "func whichCosts(arg1 string, arg2 int) error {\n return godog.ErrPending\n}\n\nfunc godogs(arg1 int) error {\n return godog.ErrPending\n}\n\nfunc FeatureContext(s *godog.Suite) {\n s.Step(`^\"([^\"]*)\", which costs £(\\d+)$`, whichCosts)\n s.Step(`^(\\d+) godogs$`, godogs)\n}", - "content_type": "", - "line": 133 - }, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - } - ] + "result": { + "status": "passed", + "duration": 0 } + } ] - }, - { - "uri": "features/tags.feature", - "id": "tag-filters", - "keyword": "Feature", - "name": "tag filters", - "description": " In order to test application behavior\n As a test suite\n I need to be able to filter features and scenarios by tags", - "line": 1, - "elements": [ - { - "id": "tag-filters;should-filter-outline-examples-by-tags", - "keyword": "Scenario", - "name": "should filter outline examples by tags", - "description": "", - "line": 6, - "type": "scenario", - "steps": [ - { - "keyword": "Given ", - "name": "a feature \"normal.feature\" file:", - "line": 7, - "doc_string": { - "value": "Feature: outline\n\n Background:\n Given passing step\n\n Scenario Outline: parse a scenario\n Given a feature path \"\u003cpath\u003e\"\n When I parse features\n Then I should have \u003cnum\u003e scenario registered\n\n Examples:\n | path | num |\n | features/load.feature:3 | 0 |\n\n @used\n Examples:\n | path | num |\n | features/load.feature:6 | 1 |", - "content_type": "", - "line": 8 - }, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "When ", - "name": "I run feature suite with tags \"@used\"", - "line": 28, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "Then ", - "name": "the suite should have passed", - "line": 29, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "And ", - "name": "the following steps should be passed:", - "line": 30, - "doc_string": { - "value": "I parse features\na feature path \"features/load.feature:6\"\nI should have 1 scenario registered", - "content_type": "", - "line": 31 - }, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "And ", - "name": "I should have 1 scenario registered", - "line": 36, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - } - ] + }, + { + "id": "load-features;load-a-specific-feature-file", + "keyword": "Scenario", + "name": "load a specific feature file", + "description": "", + "line": 26, + "type": "scenario", + "steps": [ + { + "keyword": "Given ", + "name": "a feature path \"features/load.feature\"", + "line": 27, + "match": { + "location": "suite_context.go:0" }, - { - "id": "tag-filters;should-filter-scenarios-by-x-tag", - "keyword": "Scenario", - "name": "should filter scenarios by X tag", - "description": "", - "line": 38, - "type": "scenario", - "steps": [ - { - "keyword": "Given ", - "name": "a feature \"normal.feature\" file:", - "line": 39, - "doc_string": { - "value": "Feature: tagged\n\n @x\n Scenario: one\n Given a feature path \"one\"\n\n @x\n Scenario: two\n Given a feature path \"two\"\n\n @x @y\n Scenario: three\n Given a feature path \"three\"\n\n @y\n Scenario: four\n Given a feature path \"four\"", - "content_type": "", - "line": 40 - }, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "When ", - "name": "I run feature suite with tags \"@x\"", - "line": 59, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "Then ", - "name": "the suite should have passed", - "line": 60, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "And ", - "name": "I should have 3 scenario registered", - "line": 61, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "And ", - "name": "the following steps should be passed:", - "line": 62, - "doc_string": { - "value": "a feature path \"one\"\na feature path \"two\"\na feature path \"three\"", - "content_type": "", - "line": 63 - }, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - } - ] - }, - { - "id": "tag-filters;should-filter-scenarios-by-x-tag-not-having-y", - "keyword": "Scenario", - "name": "should filter scenarios by X tag not having Y", - "description": "", - "line": 69, - "type": "scenario", - "steps": [ - { - "keyword": "Given ", - "name": "a feature \"normal.feature\" file:", - "line": 70, - "doc_string": { - "value": "Feature: tagged\n\n @x\n Scenario: one\n Given a feature path \"one\"\n\n @x\n Scenario: two\n Given a feature path \"two\"\n\n @x @y\n Scenario: three\n Given a feature path \"three\"\n\n @y @z\n Scenario: four\n Given a feature path \"four\"", - "content_type": "", - "line": 71 - }, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "When ", - "name": "I run feature suite with tags \"@x \u0026\u0026 ~@y\"", - "line": 90, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "Then ", - "name": "the suite should have passed", - "line": 91, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "And ", - "name": "I should have 2 scenario registered", - "line": 92, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "And ", - "name": "the following steps should be passed:", - "line": 93, - "doc_string": { - "value": "a feature path \"one\"\na feature path \"two\"", - "content_type": "", - "line": 94 - }, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - } - ] - }, - { - "id": "tag-filters;should-filter-scenarios-having-y-and-z-tags", - "keyword": "Scenario", - "name": "should filter scenarios having Y and Z tags", - "description": "", - "line": 99, - "type": "scenario", - "steps": [ - { - "keyword": "Given ", - "name": "a feature \"normal.feature\" file:", - "line": 100, - "doc_string": { - "value": "Feature: tagged\n\n @x\n Scenario: one\n Given a feature path \"one\"\n\n @x\n Scenario: two\n Given a feature path \"two\"\n\n @x @y\n Scenario: three\n Given a feature path \"three\"\n\n @y @z\n Scenario: four\n Given a feature path \"four\"", - "content_type": "", - "line": 101 - }, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "When ", - "name": "I run feature suite with tags \"@y \u0026\u0026 @z\"", - "line": 120, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "Then ", - "name": "the suite should have passed", - "line": 121, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "And ", - "name": "I should have 1 scenario registered", - "line": 122, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - }, - { - "keyword": "And ", - "name": "the following steps should be passed:", - "line": 123, - "doc_string": { - "value": "a feature path \"four\"", - "content_type": "", - "line": 124 - }, - "match": { - "location": "suite_context.go:0" - }, - "result": { - "status": "passed", - "duration": 0 - } - } - ] + "result": { + "status": "passed", + "duration": 0 } + }, + { + "keyword": "When ", + "name": "I parse features", + "line": 28, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + }, + { + "keyword": "Then ", + "name": "I should have 1 feature file:", + "line": 29, + "doc_string": { + "value": "features/load.feature", + "content_type": "", + "line": 30 + }, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + } ] - } + }, + { + "id": "load-features;loaded-feature-should-have-a-number-of-scenarios;;2", + "keyword": "Scenario Outline", + "name": "loaded feature should have a number of scenarios", + "description": "", + "line": 41, + "type": "scenario", + "steps": [ + { + "keyword": "Given ", + "name": "a feature path \"features/load.feature:3\"", + "line": 41, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + }, + { + "keyword": "When ", + "name": "I parse features", + "line": 41, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + }, + { + "keyword": "Then ", + "name": "I should have 0 scenario registered", + "line": 41, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + } + ] + }, + { + "id": "load-features;loaded-feature-should-have-a-number-of-scenarios;;3", + "keyword": "Scenario Outline", + "name": "loaded feature should have a number of scenarios", + "description": "", + "line": 42, + "type": "scenario", + "steps": [ + { + "keyword": "Given ", + "name": "a feature path \"features/load.feature:6\"", + "line": 42, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + }, + { + "keyword": "When ", + "name": "I parse features", + "line": 42, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + }, + { + "keyword": "Then ", + "name": "I should have 1 scenario registered", + "line": 42, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + } + ] + }, + { + "id": "load-features;loaded-feature-should-have-a-number-of-scenarios;;4", + "keyword": "Scenario Outline", + "name": "loaded feature should have a number of scenarios", + "description": "", + "line": 43, + "type": "scenario", + "steps": [ + { + "keyword": "Given ", + "name": "a feature path \"features/load.feature\"", + "line": 43, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + }, + { + "keyword": "When ", + "name": "I parse features", + "line": 43, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + }, + { + "keyword": "Then ", + "name": "I should have 4 scenario registered", + "line": 43, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + } + ] + }, + { + "id": "load-features;load-a-number-of-feature-files", + "keyword": "Scenario", + "name": "load a number of feature files", + "description": "", + "line": 45, + "type": "scenario", + "steps": [ + { + "keyword": "Given ", + "name": "a feature path \"features/load.feature\"", + "line": 46, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + }, + { + "keyword": "And ", + "name": "a feature path \"features/events.feature\"", + "line": 47, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + }, + { + "keyword": "When ", + "name": "I parse features", + "line": 48, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + }, + { + "keyword": "Then ", + "name": "I should have 2 feature files:", + "line": 49, + "doc_string": { + "value": "features/events.feature\nfeatures/load.feature", + "content_type": "", + "line": 50 + }, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + } + ] + } + ] + }, + { + "uri": "features/multistep.feature", + "id": "run-features-with-nested-steps", + "keyword": "Feature", + "name": "run features with nested steps", + "description": " In order to test multisteps\n As a test suite\n I need to be able to execute multisteps", + "line": 1, + "elements": [ + { + "id": "run-features-with-nested-steps;should-run-passing-multistep-successfully", + "keyword": "Scenario", + "name": "should run passing multistep successfully", + "description": "", + "line": 6, + "type": "scenario", + "steps": [ + { + "keyword": "Given ", + "name": "a feature \"normal.feature\" file:", + "line": 7, + "doc_string": { + "value": "Feature: normal feature\n\n Scenario: run passing multistep\n Given passing step\n Then passing multistep", + "content_type": "", + "line": 8 + }, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + }, + { + "keyword": "When ", + "name": "I run feature suite", + "line": 15, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + }, + { + "keyword": "Then ", + "name": "the suite should have passed", + "line": 16, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + }, + { + "keyword": "And ", + "name": "the following steps should be passed:", + "line": 17, + "doc_string": { + "value": "passing step\npassing multistep", + "content_type": "", + "line": 18 + }, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + } + ] + }, + { + "id": "run-features-with-nested-steps;should-fail-multistep", + "keyword": "Scenario", + "name": "should fail multistep", + "description": "", + "line": 23, + "type": "scenario", + "steps": [ + { + "keyword": "Given ", + "name": "a feature \"failed.feature\" file:", + "line": 24, + "doc_string": { + "value": "Feature: failed feature\n\n Scenario: run failing multistep\n Given passing step\n When failing multistep\n Then I should have 1 scenario registered", + "content_type": "", + "line": 25 + }, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + }, + { + "keyword": "When ", + "name": "I run feature suite", + "line": 33, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + }, + { + "keyword": "Then ", + "name": "the suite should have failed", + "line": 34, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + }, + { + "keyword": "And ", + "name": "the following step should be failed:", + "line": 35, + "doc_string": { + "value": "failing multistep", + "content_type": "", + "line": 36 + }, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + }, + { + "keyword": "And ", + "name": "the following steps should be skipped:", + "line": 39, + "doc_string": { + "value": "I should have 1 scenario registered", + "content_type": "", + "line": 40 + }, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + }, + { + "keyword": "And ", + "name": "the following steps should be passed:", + "line": 43, + "doc_string": { + "value": "passing step", + "content_type": "", + "line": 44 + }, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + } + ] + }, + { + "id": "run-features-with-nested-steps;should-fail-nested-multistep", + "keyword": "Scenario", + "name": "should fail nested multistep", + "description": "", + "line": 48, + "type": "scenario", + "steps": [ + { + "keyword": "Given ", + "name": "a feature \"failed.feature\" file:", + "line": 49, + "doc_string": { + "value": "Feature: failed feature\n\n Scenario: run failing nested multistep\n Given failing nested multistep\n When passing step", + "content_type": "", + "line": 50 + }, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + }, + { + "keyword": "When ", + "name": "I run feature suite", + "line": 57, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + }, + { + "keyword": "Then ", + "name": "the suite should have failed", + "line": 58, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + }, + { + "keyword": "And ", + "name": "the following step should be failed:", + "line": 59, + "doc_string": { + "value": "failing nested multistep", + "content_type": "", + "line": 60 + }, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + }, + { + "keyword": "And ", + "name": "the following steps should be skipped:", + "line": 63, + "doc_string": { + "value": "passing step", + "content_type": "", + "line": 64 + }, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + } + ] + }, + { + "id": "run-features-with-nested-steps;should-skip-steps-after-undefined-multistep", + "keyword": "Scenario", + "name": "should skip steps after undefined multistep", + "description": "", + "line": 68, + "type": "scenario", + "steps": [ + { + "keyword": "Given ", + "name": "a feature \"undefined.feature\" file:", + "line": 69, + "doc_string": { + "value": "Feature: run undefined multistep\n\n Scenario: run undefined multistep\n Given passing step\n When undefined multistep\n Then passing multistep", + "content_type": "", + "line": 70 + }, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + }, + { + "keyword": "When ", + "name": "I run feature suite", + "line": 78, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + }, + { + "keyword": "Then ", + "name": "the suite should have passed", + "line": 79, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + }, + { + "keyword": "And ", + "name": "the following step should be passed:", + "line": 80, + "doc_string": { + "value": "passing step", + "content_type": "", + "line": 81 + }, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + }, + { + "keyword": "And ", + "name": "the following step should be undefined:", + "line": 84, + "doc_string": { + "value": "undefined multistep", + "content_type": "", + "line": 85 + }, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + }, + { + "keyword": "And ", + "name": "the following step should be skipped:", + "line": 88, + "doc_string": { + "value": "passing multistep", + "content_type": "", + "line": 89 + }, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + } + ] + }, + { + "id": "run-features-with-nested-steps;should-match-undefined-steps-in-a-row", + "keyword": "Scenario", + "name": "should match undefined steps in a row", + "description": "", + "line": 93, + "type": "scenario", + "steps": [ + { + "keyword": "Given ", + "name": "a feature \"undefined.feature\" file:", + "line": 94, + "doc_string": { + "value": "Feature: undefined feature\n\n Scenario: parse a scenario\n Given undefined step\n When undefined multistep\n Then I should have 1 scenario registered", + "content_type": "", + "line": 95 + }, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + }, + { + "keyword": "When ", + "name": "I run feature suite", + "line": 103, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + }, + { + "keyword": "Then ", + "name": "the suite should have passed", + "line": 104, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + }, + { + "keyword": "And ", + "name": "the following steps should be undefined:", + "line": 105, + "doc_string": { + "value": "undefined step\nundefined multistep", + "content_type": "", + "line": 106 + }, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + }, + { + "keyword": "And ", + "name": "the following step should be skipped:", + "line": 110, + "doc_string": { + "value": "I should have 1 scenario registered", + "content_type": "", + "line": 111 + }, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + } + ] + }, + { + "id": "run-features-with-nested-steps;should-mark-undefined-steps-after-pending", + "keyword": "Scenario", + "name": "should mark undefined steps after pending", + "description": "", + "line": 115, + "type": "scenario", + "steps": [ + { + "keyword": "Given ", + "name": "a feature \"pending.feature\" file:", + "line": 116, + "doc_string": { + "value": "Feature: pending feature\n\n Scenario: parse a scenario\n Given pending step\n When undefined step\n Then undefined multistep\n And I should have 1 scenario registered", + "content_type": "", + "line": 117 + }, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + }, + { + "keyword": "When ", + "name": "I run feature suite", + "line": 126, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + }, + { + "keyword": "Then ", + "name": "the suite should have passed", + "line": 127, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + }, + { + "keyword": "And ", + "name": "the following steps should be undefined:", + "line": 128, + "doc_string": { + "value": "undefined step\nundefined multistep", + "content_type": "", + "line": 129 + }, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + }, + { + "keyword": "And ", + "name": "the following step should be pending:", + "line": 133, + "doc_string": { + "value": "pending step", + "content_type": "", + "line": 134 + }, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + }, + { + "keyword": "And ", + "name": "the following step should be skipped:", + "line": 137, + "doc_string": { + "value": "I should have 1 scenario registered", + "content_type": "", + "line": 138 + }, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + } + ] + } + ] + }, + { + "uri": "features/outline.feature", + "id": "run-outline", + "keyword": "Feature", + "name": "run outline", + "description": " In order to test application behavior\n As a test suite\n I need to be able to run outline scenarios", + "line": 1, + "elements": [ + { + "id": "run-outline;should-run-a-normal-outline", + "keyword": "Scenario", + "name": "should run a normal outline", + "description": "", + "line": 6, + "type": "scenario", + "steps": [ + { + "keyword": "Given ", + "name": "a feature \"normal.feature\" file:", + "line": 7, + "doc_string": { + "value": "Feature: outline\n\n Background:\n Given passing step\n\n Scenario Outline: parse a scenario\n Given a feature path \"\u003cpath\u003e\"\n When I parse features\n Then I should have \u003cnum\u003e scenario registered\n\n Examples:\n | path | num |\n | features/load.feature:6 | 1 |\n | features/load.feature:3 | 0 |", + "content_type": "", + "line": 8 + }, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + }, + { + "keyword": "When ", + "name": "I run feature suite", + "line": 24, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + }, + { + "keyword": "Then ", + "name": "the suite should have passed", + "line": 25, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + }, + { + "keyword": "And ", + "name": "the following steps should be passed:", + "line": 26, + "doc_string": { + "value": "a passing step\nI parse features\na feature path \"features/load.feature:6\"\na feature path \"features/load.feature:3\"\nI should have 1 scenario registered\nI should have 0 scenario registered", + "content_type": "", + "line": 27 + }, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + } + ] + }, + { + "id": "run-outline;should-continue-through-examples-on-failure", + "keyword": "Scenario", + "name": "should continue through examples on failure", + "description": "", + "line": 36, + "type": "scenario", + "steps": [ + { + "keyword": "Given ", + "name": "a feature \"normal.feature\" file:", + "line": 37, + "doc_string": { + "value": "Feature: outline\n\n Background:\n Given passing step\n\n Scenario Outline: parse a scenario\n Given a feature path \"\u003cpath\u003e\"\n When I parse features\n Then I should have \u003cnum\u003e scenario registered\n\n Examples:\n | path | num |\n | features/load.feature:6 | 5 |\n | features/load.feature:3 | 0 |", + "content_type": "", + "line": 38 + }, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + }, + { + "keyword": "When ", + "name": "I run feature suite", + "line": 54, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + }, + { + "keyword": "Then ", + "name": "the suite should have failed", + "line": 55, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + }, + { + "keyword": "And ", + "name": "the following steps should be passed:", + "line": 56, + "doc_string": { + "value": "a passing step\nI parse features\na feature path \"features/load.feature:6\"\na feature path \"features/load.feature:3\"\nI should have 0 scenario registered", + "content_type": "", + "line": 57 + }, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + }, + { + "keyword": "And ", + "name": "the following steps should be failed:", + "line": 64, + "doc_string": { + "value": "I should have 5 scenario registered", + "content_type": "", + "line": 65 + }, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + } + ] + }, + { + "id": "run-outline;should-skip-examples-on-background-failure", + "keyword": "Scenario", + "name": "should skip examples on background failure", + "description": "", + "line": 69, + "type": "scenario", + "steps": [ + { + "keyword": "Given ", + "name": "a feature \"normal.feature\" file:", + "line": 70, + "doc_string": { + "value": "Feature: outline\n\n Background:\n Given a failing step\n\n Scenario Outline: parse a scenario\n Given a feature path \"\u003cpath\u003e\"\n When I parse features\n Then I should have \u003cnum\u003e scenario registered\n\n Examples:\n | path | num |\n | features/load.feature:6 | 1 |\n | features/load.feature:3 | 0 |", + "content_type": "", + "line": 71 + }, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + }, + { + "keyword": "When ", + "name": "I run feature suite", + "line": 87, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + }, + { + "keyword": "Then ", + "name": "the suite should have failed", + "line": 88, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + }, + { + "keyword": "And ", + "name": "the following steps should be skipped:", + "line": 89, + "doc_string": { + "value": "I parse features\na feature path \"features/load.feature:6\"\na feature path \"features/load.feature:3\"\nI should have 0 scenario registered\nI should have 1 scenario registered", + "content_type": "", + "line": 90 + }, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + }, + { + "keyword": "And ", + "name": "the following steps should be failed:", + "line": 97, + "doc_string": { + "value": "a failing step", + "content_type": "", + "line": 98 + }, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + } + ] + }, + { + "id": "run-outline;should-translate-step-table-body", + "keyword": "Scenario", + "name": "should translate step table body", + "description": "", + "line": 102, + "type": "scenario", + "steps": [ + { + "keyword": "Given ", + "name": "a feature \"normal.feature\" file:", + "line": 103, + "doc_string": { + "value": "Feature: outline\n\n Background:\n Given I'm listening to suite events\n\n Scenario Outline: run with events\n Given a feature path \"\u003cpath\u003e\"\n When I run feature suite\n Then these events had to be fired for a number of times:\n | BeforeScenario | \u003cscen\u003e |\n | BeforeStep | \u003cstep\u003e |\n\n Examples:\n | path | scen | step |\n | features/load.feature:6 | 1 | 3 |\n | features/load.feature | 6 | 19 |", + "content_type": "", + "line": 104 + }, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + }, + { + "keyword": "When ", + "name": "I run feature suite", + "line": 122, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + }, + { + "keyword": "Then ", + "name": "the suite should have passed", + "line": 123, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + }, + { + "keyword": "And ", + "name": "the following steps should be passed:", + "line": 124, + "doc_string": { + "value": "I'm listening to suite events\nI run feature suite\na feature path \"features/load.feature:6\"\na feature path \"features/load.feature\"", + "content_type": "", + "line": 125 + }, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + } + ] + }, + { + "id": "run-outline;should-translate-step-doc-string-argument;;2", + "keyword": "Scenario Outline", + "name": "should translate step doc string argument", + "description": "", + "line": 151, + "type": "scenario", + "steps": [ + { + "keyword": "Given ", + "name": "a feature \"normal.feature\" file:", + "line": 151, + "doc_string": { + "value": "Feature: scenario events\n\n Background:\n Given I'm listening to suite events\n\n Scenario: run with events\n Given a feature path \"features/load.feature:6\"\n When I run feature suite\n Then these events had to be fired for a number of times:\n | BeforeScenario | 1 |", + "content_type": "", + "line": 134 + }, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + }, + { + "keyword": "When ", + "name": "I run feature suite", + "line": 151, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + }, + { + "keyword": "Then ", + "name": "the suite should have passed", + "line": 151, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + } + ] + }, + { + "id": "run-outline;should-translate-step-doc-string-argument;;3", + "keyword": "Scenario Outline", + "name": "should translate step doc string argument", + "description": "", + "line": 152, + "type": "scenario", + "steps": [ + { + "keyword": "Given ", + "name": "a feature \"normal.feature\" file:", + "line": 152, + "doc_string": { + "value": "Feature: scenario events\n\n Background:\n Given I'm listening to suite events\n\n Scenario: run with events\n Given a feature path \"features/load.feature\"\n When I run feature suite\n Then these events had to be fired for a number of times:\n | BeforeScenario | 6 |", + "content_type": "", + "line": 134 + }, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + }, + { + "keyword": "When ", + "name": "I run feature suite", + "line": 152, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + }, + { + "keyword": "Then ", + "name": "the suite should have passed", + "line": 152, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + } + ] + } + ] + }, + { + "uri": "features/run.feature", + "id": "run-features", + "keyword": "Feature", + "name": "run features", + "description": " In order to test application behavior\n As a test suite\n I need to be able to run features", + "line": 1, + "elements": [ + { + "id": "run-features;should-run-a-normal-feature", + "keyword": "Scenario", + "name": "should run a normal feature", + "description": "", + "line": 6, + "type": "scenario", + "steps": [ + { + "keyword": "Given ", + "name": "a feature \"normal.feature\" file:", + "line": 7, + "doc_string": { + "value": "Feature: normal feature\n\n Scenario: parse a scenario\n Given a feature path \"features/load.feature:6\"\n When I parse features\n Then I should have 1 scenario registered", + "content_type": "", + "line": 8 + }, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + }, + { + "keyword": "When ", + "name": "I run feature suite", + "line": 16, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + }, + { + "keyword": "Then ", + "name": "the suite should have passed", + "line": 17, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + }, + { + "keyword": "And ", + "name": "the following steps should be passed:", + "line": 18, + "doc_string": { + "value": "a feature path \"features/load.feature:6\"\nI parse features\nI should have 1 scenario registered", + "content_type": "", + "line": 19 + }, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + } + ] + }, + { + "id": "run-features;should-skip-steps-after-failure", + "keyword": "Scenario", + "name": "should skip steps after failure", + "description": "", + "line": 25, + "type": "scenario", + "steps": [ + { + "keyword": "Given ", + "name": "a feature \"failed.feature\" file:", + "line": 26, + "doc_string": { + "value": "Feature: failed feature\n\n Scenario: parse a scenario\n Given a failing step\n When I parse features\n Then I should have 1 scenario registered", + "content_type": "", + "line": 27 + }, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + }, + { + "keyword": "When ", + "name": "I run feature suite", + "line": 35, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + }, + { + "keyword": "Then ", + "name": "the suite should have failed", + "line": 36, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + }, + { + "keyword": "And ", + "name": "the following step should be failed:", + "line": 37, + "doc_string": { + "value": "a failing step", + "content_type": "", + "line": 38 + }, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + }, + { + "keyword": "And ", + "name": "the following steps should be skipped:", + "line": 41, + "doc_string": { + "value": "I parse features\nI should have 1 scenario registered", + "content_type": "", + "line": 42 + }, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + } + ] + }, + { + "id": "run-features;should-skip-all-scenarios-if-background-fails", + "keyword": "Scenario", + "name": "should skip all scenarios if background fails", + "description": "", + "line": 47, + "type": "scenario", + "steps": [ + { + "keyword": "Given ", + "name": "a feature \"failed.feature\" file:", + "line": 48, + "doc_string": { + "value": "Feature: failed feature\n\n Background:\n Given a failing step\n\n Scenario: parse a scenario\n Given a feature path \"features/load.feature:6\"\n When I parse features\n Then I should have 1 scenario registered", + "content_type": "", + "line": 49 + }, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + }, + { + "keyword": "When ", + "name": "I run feature suite", + "line": 60, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + }, + { + "keyword": "Then ", + "name": "the suite should have failed", + "line": 61, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + }, + { + "keyword": "And ", + "name": "the following step should be failed:", + "line": 62, + "doc_string": { + "value": "a failing step", + "content_type": "", + "line": 63 + }, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + }, + { + "keyword": "And ", + "name": "the following steps should be skipped:", + "line": 66, + "doc_string": { + "value": "a feature path \"features/load.feature:6\"\nI parse features\nI should have 1 scenario registered", + "content_type": "", + "line": 67 + }, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + } + ] + }, + { + "id": "run-features;should-skip-steps-after-undefined", + "keyword": "Scenario", + "name": "should skip steps after undefined", + "description": "", + "line": 73, + "type": "scenario", + "steps": [ + { + "keyword": "Given ", + "name": "a feature \"undefined.feature\" file:", + "line": 74, + "doc_string": { + "value": "Feature: undefined feature\n\n Scenario: parse a scenario\n Given a feature path \"features/load.feature:6\"\n When undefined action\n Then I should have 1 scenario registered", + "content_type": "", + "line": 75 + }, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + }, + { + "keyword": "When ", + "name": "I run feature suite", + "line": 83, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + }, + { + "keyword": "Then ", + "name": "the suite should have passed", + "line": 84, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + }, + { + "keyword": "And ", + "name": "the following step should be passed:", + "line": 85, + "doc_string": { + "value": "a feature path \"features/load.feature:6\"", + "content_type": "", + "line": 86 + }, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + }, + { + "keyword": "And ", + "name": "the following step should be undefined:", + "line": 89, + "doc_string": { + "value": "undefined action", + "content_type": "", + "line": 90 + }, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + }, + { + "keyword": "And ", + "name": "the following step should be skipped:", + "line": 93, + "doc_string": { + "value": "I should have 1 scenario registered", + "content_type": "", + "line": 94 + }, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + } + ] + }, + { + "id": "run-features;should-match-undefined-steps-in-a-row", + "keyword": "Scenario", + "name": "should match undefined steps in a row", + "description": "", + "line": 98, + "type": "scenario", + "steps": [ + { + "keyword": "Given ", + "name": "a feature \"undefined.feature\" file:", + "line": 99, + "doc_string": { + "value": "Feature: undefined feature\n\n Scenario: parse a scenario\n Given undefined step\n When undefined action\n Then I should have 1 scenario registered", + "content_type": "", + "line": 100 + }, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + }, + { + "keyword": "When ", + "name": "I run feature suite", + "line": 108, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + }, + { + "keyword": "Then ", + "name": "the suite should have passed", + "line": 109, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + }, + { + "keyword": "And ", + "name": "the following steps should be undefined:", + "line": 110, + "doc_string": { + "value": "undefined step\nundefined action", + "content_type": "", + "line": 111 + }, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + }, + { + "keyword": "And ", + "name": "the following step should be skipped:", + "line": 115, + "doc_string": { + "value": "I should have 1 scenario registered", + "content_type": "", + "line": 116 + }, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + } + ] + }, + { + "id": "run-features;should-skip-steps-on-pending", + "keyword": "Scenario", + "name": "should skip steps on pending", + "description": "", + "line": 120, + "type": "scenario", + "steps": [ + { + "keyword": "Given ", + "name": "a feature \"pending.feature\" file:", + "line": 121, + "doc_string": { + "value": "Feature: pending feature\n\n Scenario: parse a scenario\n Given undefined step\n When pending step\n Then I should have 1 scenario registered", + "content_type": "", + "line": 122 + }, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + }, + { + "keyword": "When ", + "name": "I run feature suite", + "line": 130, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + }, + { + "keyword": "Then ", + "name": "the suite should have passed", + "line": 131, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + }, + { + "keyword": "And ", + "name": "the following step should be undefined:", + "line": 132, + "doc_string": { + "value": "undefined step", + "content_type": "", + "line": 133 + }, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + }, + { + "keyword": "And ", + "name": "the following step should be skipped:", + "line": 136, + "doc_string": { + "value": "pending step\nI should have 1 scenario registered", + "content_type": "", + "line": 137 + }, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + } + ] + }, + { + "id": "run-features;should-handle-pending-step", + "keyword": "Scenario", + "name": "should handle pending step", + "description": "", + "line": 142, + "type": "scenario", + "steps": [ + { + "keyword": "Given ", + "name": "a feature \"pending.feature\" file:", + "line": 143, + "doc_string": { + "value": "Feature: pending feature\n\n Scenario: parse a scenario\n Given a feature path \"features/load.feature:6\"\n When pending step\n Then I should have 1 scenario registered", + "content_type": "", + "line": 144 + }, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + }, + { + "keyword": "When ", + "name": "I run feature suite", + "line": 152, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + }, + { + "keyword": "Then ", + "name": "the suite should have passed", + "line": 153, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + }, + { + "keyword": "And ", + "name": "the following step should be passed:", + "line": 154, + "doc_string": { + "value": "a feature path \"features/load.feature:6\"", + "content_type": "", + "line": 155 + }, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + }, + { + "keyword": "And ", + "name": "the following step should be pending:", + "line": 158, + "doc_string": { + "value": "pending step", + "content_type": "", + "line": 159 + }, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + }, + { + "keyword": "And ", + "name": "the following step should be skipped:", + "line": 162, + "doc_string": { + "value": "I should have 1 scenario registered", + "content_type": "", + "line": 163 + }, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + } + ] + }, + { + "id": "run-features;should-mark-undefined-steps-after-pending", + "keyword": "Scenario", + "name": "should mark undefined steps after pending", + "description": "", + "line": 167, + "type": "scenario", + "steps": [ + { + "keyword": "Given ", + "name": "a feature \"pending.feature\" file:", + "line": 168, + "doc_string": { + "value": "Feature: pending feature\n\n Scenario: parse a scenario\n Given pending step\n When undefined\n Then undefined 2\n And I should have 1 scenario registered", + "content_type": "", + "line": 169 + }, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + }, + { + "keyword": "When ", + "name": "I run feature suite", + "line": 178, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + }, + { + "keyword": "Then ", + "name": "the suite should have passed", + "line": 179, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + }, + { + "keyword": "And ", + "name": "the following steps should be undefined:", + "line": 180, + "doc_string": { + "value": "undefined\nundefined 2", + "content_type": "", + "line": 181 + }, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + }, + { + "keyword": "And ", + "name": "the following step should be pending:", + "line": 185, + "doc_string": { + "value": "pending step", + "content_type": "", + "line": 186 + }, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + }, + { + "keyword": "And ", + "name": "the following step should be skipped:", + "line": 189, + "doc_string": { + "value": "I should have 1 scenario registered", + "content_type": "", + "line": 190 + }, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + } + ] + }, + { + "id": "run-features;should-fail-suite-if-undefined-steps-follow-after-the-failure", + "keyword": "Scenario", + "name": "should fail suite if undefined steps follow after the failure", + "description": "", + "line": 194, + "type": "scenario", + "steps": [ + { + "keyword": "Given ", + "name": "a feature \"failed.feature\" file:", + "line": 195, + "doc_string": { + "value": "Feature: failed feature\n\n Scenario: parse a scenario\n Given a failing step\n When an undefined step\n Then another undefined step", + "content_type": "", + "line": 196 + }, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + }, + { + "keyword": "When ", + "name": "I run feature suite", + "line": 204, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + }, + { + "keyword": "Then ", + "name": "the following step should be failed:", + "line": 205, + "doc_string": { + "value": "a failing step", + "content_type": "", + "line": 206 + }, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + }, + { + "keyword": "And ", + "name": "the following steps should be undefined:", + "line": 209, + "doc_string": { + "value": "an undefined step\nanother undefined step", + "content_type": "", + "line": 210 + }, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + }, + { + "keyword": "And ", + "name": "the suite should have failed", + "line": 214, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + } + ] + }, + { + "id": "run-features;should-fail-suite-and-skip-pending-step-after-failed-step", + "keyword": "Scenario", + "name": "should fail suite and skip pending step after failed step", + "description": "", + "line": 216, + "type": "scenario", + "steps": [ + { + "keyword": "Given ", + "name": "a feature \"failed.feature\" file:", + "line": 217, + "doc_string": { + "value": "Feature: failed feature\n\n Scenario: parse a scenario\n Given a failing step\n When pending step\n Then another undefined step", + "content_type": "", + "line": 218 + }, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + }, + { + "keyword": "When ", + "name": "I run feature suite", + "line": 226, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + }, + { + "keyword": "Then ", + "name": "the following step should be failed:", + "line": 227, + "doc_string": { + "value": "a failing step", + "content_type": "", + "line": 228 + }, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + }, + { + "keyword": "And ", + "name": "the following steps should be skipped:", + "line": 231, + "doc_string": { + "value": "pending step", + "content_type": "", + "line": 232 + }, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + }, + { + "keyword": "And ", + "name": "the following steps should be undefined:", + "line": 235, + "doc_string": { + "value": "another undefined step", + "content_type": "", + "line": 236 + }, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + }, + { + "keyword": "And ", + "name": "the suite should have failed", + "line": 239, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + } + ] + }, + { + "id": "run-features;should-fail-suite-and-skip-next-step-after-failed-step", + "keyword": "Scenario", + "name": "should fail suite and skip next step after failed step", + "description": "", + "line": 241, + "type": "scenario", + "steps": [ + { + "keyword": "Given ", + "name": "a feature \"failed.feature\" file:", + "line": 242, + "doc_string": { + "value": "Feature: failed feature\n\n Scenario: parse a scenario\n Given a failing step\n When a failing step\n Then another undefined step", + "content_type": "", + "line": 243 + }, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + }, + { + "keyword": "When ", + "name": "I run feature suite", + "line": 251, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + }, + { + "keyword": "Then ", + "name": "the following step should be failed:", + "line": 252, + "doc_string": { + "value": "a failing step", + "content_type": "", + "line": 253 + }, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + }, + { + "keyword": "And ", + "name": "the following steps should be skipped:", + "line": 256, + "doc_string": { + "value": "a failing step", + "content_type": "", + "line": 257 + }, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + }, + { + "keyword": "And ", + "name": "the following steps should be undefined:", + "line": 260, + "doc_string": { + "value": "another undefined step", + "content_type": "", + "line": 261 + }, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + }, + { + "keyword": "And ", + "name": "the suite should have failed", + "line": 264, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + } + ] + } + ] + }, + { + "uri": "features/snippets.feature", + "id": "undefined-step-snippets", + "keyword": "Feature", + "name": "undefined step snippets", + "description": " In order to implement step definitions faster\n As a test suite user\n I need to be able to get undefined step snippets", + "line": 1, + "elements": [ + { + "id": "undefined-step-snippets;should-generate-snippets", + "keyword": "Scenario", + "name": "should generate snippets", + "description": "", + "line": 6, + "type": "scenario", + "steps": [ + { + "keyword": "Given ", + "name": "a feature \"undefined.feature\" file:", + "line": 7, + "doc_string": { + "value": "Feature: undefined steps\n\n Scenario: get version number from api\n When I send \"GET\" request to \"/version\"\n Then the response code should be 200", + "content_type": "", + "line": 8 + }, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + }, + { + "keyword": "When ", + "name": "I run feature suite", + "line": 15, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + }, + { + "keyword": "Then ", + "name": "the following steps should be undefined:", + "line": 16, + "doc_string": { + "value": "I send \"GET\" request to \"/version\"\nthe response code should be 200", + "content_type": "", + "line": 17 + }, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + }, + { + "keyword": "And ", + "name": "the undefined step snippets should be:", + "line": 21, + "doc_string": { + "value": "func iSendRequestTo(arg1, arg2 string) error {\n return godog.ErrPending\n}\n\nfunc theResponseCodeShouldBe(arg1 int) error {\n return godog.ErrPending\n}\n\nfunc FeatureContext(s *godog.Suite) {\n s.Step(`^I send \"([^\"]*)\" request to \"([^\"]*)\"$`, iSendRequestTo)\n s.Step(`^the response code should be (\\d+)$`, theResponseCodeShouldBe)\n}", + "content_type": "", + "line": 22 + }, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + } + ] + }, + { + "id": "undefined-step-snippets;should-generate-snippets-with-more-arguments", + "keyword": "Scenario", + "name": "should generate snippets with more arguments", + "description": "", + "line": 37, + "type": "scenario", + "steps": [ + { + "keyword": "Given ", + "name": "a feature \"undefined.feature\" file:", + "line": 38, + "doc_string": { + "value": "Feature: undefined steps\n\n Scenario: get version number from api\n When I send \"GET\" request to \"/version\" with:\n | col1 | val1 |\n | col2 | val2 |\n Then the response code should be 200 and header \"X-Powered-By\" should be \"godog\"", + "content_type": "", + "line": 39 + }, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + }, + { + "keyword": "When ", + "name": "I run feature suite", + "line": 48, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + }, + { + "keyword": "Then ", + "name": "the undefined step snippets should be:", + "line": 49, + "doc_string": { + "value": "func iSendRequestToWith(arg1, arg2 string, arg3 *gherkin.DataTable) error {\n return godog.ErrPending\n}\n\nfunc theResponseCodeShouldBeAndHeaderShouldBe(arg1 int, arg2, arg3 string) error {\n return godog.ErrPending\n}\n\nfunc FeatureContext(s *godog.Suite) {\n s.Step(`^I send \"([^\"]*)\" request to \"([^\"]*)\" with:$`, iSendRequestToWith)\n s.Step(`^the response code should be (\\d+) and header \"([^\"]*)\" should be \"([^\"]*)\"$`, theResponseCodeShouldBeAndHeaderShouldBe)\n}", + "content_type": "", + "line": 50 + }, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + } + ] + }, + { + "id": "undefined-step-snippets;should-handle-escaped-symbols", + "keyword": "Scenario", + "name": "should handle escaped symbols", + "description": "", + "line": 65, + "type": "scenario", + "steps": [ + { + "keyword": "Given ", + "name": "a feature \"undefined.feature\" file:", + "line": 66, + "doc_string": { + "value": "Feature: undefined steps\n\n Scenario: get version number from api\n When I pull from github.com\n Then the project should be there", + "content_type": "", + "line": 67 + }, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + }, + { + "keyword": "When ", + "name": "I run feature suite", + "line": 74, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + }, + { + "keyword": "Then ", + "name": "the following steps should be undefined:", + "line": 75, + "doc_string": { + "value": "I pull from github.com\nthe project should be there", + "content_type": "", + "line": 76 + }, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + }, + { + "keyword": "And ", + "name": "the undefined step snippets should be:", + "line": 80, + "doc_string": { + "value": "func iPullFromGithubcom() error {\n return godog.ErrPending\n}\n\nfunc theProjectShouldBeThere() error {\n return godog.ErrPending\n}\n\nfunc FeatureContext(s *godog.Suite) {\n s.Step(`^I pull from github\\.com$`, iPullFromGithubcom)\n s.Step(`^the project should be there$`, theProjectShouldBeThere)\n}", + "content_type": "", + "line": 81 + }, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + } + ] + }, + { + "id": "undefined-step-snippets;should-handle-string-argument-followed-by-comma", + "keyword": "Scenario", + "name": "should handle string argument followed by comma", + "description": "", + "line": 96, + "type": "scenario", + "steps": [ + { + "keyword": "Given ", + "name": "a feature \"undefined.feature\" file:", + "line": 97, + "doc_string": { + "value": "Feature: undefined\n\n Scenario: add item to basket\n Given there is a \"Sith Lord Lightsaber\", which costs £5\n When I add the \"Sith Lord Lightsaber\" to the basket", + "content_type": "", + "line": 98 + }, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + }, + { + "keyword": "When ", + "name": "I run feature suite", + "line": 105, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + }, + { + "keyword": "And ", + "name": "the undefined step snippets should be:", + "line": 106, + "doc_string": { + "value": "func thereIsAWhichCosts(arg1 string, arg2 int) error {\n return godog.ErrPending\n}\n\nfunc iAddTheToTheBasket(arg1 string) error {\n return godog.ErrPending\n}\n\nfunc FeatureContext(s *godog.Suite) {\n s.Step(`^there is a \"([^\"]*)\", which costs £(\\d+)$`, thereIsAWhichCosts)\n s.Step(`^I add the \"([^\"]*)\" to the basket$`, iAddTheToTheBasket)\n}", + "content_type": "", + "line": 107 + }, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + } + ] + }, + { + "id": "undefined-step-snippets;should-handle-arguments-in-the-beggining-or-end-of-the-step", + "keyword": "Scenario", + "name": "should handle arguments in the beggining or end of the step", + "description": "", + "line": 122, + "type": "scenario", + "steps": [ + { + "keyword": "Given ", + "name": "a feature \"undefined.feature\" file:", + "line": 123, + "doc_string": { + "value": "Feature: undefined\n\n Scenario: add item to basket\n Given \"Sith Lord Lightsaber\", which costs £5\n And 12 godogs", + "content_type": "", + "line": 124 + }, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + }, + { + "keyword": "When ", + "name": "I run feature suite", + "line": 131, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + }, + { + "keyword": "And ", + "name": "the undefined step snippets should be:", + "line": 132, + "doc_string": { + "value": "func whichCosts(arg1 string, arg2 int) error {\n return godog.ErrPending\n}\n\nfunc godogs(arg1 int) error {\n return godog.ErrPending\n}\n\nfunc FeatureContext(s *godog.Suite) {\n s.Step(`^\"([^\"]*)\", which costs £(\\d+)$`, whichCosts)\n s.Step(`^(\\d+) godogs$`, godogs)\n}", + "content_type": "", + "line": 133 + }, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + } + ] + } + ] + }, + { + "uri": "features/tags.feature", + "id": "tag-filters", + "keyword": "Feature", + "name": "tag filters", + "description": " In order to test application behavior\n As a test suite\n I need to be able to filter features and scenarios by tags", + "line": 1, + "elements": [ + { + "id": "tag-filters;should-filter-outline-examples-by-tags", + "keyword": "Scenario", + "name": "should filter outline examples by tags", + "description": "", + "line": 6, + "type": "scenario", + "steps": [ + { + "keyword": "Given ", + "name": "a feature \"normal.feature\" file:", + "line": 7, + "doc_string": { + "value": "Feature: outline\n\n Background:\n Given passing step\n\n Scenario Outline: parse a scenario\n Given a feature path \"\u003cpath\u003e\"\n When I parse features\n Then I should have \u003cnum\u003e scenario registered\n\n Examples:\n | path | num |\n | features/load.feature:3 | 0 |\n\n @used\n Examples:\n | path | num |\n | features/load.feature:6 | 1 |", + "content_type": "", + "line": 8 + }, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + }, + { + "keyword": "When ", + "name": "I run feature suite with tags \"@used\"", + "line": 28, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + }, + { + "keyword": "Then ", + "name": "the suite should have passed", + "line": 29, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + }, + { + "keyword": "And ", + "name": "the following steps should be passed:", + "line": 30, + "doc_string": { + "value": "I parse features\na feature path \"features/load.feature:6\"\nI should have 1 scenario registered", + "content_type": "", + "line": 31 + }, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + }, + { + "keyword": "And ", + "name": "I should have 1 scenario registered", + "line": 36, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + } + ] + }, + { + "id": "tag-filters;should-filter-scenarios-by-x-tag", + "keyword": "Scenario", + "name": "should filter scenarios by X tag", + "description": "", + "line": 38, + "type": "scenario", + "steps": [ + { + "keyword": "Given ", + "name": "a feature \"normal.feature\" file:", + "line": 39, + "doc_string": { + "value": "Feature: tagged\n\n @x\n Scenario: one\n Given a feature path \"one\"\n\n @x\n Scenario: two\n Given a feature path \"two\"\n\n @x @y\n Scenario: three\n Given a feature path \"three\"\n\n @y\n Scenario: four\n Given a feature path \"four\"", + "content_type": "", + "line": 40 + }, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + }, + { + "keyword": "When ", + "name": "I run feature suite with tags \"@x\"", + "line": 59, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + }, + { + "keyword": "Then ", + "name": "the suite should have passed", + "line": 60, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + }, + { + "keyword": "And ", + "name": "I should have 3 scenario registered", + "line": 61, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + }, + { + "keyword": "And ", + "name": "the following steps should be passed:", + "line": 62, + "doc_string": { + "value": "a feature path \"one\"\na feature path \"two\"\na feature path \"three\"", + "content_type": "", + "line": 63 + }, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + } + ] + }, + { + "id": "tag-filters;should-filter-scenarios-by-x-tag-not-having-y", + "keyword": "Scenario", + "name": "should filter scenarios by X tag not having Y", + "description": "", + "line": 69, + "type": "scenario", + "steps": [ + { + "keyword": "Given ", + "name": "a feature \"normal.feature\" file:", + "line": 70, + "doc_string": { + "value": "Feature: tagged\n\n @x\n Scenario: one\n Given a feature path \"one\"\n\n @x\n Scenario: two\n Given a feature path \"two\"\n\n @x @y\n Scenario: three\n Given a feature path \"three\"\n\n @y @z\n Scenario: four\n Given a feature path \"four\"", + "content_type": "", + "line": 71 + }, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + }, + { + "keyword": "When ", + "name": "I run feature suite with tags \"@x \u0026\u0026 ~@y\"", + "line": 90, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + }, + { + "keyword": "Then ", + "name": "the suite should have passed", + "line": 91, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + }, + { + "keyword": "And ", + "name": "I should have 2 scenario registered", + "line": 92, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + }, + { + "keyword": "And ", + "name": "the following steps should be passed:", + "line": 93, + "doc_string": { + "value": "a feature path \"one\"\na feature path \"two\"", + "content_type": "", + "line": 94 + }, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + } + ] + }, + { + "id": "tag-filters;should-filter-scenarios-having-y-and-z-tags", + "keyword": "Scenario", + "name": "should filter scenarios having Y and Z tags", + "description": "", + "line": 99, + "type": "scenario", + "steps": [ + { + "keyword": "Given ", + "name": "a feature \"normal.feature\" file:", + "line": 100, + "doc_string": { + "value": "Feature: tagged\n\n @x\n Scenario: one\n Given a feature path \"one\"\n\n @x\n Scenario: two\n Given a feature path \"two\"\n\n @x @y\n Scenario: three\n Given a feature path \"three\"\n\n @y @z\n Scenario: four\n Given a feature path \"four\"", + "content_type": "", + "line": 101 + }, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + }, + { + "keyword": "When ", + "name": "I run feature suite with tags \"@y \u0026\u0026 @z\"", + "line": 120, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + }, + { + "keyword": "Then ", + "name": "the suite should have passed", + "line": 121, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + }, + { + "keyword": "And ", + "name": "I should have 1 scenario registered", + "line": 122, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + }, + { + "keyword": "And ", + "name": "the following steps should be passed:", + "line": 123, + "doc_string": { + "value": "a feature path \"four\"", + "content_type": "", + "line": 124 + }, + "match": { + "location": "suite_context.go:0" + }, + "result": { + "status": "passed", + "duration": 0 + } + } + ] + } + ] + } ] \ No newline at end of file diff --git a/fixtures/junit_output.xml b/fixtures/junit_output.xml index cc03682..0bdc75b 100644 --- a/fixtures/junit_output.xml +++ b/fixtures/junit_output.xml @@ -1,5 +1,5 @@ - + @@ -35,7 +35,7 @@ - + @@ -45,6 +45,7 @@ + diff --git a/fixtures/progress_output.txt b/fixtures/progress_output.txt index 2d2565d..4a98d75 100644 --- a/fixtures/progress_output.txt +++ b/fixtures/progress_output.txt @@ -2,9 +2,9 @@ ...................................................................... 140 ...................................................................... 210 ...................................................................... 280 -....................... 303 +........................... 307 -78 scenarios (78 passed) -303 steps (303 passed) +79 scenarios (79 passed) +307 steps (307 passed) 0s \ No newline at end of file diff --git a/fmt_pretty.go b/fmt_pretty.go index bef7db0..8be257c 100644 --- a/fmt_pretty.go +++ b/fmt_pretty.go @@ -124,12 +124,13 @@ func (f *pretty) printUndefinedScenario(sc interface{}) { case *gherkin.Scenario: f.commentPos = f.longestStep(t.Steps, f.length(sc)) text := s(f.indent) + keywordAndName(t.Keyword, t.Name) - text += s(f.commentPos-f.length(t)+1) + f.line(t.Location) + text += s(f.commentPos-f.length(t)) + f.line(t.Location) fmt.Fprintln(f.out, "\n"+text) case *gherkin.ScenarioOutline: f.commentPos = f.longestStep(t.Steps, f.length(sc)) text := s(f.indent) + keywordAndName(t.Keyword, t.Name) - text += s(f.commentPos-f.length(t)+1) + f.line(t.Location) + text += s(f.commentPos-f.length(t)) + f.line(t.Location) + fmt.Fprintln(f.out, "\n"+text) for _, example := range t.Examples { @@ -248,9 +249,9 @@ func (f *pretty) printExampleRow(row *gherkin.TableRow, max []int, clr colors.Co for i, cell := range row.Cells { val := clr(cell.Value) ln := utf8.RuneCountInString(val) - cells[i] = val + s(max[i]-ln) + cells[i] = val + s(max[i]-ln+1) } - fmt.Fprintln(f.out, s(f.indent*3)+"| "+strings.Join(cells, " | ")+" |") + fmt.Fprintln(f.out, s(f.indent*3)+"| "+strings.Join(cells, "| ")+"|") } func (f *pretty) printExampleHeader(example *gherkin.Examples, max []int) { @@ -262,9 +263,9 @@ func (f *pretty) printExampleHeader(example *gherkin.Examples, max []int) { for i, cell := range example.TableHeader.Cells { val := cyan(cell.Value) ln := utf8.RuneCountInString(val) - cells[i] = val + s(max[i]-ln) + cells[i] = val + s(max[i]-ln+1) } - fmt.Fprintln(f.out, s(f.indent*3)+"| "+strings.Join(cells, " | ")+" |") + fmt.Fprintln(f.out, s(f.indent*3)+"| "+strings.Join(cells, "| ")+"|") } func (f *pretty) printStep(step *gherkin.Step, def *StepDef, c colors.ColorFunc) { @@ -289,6 +290,7 @@ func (f *pretty) printStep(step *gherkin.Step, def *StepDef, c colors.ColorFunc) text += c(step.Text) } text += s(f.commentPos-f.length(step)+1) + blackb(fmt.Sprintf("# %s", def.definitionID())) + default: text += c(step.Text) } @@ -342,6 +344,7 @@ func (f *pretty) printStepKind(res *stepResult) { } text := s(f.indent) + keywordAndName(f.scenario.Keyword, f.scenario.Name) text += s(f.commentPos-f.length(f.scenario)+1) + f.line(f.scenario.Location) + fmt.Fprintln(f.out, "\n"+text) f.scenarioKeyword = true } @@ -357,6 +360,7 @@ func (f *pretty) printStepKind(res *stepResult) { } text := s(f.indent) + keywordAndName(f.outline.Keyword, f.outline.Name) text += s(f.commentPos-f.length(f.outline)+1) + f.line(f.outline.Location) + fmt.Fprintln(f.out, "\n"+text) f.scenarioKeyword = true } @@ -400,9 +404,9 @@ func (f *pretty) printTable(t *gherkin.DataTable, c colors.ColorFunc) { for i, cell := range row.Cells { val := c(cell.Value) ln := utf8.RuneCountInString(val) - cols[i] = val + s(l[i]-ln) + cols[i] = val + s(l[i]-ln+1) } - fmt.Fprintln(f.out, s(f.indent*3)+"| "+strings.Join(cols, " | ")+" |") + fmt.Fprintln(f.out, s(f.indent*3)+"| "+strings.Join(cols, "| ")+"|") } } diff --git a/go.mod b/go.mod index 2924270..a97d733 100644 --- a/go.mod +++ b/go.mod @@ -3,7 +3,7 @@ module github.com/cucumber/godog go 1.13 require ( - github.com/DATA-DOG/go-txdb v0.1.3 - github.com/go-sql-driver/mysql v1.5.0 + github.com/DATA-DOG/go-txdb v0.1.3 // indirect + github.com/go-sql-driver/mysql v1.5.0 // indirect github.com/stretchr/testify v1.4.0 ) diff --git a/run_test.go b/run_test.go index bce07ff..19fb95e 100644 --- a/run_test.go +++ b/run_test.go @@ -251,14 +251,14 @@ func TestSucceedRun(t *testing.T) { } for _, tc := range testCases { - expectedOutput, err := ioutil.ReadFile(tc.filename) + expectedOutputNoConcurrency, err := ioutil.ReadFile(tc.filename) require.NoError(t, err) for concurrency := range make([]int, tc.concurrency) { t.Run( fmt.Sprintf("%s/concurrency/%d", tc.format, concurrency), func(t *testing.T) { - testSucceedRun(t, tc.format, concurrency, string(expectedOutput)) + testSucceedRun(t, tc.format, concurrency, string(expectedOutputNoConcurrency)) }, ) } diff --git a/suite_context.go b/suite_context.go index 679fa9c..c0c1e60 100644 --- a/suite_context.go +++ b/suite_context.go @@ -16,6 +16,10 @@ import ( "github.com/cucumber/godog/gherkin" ) +var ( + allowInjection = true +) + // SuiteContext provides steps for godog suite execution and // can be used for meta-testing of godog features/steps themselves. // @@ -43,6 +47,7 @@ func SuiteContext(s *Suite, additionalContextInitializers ...func(suite *Suite)) s.Step(`^I run feature suite$`, c.iRunFeatureSuite) s.Step(`^I run feature suite with tags "([^"]*)"$`, c.iRunFeatureSuiteWithTags) s.Step(`^I run feature suite with formatter "([^"]*)"$`, c.iRunFeatureSuiteWithFormatter) + s.Step(`^(?:I )(allow|disable) variable injection`, c.iSetVariableInjectionTo) s.Step(`^(?:a )?feature "([^"]*)"(?: file)?:$`, c.aFeatureFile) s.Step(`^the suite should have (passed|failed)$`, c.theSuiteShouldHave) @@ -97,6 +102,44 @@ func SuiteContext(s *Suite, additionalContextInitializers ...func(suite *Suite)) s.Step(`^(?:a )?failing nested multistep$`, func() Steps { return Steps{"passing step", "passing multistep", "failing multistep"} }) + // Default recovery step + s.Step(`Ignore.*`, func() error { + return nil + }) + + s.BeforeStep(func(step *gherkin.Step) { + if !allowInjection { + return + } + step.Text = injectAll(step.Text) + args := step.Argument + if args != nil { + switch arg := args.(type) { + case *gherkin.DataTable: + for i := 0; i < len(arg.Rows); i++ { + for n, cell := range arg.Rows[i].Cells { + arg.Rows[i].Cells[n].Value = injectAll(cell.Value) + } + } + case *gherkin.DocString: + arg.Content = injectAll(arg.Content) + } + } + }) +} + +func injectAll(inTo string) string { + re := regexp.MustCompile(`{{[^{}]+}}`) + return re.ReplaceAllStringFunc( + inTo, + func(key string) string { + injectRegex := regexp.MustCompile(`^{{.+}}$`) + if injectRegex.MatchString(key) { + return "someverylonginjectionsoweacanbesureitsurpasstheinitiallongeststeplenghtanditwillhelptestsmethodsafety" + } + return key + }, + ) } type firedEvent struct { @@ -123,6 +166,11 @@ func (s *suiteContext) ResetBeforeEachScenario(interface{}) { s.events = []*firedEvent{} } +func (s *suiteContext) iSetVariableInjectionTo(to string) error { + allowInjection = to == "allow" + return nil +} + func (s *suiteContext) iRunFeatureSuiteWithTags(tags string) error { if err := s.parseFeatures(); err != nil { return err diff --git a/utils.go b/utils.go index 403425d..11d082e 100644 --- a/utils.go +++ b/utils.go @@ -20,6 +20,9 @@ var ( // repeats a space n times func s(n int) string { + if n <= 0 { + n = 1 + } return strings.Repeat(" ", n) }