private static void FormatScenario(TextWriter writer, IScenarioResult scenario) { writer.WriteLine(); writer.Write("\tScenario: "); writer.Write(scenario.Info.Name); FormatLabels(writer, scenario.Info.Labels); writer.Write(" - "); writer.Write(scenario.Status); if (scenario.ExecutionTime != null) { writer.Write(" ("); writer.Write(scenario.ExecutionTime.Duration.FormatPretty()); writer.Write(")"); } writer.WriteLine(); if (scenario.Info.Categories.Any()) { writer.Write("\t\tCategories: "); writer.WriteLine(string.Join(", ", scenario.Info.Categories)); } var commentBuilder = new StringBuilder(); foreach (var step in scenario.GetSteps()) { FormatStep(writer, step, commentBuilder); } FormatDetails(writer, scenario); FormatComments(writer, commentBuilder); }
/// <summary> /// Notifies that scenario has finished. /// </summary> /// <param name="scenario">Scenario result.</param> public void NotifyScenarioFinished(IScenarioResult scenario) { foreach (var notifier in _notifiers) { notifier.NotifyScenarioFinished(scenario); } }
private static XElement ToXElement(IScenarioResult scenario) { var objects = new List <object> { new XAttribute("Status", scenario.Status.ToString()), new XAttribute("Name", scenario.Name) }; if (!string.IsNullOrWhiteSpace(scenario.Label)) { objects.Add(new XAttribute("Label", scenario.Label)); } if (scenario.ExecutionStart != null) { objects.Add(new XAttribute("ExecutionStart", scenario.ExecutionStart)); } if (scenario.ExecutionTime != null) { objects.Add(new XAttribute("ExecutionTime", scenario.ExecutionTime)); } if (scenario.Categories.Any()) { objects.Add(scenario.Categories.Select(c => new XElement("Category", new XAttribute("Name", c))).Cast <object>().ToArray()); } objects.Add(scenario.Steps.Select(ToXElement).Cast <object>().ToArray()); if (!string.IsNullOrWhiteSpace(scenario.StatusDetails)) { objects.Add(new XElement("StatusDetails", scenario.StatusDetails)); } return(new XElement("Scenario", objects)); }
private static void FormatScenario(StringBuilder builder, IScenarioResult scenario) { if (builder.Length > 0) builder.AppendLine(); builder.Append("\tScenario: "); builder.Append(scenario.Name); if (!string.IsNullOrWhiteSpace(scenario.Label)) builder.Append(" [").Append(scenario.Label).Append("]"); builder.Append(" - ").Append(scenario.Status); if (scenario.ExecutionTime != null) builder.Append(" (").Append(scenario.ExecutionTime.FormatPretty()).Append(")"); builder.AppendLine(); if (scenario.Categories.Any()) builder.Append("\t\tCategories: ").AppendLine(string.Join(", ", scenario.Categories)); StringBuilder commentBuilder = new StringBuilder(); foreach (var step in scenario.Steps) { FormatStep(builder, step); CollectComments(step, commentBuilder); } FormatDetails(builder, scenario); FormatComments(builder, commentBuilder); }
private static void FormatScenario(StringBuilder builder, IScenarioResult scenario) { if (builder.Length > 0) { builder.AppendLine(); } builder.Append("\tScenario: "); builder.Append(scenario.Name); if (!string.IsNullOrWhiteSpace(scenario.Label)) { builder.Append(" [").Append(scenario.Label).Append("]"); } builder.Append(" - ").Append(scenario.Status); if (scenario.ExecutionTime != null) { builder.Append(" (").Append(scenario.ExecutionTime.FormatPretty()).Append(")"); } builder.AppendLine(); if (scenario.Categories.Any()) { builder.Append("\t\tCategories: ").AppendLine(string.Join(", ", scenario.Categories)); } StringBuilder commentBuilder = new StringBuilder(); foreach (var step in scenario.Steps) { FormatStep(builder, step); CollectComments(step, commentBuilder); } FormatDetails(builder, scenario); FormatComments(builder, commentBuilder); }
private static XElement ToXElement(IScenarioResult scenario) { var objects = new List <object> { new XAttribute("Status", scenario.Status.ToString()), new XAttribute("Name", scenario.Info.Name), ToXElement(scenario.Info.Name) }; objects.AddRange(scenario.Info.Labels.Select(label => new XElement("Label", new XAttribute("Name", label)))); if (scenario.ExecutionTime != null) { objects.Add(new XAttribute("ExecutionStart", scenario.ExecutionTime.Start)); objects.Add(new XAttribute("ExecutionTime", scenario.ExecutionTime.Duration)); } if (scenario.Info.Categories.Any()) { objects.AddRange(scenario.Info.Categories.Select(c => new XElement("Category", new XAttribute("Name", c)))); } objects.AddRange(scenario.GetSteps().Select(s => ToXElement(s, "Step"))); if (!string.IsNullOrWhiteSpace(scenario.StatusDetails)) { objects.Add(new XElement("StatusDetails", scenario.StatusDetails)); } return(new XElement("Scenario", objects)); }
public void NotifyScenarioFinished(IScenarioResult scenarioResult) { _scenariosFinished++; _scenariosPending--; if (scenarioResult.Status == ResultStatus.Failed) _scenariosFailed++; WriteProgress("{0}: {1}", scenarioResult.Status.ToString().ToUpperInvariant(), scenarioResult.Name); }
private static void FormatDetails(StringBuilder builder, IScenarioResult scenario) { if (string.IsNullOrWhiteSpace(scenario.StatusDetails)) return; builder.AppendLine("\t\tDetails:") .Append("\t\t\t") .Append(scenario.StatusDetails.Trim().Replace(Environment.NewLine, Environment.NewLine + "\t\t\t")) .AppendLine(); }
public void NotifyScenarioFinished(IScenarioResult scenarioResult) { _scenariosFinished++; _scenariosPending--; if (scenarioResult.Status == ResultStatus.Failed) { _scenariosFailed++; } WriteProgress("{0}: {1}", scenarioResult.Status.ToString().ToUpperInvariant(), scenarioResult.Name); }
/// <summary> /// Notifies that scenario has been finished with given status and optional details. /// </summary> public void NotifyScenarioFinished(IScenarioResult scenarioResult) { if (scenarioResult.ExecutionTime.HasValue) WriteLine(" SCENARIO RESULT: {0} after {1}", scenarioResult.Status, scenarioResult.ExecutionTime.FormatPretty()); else WriteLine(" SCENARIO RESULT: {0}", scenarioResult.Status); if (!string.IsNullOrWhiteSpace(scenarioResult.StatusDetails)) WriteLine(" {0}", scenarioResult.StatusDetails.Replace("\n", "\n ")); }
private static void FormatDetails(StringBuilder builder, IScenarioResult scenario) { if (string.IsNullOrWhiteSpace(scenario.StatusDetails)) { return; } builder.AppendLine("\t\tDetails:") .Append("\t\t\t") .Append(scenario.StatusDetails.Trim().Replace(Environment.NewLine, Environment.NewLine + "\t\t\t")) .AppendLine(); }
private static void FormatDetails(TextWriter writer, IScenarioResult scenario) { if (string.IsNullOrWhiteSpace(scenario.StatusDetails)) { return; } writer.WriteLine("\t\tDetails:"); writer.Write("\t\t\t"); writer.Write(scenario.StatusDetails.Trim().Replace(Environment.NewLine, Environment.NewLine + "\t\t\t")); writer.WriteLine(); }
/// <summary> /// Notifies that scenario has finished. /// </summary> /// <param name="scenario">Scenario result.</param> public void NotifyScenarioFinished(IScenarioResult scenario) { var scenarioText = scenario.ExecutionTime != null ? $" SCENARIO RESULT: {scenario.Status} after {scenario.ExecutionTime.Duration.FormatPretty()}" : $" SCENARIO RESULT: {scenario.Status}"; var scenarioDetails = !string.IsNullOrWhiteSpace(scenario.StatusDetails) ? $"{Environment.NewLine} {scenario.StatusDetails.Replace(Environment.NewLine, Environment.NewLine + " ")}" : string.Empty; _onNotify(scenarioText + scenarioDetails); }
/// <summary> /// Notifies that scenario has been finished with given status and optional details. /// </summary> public void NotifyScenarioFinished(IScenarioResult scenarioResult) { if (scenarioResult.ExecutionTime.HasValue) { WriteLine(" SCENARIO RESULT: {0} after {1}", scenarioResult.Status, scenarioResult.ExecutionTime.FormatPretty()); } else { WriteLine(" SCENARIO RESULT: {0}", scenarioResult.Status); } if (!string.IsNullOrWhiteSpace(scenarioResult.StatusDetails)) { WriteLine(" {0}", scenarioResult.StatusDetails.Replace("\n", "\n ")); } }
private void WriteScenario(HtmlTextWriter writer, IScenarioResult scenario) { WriteTag(writer, HtmlTextWriterTag.Div, "scenario", () => { WriteTag(writer, HtmlTextWriterTag.Div, "title", () => { WriteStatus(writer, scenario.Status); WriteTag(writer, HtmlTextWriterTag.Span, "label", scenario.Label); writer.Write(scenario.Name); }); foreach (var step in scenario.Steps) { WriteStep(writer, step); } WriteTag(writer, HtmlTextWriterTag.Div, "details", scenario.StatusDetails); }); }
private void FormatScenario(StringBuilder builder, IScenarioResult scenario) { if (builder.Length > 0) { builder.AppendLine(); } builder.Append("\tScenario: "); if (!string.IsNullOrWhiteSpace(scenario.Label)) { builder.Append("[").Append(scenario.Label).Append("] "); } builder.Append(scenario.Name).Append(" - ").Append(scenario.Status).AppendLine(); foreach (var step in scenario.Steps) { builder.Append("\t\tStep ") .Append(step.Number).Append(": ") .Append(step.Name).Append(" - ").AppendLine(step.Status.ToString()); } FormatDetails(builder, scenario); }
private IHtmlNode GetScenario(IScenarioResult scenario, int featureIndex, int scenarioIndex) { var toggleId = string.Format("toggle{0}_{1}", featureIndex, scenarioIndex); var scenarioId = string.Format("scenario{0}_{1}", featureIndex, scenarioIndex + 1); return(Html.Tag(HtmlTextWriterTag.Div).Class("scenario " + GetStatusClass(scenario.Status)).Attribute("data-categories", GetScenarioCategories(scenario)).Content( Html.Checkbox().Id(toggleId).Class("toggle toggleS").Checked(), Html.Tag(HtmlTextWriterTag.H3).Id(scenarioId).Class("title").Content( Html.Tag(HtmlTextWriterTag.Label).For(toggleId).Content( GetCheckBoxTag(), GetStatus(scenario.Status), Html.Text(scenario.Name)), GetLabel(scenario.Label), GetDuration(scenario.ExecutionTime), GetSmallLink(scenarioId)), Html.Tag(HtmlTextWriterTag.Div).Class("categories").Content(string.Join(", ", scenario.Categories)).SkipEmpty(), Html.Tag(HtmlTextWriterTag.Div).Content(scenario.Steps.Select(GetStep)), GetStatusDetails(scenario.StatusDetails), GetComments(scenario.Steps), Html.Br())); }
private IHtmlNode GetScenario(IScenarioResult scenario, int featureIndex, int scenarioIndex) { var toggleId = $"toggle{featureIndex}_{scenarioIndex}"; var scenarioId = $"scenario{featureIndex}_{scenarioIndex + 1}"; return(Html.Tag(Html5Tag.Div).Class("scenario " + GetStatusClass(scenario.Status)).Attribute("data-categories", GetScenarioCategories(scenario)).Content( Html.Checkbox().Id(toggleId).Class("toggle toggleS").Checked(), Html.Tag(Html5Tag.H3).Id(scenarioId).Class("title").Content( Html.Tag(Html5Tag.Label).For(toggleId).Content( GetCheckBoxTag(), GetStatus(scenario.Status), Html.Text(scenario.Info.Name.Format(StepNameDecorator))), Html.Tag(Html5Tag.Span).Content(scenario.Info.Labels.Select(GetLabel)).SkipEmpty(), GetDuration(scenario.ExecutionTime), GetSmallLink(scenarioId)), Html.Tag(Html5Tag.Div).Class("categories").Content(string.Join(", ", scenario.Info.Categories)).SkipEmpty(), Html.Tag(Html5Tag.Div).Content(scenario.GetSteps().Select(GetStep)), GetStatusDetails(scenario.StatusDetails), GetComments(scenario.GetAllSteps()), Html.Br())); }
private XElement ToXElement(IScenarioResult scenario) { var objects = new List <object> { new XAttribute("Status", scenario.Status.ToString()), new XAttribute("Name", scenario.Name) }; if (!string.IsNullOrWhiteSpace(scenario.Label)) { objects.Add(new XAttribute("Label", scenario.Label)); } objects.Add(scenario.Steps.Select(ToXElement).Cast <object>().ToArray()); if (!string.IsNullOrWhiteSpace(scenario.StatusDetails)) { objects.Add(new XElement("StatusDetails", scenario.StatusDetails)); } return(new XElement("Scenario", objects)); }
private static XElement ToXElement(IScenarioResult scenario) { var objects = new List<object> { new XAttribute("Status", scenario.Status.ToString()), new XAttribute("Name", scenario.Name) }; if (!string.IsNullOrWhiteSpace(scenario.Label)) objects.Add(new XAttribute("Label", scenario.Label)); if (scenario.ExecutionStart != null) objects.Add(new XAttribute("ExecutionStart", scenario.ExecutionStart)); if (scenario.ExecutionTime != null) objects.Add(new XAttribute("ExecutionTime", scenario.ExecutionTime)); if (scenario.Categories.Any()) objects.Add(scenario.Categories.Select(c => new XElement("Category", new XAttribute("Name", c))).Cast<object>().ToArray()); objects.Add(scenario.Steps.Select(ToXElement).Cast<object>().ToArray()); if (!string.IsNullOrWhiteSpace(scenario.StatusDetails)) objects.Add(new XElement("StatusDetails", scenario.StatusDetails)); return new XElement("Scenario", objects); }
private string GetScenarioCategories(IScenarioResult scenario) { return(GetScenarioCategories(scenario.Categories)); }
public void It_should_wire_steps_scenario_and_feature_infos() { IFeatureInfo featureInfo = null; IFeatureResult featureResult = null; IScenarioInfo scenarioInfo = null; IScenarioResult scenarioResult = null; var stepInfos = new List <IStepInfo>(); var stepResults = new List <IStepResult>(); var featureNotifier = new Mock <IFeatureProgressNotifier>(); var scenarioNotifier = new Mock <IScenarioProgressNotifier>(); featureNotifier.Setup(x => x.NotifyFeatureStart(It.IsAny <IFeatureInfo>())) .Callback((IFeatureInfo x) => featureInfo = x); featureNotifier.Setup(x => x.NotifyFeatureFinished(It.IsAny <IFeatureResult>())) .Callback((IFeatureResult x) => featureResult = x); scenarioNotifier.Setup(x => x.NotifyScenarioStart(It.IsAny <IScenarioInfo>())) .Callback((IScenarioInfo x) => scenarioInfo = x); scenarioNotifier.Setup(x => x.NotifyScenarioFinished(It.IsAny <IScenarioResult>())) .Callback((IScenarioResult x) => scenarioResult = x); scenarioNotifier.Setup(x => x.NotifyStepStart(It.IsAny <IStepInfo>())) .Callback((IStepInfo x) => stepInfos.Add(x)); scenarioNotifier.Setup(x => x.NotifyStepFinished(It.IsAny <IStepResult>())) .Callback((IStepResult x) => stepResults.Add(x)); var feature = new TestableFeatureRunnerRepository(featureNotifier.Object, fixture => scenarioNotifier.Object) .GetRunnerFor(GetType()); var runner = feature.GetBddRunner(this); try { runner.Test().TestGroupScenario(Composite_group); } catch { } feature.Dispose(); Assert.That(featureInfo, Is.Not.Null); Assert.That(featureInfo.RuntimeId, Is.Not.EqualTo(Guid.Empty), "Feature should have unique RuntimeId"); Assert.That(featureResult.Info, Is.SameAs(featureInfo)); Assert.That(scenarioInfo, Is.Not.Null); Assert.That(scenarioInfo.RuntimeId, Is.Not.EqualTo(Guid.Empty), "Scenario should have unique RuntimeId"); Assert.That(scenarioResult.Info, Is.SameAs(scenarioInfo)); Assert.That(scenarioInfo.Parent, Is.SameAs(featureInfo)); Assert.That(stepInfos.Select(x => x.RuntimeId).Distinct().Count(), Is.EqualTo(9), "Each step should have unique RuntimeId"); Assert.That(stepInfos[0].Parent, Is.SameAs(scenarioInfo)); Assert.That(stepInfos[1].Parent, Is.SameAs(stepInfos[0])); Assert.That(stepInfos[2].Parent, Is.SameAs(stepInfos[1])); Assert.That(stepInfos[3].Parent, Is.SameAs(stepInfos[1])); Assert.That(stepInfos[4].Parent, Is.SameAs(stepInfos[1])); Assert.That(stepInfos[5].Parent, Is.SameAs(stepInfos[0])); Assert.That(stepInfos[6].Parent, Is.SameAs(stepInfos[5])); Assert.That(stepInfos[7].Parent, Is.SameAs(stepInfos[5])); Assert.That(stepInfos[8].Parent, Is.SameAs(stepInfos[5])); Assert.That(stepResults[0].Info, Is.SameAs(stepInfos[2]), "1.1.1"); Assert.That(stepResults[1].Info, Is.SameAs(stepInfos[3]), "1.1.2"); Assert.That(stepResults[2].Info, Is.SameAs(stepInfos[4]), "1.1.3"); Assert.That(stepResults[3].Info, Is.SameAs(stepInfos[1]), "1.1"); Assert.That(stepResults[4].Info, Is.SameAs(stepInfos[6]), "1.2.1"); Assert.That(stepResults[5].Info, Is.SameAs(stepInfos[7]), "1.2.2"); Assert.That(stepResults[6].Info, Is.SameAs(stepInfos[8]), "1.2.3"); Assert.That(stepResults[7].Info, Is.SameAs(stepInfos[5]), "1.2"); Assert.That(stepResults[8].Info, Is.SameAs(stepInfos[0]), "1"); }
public void AddScenario(IScenarioResult scenario) { _scenarios.Add(scenario); }
public void NotifyScenarioFinished(IScenarioResult scenario) { _manager.CaptureScenarioResult(scenario.Status); _notifier.NotifyScenarioFinished(scenario); _manager.FinishScenario(); }
/// <inheritdoc /> public bool Equal(IScenarioResult other) { return(Result == other.Result); }
/// <summary> /// Does nothing. /// </summary> public void NotifyScenarioFinished(IScenarioResult scenario) { }
public void NotifyScenarioFinished(IScenarioResult scenario) { _results.Enqueue(scenario); }
public void NotifyScenarioFinished(IScenarioResult scenario) { _notifications.Add($"Scenario Finish: {FormatScenario(scenario.Info)} | Status:{scenario.Status} | ExecutionTimePresent:{scenario.ExecutionTime != null} | Steps:{scenario.GetSteps().Count()} | Details:{scenario.StatusDetails}"); }
/// <summary> /// Notifies that scenario has been finished with given status and optional details. /// </summary> /// <param name="scenarioResult">Scenario result</param> public void NotifyScenarioFinished(IScenarioResult scenarioResult) { foreach (var notifier in Notifiers) notifier.NotifyScenarioFinished(scenarioResult); }
public void NotifyScenarioFinished(IScenarioResult scenarioResult) { }
public void AddScenario(IScenarioResult scenario) { _scenarios.Enqueue(scenario); }
/// <summary> /// Counts all steps with given status. /// </summary> public static int CountStepsWithStatus(this IScenarioResult result, ResultStatus resultStatus) { return(result.Steps.Count(s => s.Status == resultStatus)); }
/// <summary> /// Returns all the steps with their sub steps, belonging to scenario. /// </summary> public static IEnumerable <IStepResult> GetAllSteps(this IScenarioResult scenario) { return(scenario.GetSteps().SelectMany(x => x.GetAllSteps())); }
/// <summary> /// Counts all steps with given status. /// </summary> public static int CountStepsWithStatus(this IScenarioResult result, ExecutionStatus status) { return(result.GetAllSteps().Count(s => s.Status == status)); }
public ExperimentResult(IScenario scenario, IScenarioResult result) { Scenario = scenario; ScenarioResult = result; }