Code Monkey home page Code Monkey logo

specresults's Introduction

Attention: this project was formerly known as SpecFlow.Reporting. This is not an offical SpecFlow package and the name clashed with some of the official SpecFlow packages/namespace. Therefor it was renamed to SpecResults.

All previous published versions of SpecFlow.Reporting are still available on NuGet.org, alltough they aren't listed anymore.

Generating better SpecFlow reports Build status

SpecResults was created to get better feedback from your automated SpecFlow testsuite. With unit tests most times reporting is only interesting for developers and testers. But when practicing BDD, the output of your automated tests might be valuable for the whole development team, management and pherhaps even end-users.

SpecResults makes it easy to extend SpecFlow by creating reporters which can write output in all kinds of formats and can even be enriched with additional data.

Table of contents

Usage

Add one or more reporters to your SpecFlow project, for example:

  • Json: reports in json format example
  • Plain Text: reports in plain text format example
  • Xml: reports in xml format example
  • WebApp: writes an interactive, responsive, client-side web application, in which users can browse and search features, scenarios and steps example

Work in progress:

  • Xml.NUnit: less technical reporting in NUnit's xml output format

Make your existing StepDefinitions class inherit from SpecResults.ReportingStepDefinitions

Initialize and add the reporter(s) in [BeforeTestRun] and register on one of the events to get notified when something gets reported:

[Binding]
public class StepDefinitions : ReportingStepDefinitions
{
	[BeforeTestRun]
	public static void BeforeTestRun()
	{
		Reporters.Add(new JsonReporter());
		Reporters.Add(new XmlReporter());
		Reporters.Add(new PlainTextReporter());

		Reporters.FinishedReport += (sender, args) => {
			Console.WriteLine(args.Reporter.WriteToString());
		};
	}
}	

Create your own reporter

Create a new project and add the SpecResults package

Add a class which inherits from SpecResults.Reporter and implement the WriteToStream method:

namespace SpecResults.MyFormat
{
	public class MyFormatReporter : SpecResults.Reporter
	{
		public override void WriteToStream(Stream stream)
		{
			//
			// TODO: Serialize this.Report to the stream
			//
		}
	}
}

Wanted reporters

  • Xml.MsTest
  • Docx
  • Xlsx
  • ...

specresults's People

Contributors

timschlechter avatar stewartarmbrecht avatar

Stargazers

gagneet singh avatar  avatar Craig E. Shea avatar Michael J. Nohai avatar Hrissimir avatar  avatar Jared Russell avatar Fedor Latypov avatar Julian Maughan avatar  avatar Guilherme Britz Videira avatar Chew Chit Siang avatar Wasiq Bhamla avatar Victor Pascual avatar Manuel Escamilla avatar Lars Baldes avatar  avatar Craeg Strong avatar Bibby avatar Bruce Chen avatar Kirk Chen avatar Jim Liddell avatar  avatar

Watchers

Oskar Bejbom avatar Raimond Kuipers avatar Craeg Strong avatar  avatar Lars Baldes avatar Fedor Latypov avatar Shalin Shah avatar

specresults's Issues

Multiline Arguments are throwing an error

Add this to your TestSuite.feature file and see if you can get it to run:

  Scenario: Steps contain multi arguments
    Given a "awesome" scenario is specified with a multi-line argument
    """
    Here we go with mulitiple lines!
    """
    When the tests with multiple line parameters
    """
    like
    this 
    one
    """
    Then "1" report is generated

I get this error:

Test Name:  StepsContainMultiArguments
Test FullName:  SpecFlow.Reporting.ApprovalTestSuite.TestSuiteFeature.StepsContainMultiArguments
Test Source:    c:\Users\stearm01\Documents\GitHub\SpecFlow.Reporting\SpecFlow.Reporting.ApprovalTestSuite\TestSuite.feature : line 18
Test Outcome:   Failed
Test Duration:  0:00:00.066

Result Message: 
System.ArgumentOutOfRangeException : Length cannot be less than zero.
Parameter name: length
Result StackTrace:  
Server stack trace:
at System.Threading.Thread.InternalCrossContextCallback(Context ctx, IntPtr ctxID, Int32 appDomainID, InternalCrossContextDelegate ftnToCall, Object[] args)
at System.Runtime.Remoting.Channels.CrossContextChannel.SyncProcessMessage(IMessage reqMsg)

