/// <inheritdoc/> public virtual void Report() { List <string> str = new List <string>(); str.Add($"Running SeleniumPerfXML Version: {FileVersionInfo.GetVersionInfo(Assembly.GetExecutingAssembly().Location).ProductVersion}"); foreach (InformationObject.EnvVar var in Enum.GetValues(typeof(InformationObject.EnvVar))) { str.Add($"{var} = {InformationObject.GetEnvironmentVariable(var)}"); } str.Add("-----------------------"); foreach (ITestSetStatus testSetStatus in this.TestSetStatuses) { str.Add("Name: " + testSetStatus.Name); str.Add("RunSuccessful:" + testSetStatus.RunSuccessful.ToString()); str.Add("StartTime:" + testSetStatus.StartTime.ToString()); str.Add("EndTime:" + testSetStatus.EndTime.ToString()); str.Add("Description:" + testSetStatus.Description); str.Add("ErrorStack:" + testSetStatus.ErrorStack); str.Add("FriendlyErrorMessage:" + testSetStatus.FriendlyErrorMessage); str.Add("Expected:" + testSetStatus.Expected); str.Add("Actual:" + testSetStatus.Actual); } foreach (ITestCaseStatus testCaseStatus in this.TestCaseStatuses) { str.Add(this.Tab(1) + "Name:" + testCaseStatus.Name); str.Add(this.Tab(1) + "TestCaseNumber:" + testCaseStatus.TestCaseNumber.ToString()); str.Add(this.Tab(1) + "RunSuccessful:" + testCaseStatus.RunSuccessful.ToString()); str.Add(this.Tab(1) + "StartTime:" + testCaseStatus.StartTime.ToString()); str.Add(this.Tab(1) + "EndTime:" + testCaseStatus.EndTime.ToString()); str.Add(this.Tab(1) + "Description:" + testCaseStatus.Description); str.Add(this.Tab(1) + "ErrorStack:" + testCaseStatus.ErrorStack); str.Add(this.Tab(1) + "FriendlyErrorMessage:" + testCaseStatus.FriendlyErrorMessage); str.Add(this.Tab(1) + "Expected:" + testCaseStatus.Expected); str.Add(this.Tab(1) + "Actual:" + testCaseStatus.Actual); if (this.TestCaseToTestSteps.ContainsKey(testCaseStatus)) { // log the test steps. foreach (ITestStepStatus testStepStatus in this.TestCaseToTestSteps[testCaseStatus]) { str.Add(this.Tab(2) + "Name:" + testStepStatus.Name); str.Add(this.Tab(2) + "TestStepNumber:" + testStepStatus.TestStepNumber.ToString()); str.Add(this.Tab(2) + "RunSuccessful:" + testStepStatus.RunSuccessful.ToString()); str.Add(this.Tab(2) + "StartTime:" + testStepStatus.StartTime.ToString()); str.Add(this.Tab(2) + "EndTime:" + testStepStatus.EndTime.ToString()); str.Add(this.Tab(2) + "Description:" + testStepStatus.Description); str.Add(this.Tab(2) + "ErrorStack:" + testStepStatus.ErrorStack); str.Add(this.Tab(2) + "FriendlyErrorMessage:" + testStepStatus.FriendlyErrorMessage); str.Add(this.Tab(2) + "Expected:" + testStepStatus.Expected); str.Add(this.Tab(2) + "Actual:" + testStepStatus.Actual); str.Add(this.Tab(2) + "-----------------------"); } } } str.Add(string.Empty); using (StreamWriter file = new StreamWriter($"{this.SaveFileLocation}", true)) { foreach (string line in str) { file.WriteLine(line); } } }