From eb75d692bd95e30b6f001df85b05aea71df85b04 Mon Sep 17 00:00:00 2001 From: tfreville Date: Fri, 6 Mar 2020 17:16:57 +0100 Subject: [PATCH] (PRETIFIER): Fix s method to not have errors on negative entry Context: While trying to create an helper library to manage http rest api testing, I made a system witch allow to pick value from responses, header, cookie, ... and inject then as variables. Issue: Doing this, when the inject variable make the line longer than the longest declared step, godog will failed to render test result under pretty formatting cause it will try to write a comment on a negative index Fix: Fix s methods so it will not goes to fatal when recieving negative number. --- .gitignore | 3 +- features/formatter/pretty.feature | 32 + fixtures/cucumber_output.json | 11256 ++++++++++++++-------------- fixtures/junit_output.xml | 5 +- fixtures/progress_output.txt | 6 +- fmt_pretty.go | 20 +- go.mod | 4 +- run_test.go | 4 +- suite_context.go | 48 + utils.go | 3 + 10 files changed, 5771 insertions(+), 5610 deletions(-) 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) }