Exception rethrown at [0]:
at System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg)
at System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type)
at SpecFlow.Reporting.Tests.Steps.GivenAScenarioIsSpecifiedWithAMulti_LineArgument(String p0, String multilineText)
at lambda_method(Closure , IContextManager , String , String )
at TechTalk.SpecFlow.Bindings.BindingInvoker.InvokeBinding(IBinding binding, IContextManager contextManager, Object[] arguments, ITestTracer testTracer, TimeSpan& duration)
at TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.ExecuteStepMatch(BindingMatch match, Object[] arguments)
at TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.ExecuteStep(StepInstance stepInstance)
at TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.OnAfterLastStep()
at TechTalk.SpecFlow.TestRunner.CollectScenarioErrors()
at SpecFlow.Reporting.ApprovalTestSuite.TestSuiteFeature.ScenarioCleanup() in c:\Users\stearm01\Documents\GitHub\SpecFlow.Reporting\SpecFlow.Reporting.ApprovalTestSuite\TestSuite.feature.cs:line 0
at SpecFlow.Reporting.ApprovalTestSuite.TestSuiteFeature.StepsContainMultiArguments() in c:\Users\stearm01\Documents\GitHub\SpecFlow.Reporting\SpecFlow.Reporting.ApprovalTestSuite\TestSuite.feature:line 30

SpecResults report with Parallel Tests

Hello,
I'm using the SpecResults to generate a report for my tests and, as the documentation explains, I added the creation of the report in the BeforeTestRun. The thing is, when I added the "[assembly: Parallelizable(ParallelScope.Fixtures)]" to my AssemblyInfo.cs, the test stopped work, with the following error:

------ Run test started ------
NUnit Adapter 3.7.0.0: Test execution started
Running selected tests in D:\Documents\Git\TestAutomationFramework\Fourth.Automation.Framework.Functional\bin\Chrome\Fourth.Automation.Framework.Functional.dll
NUnit3TestExecutor converted 2 of 2 NUnit test cases
TearDown failed for test fixture Fourth.Automation.Framework.Functional.Features.SupportFeature
TechTalk.SpecFlow.SpecFlowException : The FeatureContext.Current static accessor cannot be used in multi-threaded execution. Try injecting the feature context to the binding class. See http://go.specflow.org/doc-multithreaded for details.
TearDown : System.NullReferenceException : Object reference not set to an instance of an object.
at TechTalk.SpecFlow.FeatureContext.get_Current()
at SpecResults.Reporters.BeforeFeature()
at lambda_method(Closure , IContextManager )
at TechTalk.SpecFlow.Bindings.BindingInvoker.InvokeBinding(IBinding binding, IContextManager contextManager, Object[] arguments, ITestTracer testTracer, TimeSpan& duration)
at TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.FireEvents(HookType bindingEvent)
at TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.OnFeatureStart(FeatureInfo featureInfo)
at TechTalk.SpecFlow.TestRunner.OnFeatureStart(FeatureInfo featureInfo)
at Fourth.Automation.Framework.Functional.Features.SupportFeature.FeatureSetup()
--TearDown
at SpecResults.Reporters.AfterFeature()
at lambda_method(Closure , IContextManager )
at TechTalk.SpecFlow.Bindings.BindingInvoker.InvokeBinding(IBinding binding, IContextManager contextManager, Object[] arguments, ITestTracer testTracer, TimeSpan& duration)
at TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.FireEvents(HookType bindingEvent)
at TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.OnFeatureEnd()
at TechTalk.SpecFlow.TestRunner.OnFeatureEnd()
at Fourth.Automation.Framework.Functional.Features.SupportFeature.FeatureTearDown()
TearDown failed for test fixture Fourth.Automation.Framework.Functional.Features.LoginFeature
TechTalk.SpecFlow.SpecFlowException : The FeatureContext.Current static accessor cannot be used in multi-threaded execution. Try injecting the feature context to the binding class. See http://go.specflow.org/doc-multithreaded for details.
TearDown : System.NullReferenceException : Object reference not set to an instance of an object.
at TechTalk.SpecFlow.FeatureContext.get_Current()
at SpecResults.Reporters.BeforeFeature()
at lambda_method(Closure , IContextManager )
at TechTalk.SpecFlow.Bindings.BindingInvoker.InvokeBinding(IBinding binding, IContextManager contextManager, Object[] arguments, ITestTracer testTracer, TimeSpan& duration)
at TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.FireEvents(HookType bindingEvent)
at TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.OnFeatureStart(FeatureInfo featureInfo)
at TechTalk.SpecFlow.TestRunner.OnFeatureStart(FeatureInfo featureInfo)
at Fourth.Automation.Framework.Functional.Features.LoginFeature.FeatureSetup()
--TearDown
at SpecResults.Reporters.AfterFeature()
at lambda_method(Closure , IContextManager )
at TechTalk.SpecFlow.Bindings.BindingInvoker.InvokeBinding(IBinding binding, IContextManager contextManager, Object[] arguments, ITestTracer testTracer, TimeSpan& duration)
at TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.FireEvents(HookType bindingEvent)
at TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.OnFeatureEnd()
at TechTalk.SpecFlow.TestRunner.OnFeatureEnd()
at Fourth.Automation.Framework.Functional.Features.LoginFeature.FeatureTearDown()
NUnit Adapter 3.7.0.0: Test execution complete
========== Run test finished: 2 run (0:00:01.3014074) ==========

