/// <summary> /// Executes the specified test suite. /// </summary> /// <param name="testSuite">The test suite.</param> /// <returns></returns> public TestExecutionResult Execute(ITestCase testCase) { testCase.EnsureNotNull(nameof(testCase)); testCase.Steps.EnsureNotNull(nameof(testCase.Steps)); var result = new TestExecutionResult { TestCaseName = testCase.Name, Status = Enums.TestExecutionStatus.Successful }; _reporter.NewTestCase(testCase.Name, testCase.Description); var activityResultSet = new List <IActivityExecutionResult>(); foreach (var step in testCase.Steps) { string activityDescription = string.Empty; IActivityExecutionResult activityResult; try { var activity = ActivityFactory.GetActivity(step, _reporter, _driver); activityResult = activity.Execute(); activityResultSet.Add(activityResult); if (activityResult.Status == Enums.ActivityExecutionStatus.Failed) { break; } } catch (Exception e) { result.Status = Enums.TestExecutionStatus.Failed; _reporter.Exception(e); break; } } if (activityResultSet.Any(r => r.Status == Enums.ActivityExecutionStatus.Failed)) { _reporter.Fail($"{testCase.Name} failed."); result.Status = Enums.TestExecutionStatus.Failed; } else { _reporter.Pass($"{testCase.Name} passed."); } return(result); }