ScenarioResult ExecuteScenario(Scenario scenario, Feature feature, IEnumerable <FoundMatch> matches, Dictionary <Type, ActionStepsObjectHolder> executionObjects, RunnerOptions options) { var scenarioResult = new ScenarioResult(scenario.Headline); foreach (var step in feature.BackgroundSteps.Concat(scenario.Steps)) { BeforeStep(scenario, feature, step, executionObjects); var result = ExecuteStep(step, matches, executionObjects, options); scenarioResult.AddStepResult(result); AfterStep(scenario, feature, step, result, executionObjects); if (options.SuccessRequired && !result.Success) { break; } } return(scenarioResult); }