I know static methods shouldn't be use in parallel tests, but then how should the report be implemented since the BeforeTestRun has to be static?

(Sorry if here's not the place for questions)

Thanks in advance

Approvals Path

My environment is resolving file paths differently from yours so that the Approval Tests are failing to find the approval file. I was able to fix it by changing Steps.ApprovalTests.cs:

        public ReportingApprovalNamer(Reporter reporter)
        {
            SourcePath = Path.Combine(@"..\\..\\approvals\\", reporter.Name);
            Name = "";
        }

To

        public ReportingApprovalNamer(Reporter reporter)
        {
            SourcePath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, @"..\\..\\approvals\\", reporter.Name);
            Name = "";
        }

JsonReporter always shows result "OK" even we forcibly fail the test

I have added the SpecResults.JSON to my hooks and generate the report in json format.

In the default HTML report created by SpecRun, when I have use a Assert.Fail() forcibly, the HTML report shows the correct and fail that scenario, however the JSON report is just says "OK".

is this is a issue or a default behavior, or I just need to be update somewhere something configuration or what, let me know if i am missing something to get the Pass/Fail result.

Object reference set to null.

i get the following error when I try to run your example:
Test Name: HasAWelcomeMessage
Test FullName: Protiviti.CDS.Client.Test.HomePage.PublicUserViewsHomePageFeature.HasAWelcomeMessage
Test Source: d:\Projects\Protiviti\CDS\trunk\Protiviti.CDS.Client.Test\HomePage\PublicUserViewsHomePage.feature : line 15
Test Outcome: Failed
Test Duration: 0:00:00.109

Result Message: System.NullReferenceException : Object reference not set to an instance of an object.
Result StackTrace:
Server stack trace:
at SpecFlow.Reporting.ReportingMessageSink.SyncProcessMessage(IMessage msg)
at System.Runtime.Remoting.Lifetime.LeaseSink.SyncProcessMessage(IMessage msg)
at System.Runtime.Remoting.Messaging.ServerContextTerminatorSink.SyncProcessMessage(IMessage reqMsg)
at System.Runtime.Remoting.Channels.CrossContextChannel.SyncProcessMessageCallback(Object[] args)
at System.Threading.Thread.CompleteCrossContextCallback(InternalCrossContextDelegate ftnToCall, Object[] args)
at System.Threading.Thread.InternalCrossContextCallback(Context ctx, IntPtr ctxID, Int32 appDomainID, InternalCrossContextDelegate ftnToCall, Object[] args)
at System.Runtime.Remoting.Channels.CrossContextChannel.SyncProcessMessage(IMessage reqMsg)

Exception rethrown at [0]:
at System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg)
at System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type)
at Protiviti.CDS.Client.Test.PublicUserViewsHomePageSteps.Given_a_USERTYPE_user_is_viewing_the_PAGE_page(String userType, String page)
at lambda_method(Closure , IContextManager , String , String )
at TechTalk.SpecFlow.Bindings.BindingInvoker.InvokeBinding(IBinding binding, IContextManager contextManager, Object[] arguments, ITestTracer testTracer, TimeSpan& duration)
at TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.ExecuteStepMatch(BindingMatch match, Object[] arguments)
at TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.ExecuteStep(StepInstance stepInstance)
at TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.OnAfterLastStep()
at TechTalk.SpecFlow.TestRunner.CollectScenarioErrors()
at Protiviti.CDS.Client.Test.HomePage.PublicUserViewsHomePageFeature.ScenarioCleanup() in d:\Projects\Protiviti\CDS\trunk\Protiviti.CDS.Client.Test\HomePage\PublicUserViewsHomePage.feature.cs:line 0
at Protiviti.CDS.Client.Test.HomePage.PublicUserViewsHomePageFeature.HasAWelcomeMessage() in d:\Projects\Protiviti\CDS\trunk\Protiviti.CDS.Client.Test\HomePage\PublicUserViewsHomePage.feature:line 20

SpecResults/SpecResults/Reporters.ExecuteStep(Action, MethodBase, object[]) stepContainer

Just reporting as I don't have a PR ready for this.

I have found this piece of code that doesn't seem to be doing anything in particular, and also being discarded on the next line:

methodBase = methodBase ?? action.Method;
var currentSteps = new Dictionary<Reporter, Step>();
var starttime = CurrentRunTime;
foreach(var reporter in GetAll()) {
    currentSteps.Add(reporter, reporter.CurrentStep);

    var step = CreateStep(starttime, methodBase, args);
    // what is this supposed to do?
    var stepContainer = reporter.CurrentStep ?? reporter.CurrentScenarioBlock;
    stepContainer.Steps.Add(step); // stepContainer is not used again
    reporter.CurrentStep = step;
    OnStartedStep(reporter);
}

This is the same line that causes most of the reported object reference is not set to an instance of an object issues. Removing this will solve this issue, however, it will introduce other issues:
The reports take internal TearDown as part of the test and tries to execute reporting on clean up.

During TearDown, reporter won't have a CurrentStep and stepContainer will be null and crashing the test execution. I don't know if this is because of my setup as I have the BeforeTestRun in an abstract class (BaseStep) which inherits from ReportingStepDefinitions and all my steps inherit from the BaseStep abstract class.

Project Roadmap

Tim - I lead up custom software development practice in the US. We are in the process of redefining our standard development process to utilize a BDD approach. I've been looking around for solutions that would allow a team to utilize reports from SpecFlow to handle sprint scoping and progress reporting (sprint burn up charting) as part of a BDD approach. Your solution looks like its the best start in that direction. I'd like to talk to you about what our team could do to help if you have time. Please let me know if you can talk and when would be a good time. Sorry to use this issue but I had no other way of contacting you. [email protected]

Table Arguments Failing

My gherkin statement that had a table argument was causing the reporter to fail. I was able to resolve the failure by changing SpecFlow.Reporting.Extensions file:

    internal static string ReplaceFirst(this string s, string find, string replace)
    {
        var first = s.IndexOf(find);
        return s.Substring(0, first) + replace + s.Substring(first + find.Length);
    }

To

    internal static string ReplaceFirst(this string s, string find, string replace)
    {
        var first = s.IndexOf(find);
  if (first > -1)
    return s.Substring(0, first) + replace + s.Substring(first + find.Length);
  else 
    return s;
    }

Reporting crashes always

I'm trying to have the reporting module to works but to no avail.

I have my Step class derived from ReportingStepDefinitions
I do have a [BeforeTestRun] method to setup the reporting.
I'm using the minimum setup just to make it run:
Reporters.Add( new PlainTextReporter() );

And yet, the second I run my test I get the error below. Any idea? someone?

Simple and fast scenarioSystem.NullReferenceException : Object reference not set to an instance of an object.
TearDown : System.NullReferenceException : Object reference not set to an instance of an object.

Server stack trace:
at SpecFlow.Reporting.Reporters.ExecuteStep(Action action, MethodBase methodBase, Object[] args)
at SpecFlow.Reporting.ReportingMessageSink.SyncProcessMessage(IMessage msg)
at System.Runtime.Remoting.Lifetime.LeaseSink.SyncProcessMessage(IMessage msg)
at System.Runtime.Remoting.Messaging.ServerContextTerminatorSink.SyncProcessMessage(IMessage reqMsg)
at System.Runtime.Remoting.Channels.CrossContextChannel.SyncProcessMessageCallback(Object[] args)
at System.Threading.Thread.CompleteCrossContextCallback(InternalCrossContextDelegate ftnToCall, Object[] args)
at System.Threading.Thread.InternalCrossContextCallback(Context ctx, IntPtr ctxID, Int32 appDomainID, InternalCrossContextDelegate ftnToCall, Object[] args)
at System.Threading.Thread.InternalCrossContextCallback(Context ctx, InternalCrossContextDelegate ftnToCall, Object[] args)
at System.Runtime.Remoting.Channels.CrossContextChannel.SyncProcessMessage(IMessage reqMsg)

Exception rethrown at [0]:
at System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg)
at System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type)
at GEOVIXEL.Cam360.Features.Support.ApplicationHooks.StartApplicationBeforeScenario()
at lambda_method(Closure , IContextManager )
at TechTalk.SpecFlow.Bindings.BindingInvoker.InvokeBinding(IBinding binding, IContextManager contextManager, Object[] arguments, ITestTracer testTracer, TimeSpan& duration)
at TechTalk.SpecFlow.Bindings.BindingInvokerExtensions.InvokeHook(IBindingInvoker invoker, IHookBinding hookBinding, IContextManager contextManager, ITestTracer testTracer)
at TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.FireEvents(HookType bindingEvent)
at TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.FireScenarioEvents(HookType bindingEvent)
at TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.OnScenarioStart(ScenarioInfo scenarioInfo)
at TechTalk.SpecFlow.TestRunner.OnScenarioStart(ScenarioInfo scenarioInfo)
at GEOVIXEL.Cam360.Features.Features.TestASpecFlowFeatureFeature.ScenarioSetup(ScenarioInfo scenarioInfo) in E:\MLavigne\My Devlop\GEOVIXEL\Research\Cam360\GEOVIXEL.Cam360.Features\Features\QuickFeature.feature.cs:line 0
at GEOVIXEL.Cam360.Features.Features.TestASpecFlowFeatureFeature.SimpleAndFastScenario() in E:\MLavigne\My Devlop\GEOVIXEL\Research\Cam360\GEOVIXEL.Cam360.Features\Features\QuickFeature.feature:line 7
--TearDown

Server stack trace:
at SpecFlow.Reporting.Reporters.ExecuteStep(Action action, MethodBase methodBase, Object[] args)
at SpecFlow.Reporting.ReportingMessageSink.SyncProcessMessage(IMessage msg)
at System.Runtime.Remoting.Lifetime.LeaseSink.SyncProcessMessage(IMessage msg)
at System.Runtime.Remoting.Messaging.ServerContextTerminatorSink.SyncProcessMessage(IMessage reqMsg)
at System.Runtime.Remoting.Channels.CrossContextChannel.SyncProcessMessageCallback(Object[] args)
at System.Threading.Thread.CompleteCrossContextCallback(InternalCrossContextDelegate ftnToCall, Object[] args)
at System.Threading.Thread.InternalCrossContextCallback(Context ctx, IntPtr ctxID, Int32 appDomainID, InternalCrossContextDelegate ftnToCall, Object[] args)
at System.Threading.Thread.InternalCrossContextCallback(Context ctx, InternalCrossContextDelegate ftnToCall, Object[] args)
at System.Runtime.Remoting.Channels.CrossContextChannel.SyncProcessMessage(IMessage reqMsg)

Exception rethrown at [0]:
at System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg)
at System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type)
at GEOVIXEL.Cam360.Features.Support.ApplicationHooks.CloseApplicationAfterScenario()
at lambda_method(Closure , IContextManager )
at TechTalk.SpecFlow.Bindings.BindingInvoker.InvokeBinding(IBinding binding, IContextManager contextManager, Object[] arguments, ITestTracer testTracer, TimeSpan& duration)
at TechTalk.SpecFlow.Bindings.BindingInvokerExtensions.InvokeHook(IBindingInvoker invoker, IHookBinding hookBinding, IContextManager contextManager, ITestTracer testTracer)
at TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.FireEvents(HookType bindingEvent)
at TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.FireScenarioEvents(HookType bindingEvent)
at TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.OnScenarioEnd()
at TechTalk.SpecFlow.TestRunner.OnScenarioEnd()
at GEOVIXEL.Cam360.Features.Features.TestASpecFlowFeatureFeature.ScenarioTearDown() in E:\MLavigne\My Devlop\GEOVIXEL\Research\Cam360\GEOVIXEL.Cam360.Features\Features\QuickFeature.feature.cs:line 0

Object reference not set to an instance of an object.

I setup my project just like in the example but keep on getting this exception.

I am using VS 2013, Win 8.1 64bit

System.NullReferenceException was unhandled by user code
  HResult=-2147467261
  Message=Object reference not set to an instance of an object.
  Source=TechTalk.SpecFlow
  StackTrace:
    Server stack trace: 
       at SpecFlow.Reporting.Reporters.ExecuteStep(Action action, MethodBase methodBase, Object[] args)
       at SpecFlow.Reporting.ReportingMessageSink.SyncProcessMessage(IMessage msg)
       at System.Runtime.Remoting.Lifetime.LeaseSink.SyncProcessMessage(IMessage msg)
       at System.Runtime.Remoting.Messaging.ServerContextTerminatorSink.SyncProcessMessage(IMessage reqMsg)
       at System.Runtime.Remoting.Channels.CrossContextChannel.SyncProcessMessageCallback(Object[] args)
       at System.Threading.Thread.CompleteCrossContextCallback(InternalCrossContextDelegate ftnToCall, Object[] args)
       at System.Threading.Thread.InternalCrossContextCallback(Context ctx, IntPtr ctxID, Int32 appDomainID, InternalCrossContextDelegate ftnToCall, Object[] args)
       at System.Runtime.Remoting.Channels.CrossContextChannel.SyncProcessMessage(IMessage reqMsg)
    Exception rethrown at [0]: 
       at System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg)
       at System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type)
       at Taf.Workflow.TestSpec.Steps.TestSpecificationSteps.GivenIHaveATestSpecificationTERev(String testspecificationId, String revision, String testing)
       at lambda_method(Closure , IContextManager , String , String , String )
       at TechTalk.SpecFlow.Bindings.BindingInvoker.InvokeBinding(IBinding binding, IContextManager contextManager, Object[] arguments, ITestTracer testTracer, TimeSpan& duration)
       at TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.ExecuteStepMatch(BindingMatch match, Object[] arguments)
       at TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.ExecuteStep(StepInstance stepInstance)
       at TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.OnAfterLastStep()
       at TechTalk.SpecFlow.TestRunner.CollectScenarioErrors()
       at Taf.Example.Workflow.WorkflowFeature.ScenarioCleanup() in c:\Project\meccano\branch\tools\specbyexample\tests\Taf.Example.Workflow\Workflow.Simple.feature.cs:line 0
       at Taf.Example.Workflow.WorkflowFeature.SimpleTestSpecificationModification2() in c:\Project\meccano\branch\tools\specbyexample\tests\Taf.Example.Workflow\Workflow.Simple.feature:line 6
  InnerException: 

How are you developing the web app?

I noticed the files are not in the WebApp project? How are you coding and validating changes you make to the web app? I would like to make some enhancements to it but I'm not certain what is the most efficient way to go about changing, building(saving), and validating.

Multiple when then steps

Hi,

i'm using the SpecFlow.Reporting with the WebApp project and the result looks really great.
But if i'm defining a scenario like this
given a
and b
when click a
then dialog appears
when click ok
then something should happen

the created report has only the static given when then schema, but i would need a given when then when then schema.
So it would be great if you could change this.

I have already done this by cloning your repositories (Reporting and WebApp), but i'm not so familiar with Github and the general "workflow" of pull requests and so on.
So if you would like to see my changes or if i should do a pull request or something else please tell me.

example

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.