public async Task <ItemInfoDto> Execute() { Item item = await unitOfWork.Item.GetItem(Id); ItemInfoDto result = mapper.Map <Item, ItemInfoDto>(item); return(result); }
public void HashCodeTest() { var now = DateTime.Now; var guid = Guid.NewGuid(); var dto = new ItemInfoDto { Guid = guid, ItemName = "a1", Start = now, Finish = now.AddSeconds(1) }; Assert.AreEqual(dto.GetHashCode(), _comparer.GetHashCode(dto)); }
public void DeleteRun(ItemInfoDto runInfo) { var runFullPath = _locationsProvider.GetRunFullPath(runInfo.Guid); _logger.Debug($"Deleting Run: {runFullPath}"); File.Delete(runFullPath); _locationsProvider.RunsFolderPath .DeleteItemsFromItemInfosFile(_locationsProvider.Paths.File.Runs, new List <ItemInfoDto>(1) { runInfo }); }
public static ItemInfoDto ToDto(this ItemInfo itemInfoDto) { var res = new ItemInfoDto { Guid = itemInfoDto.Guid, Start = itemInfoDto.Start, Finish = itemInfoDto.Finish, ItemName = itemInfoDto.ItemName }; return(res); }
public static ItemInfo MapRunInfo(this ItemInfoDto itemInfoDto) { var run = new ItemInfo { Guid = itemInfoDto.Guid, Start = itemInfoDto.Start, Finish = itemInfoDto.Finish, FileName = LocationsProvider.GetRunFileName(itemInfoDto.Guid) }; return(run); }
public static ItemInfo MapTestRunInfo(this ItemInfoDto itemInfoDto, string itemName) { var testRun = new ItemInfo { ItemName = itemName, Guid = itemInfoDto.Guid, Start = itemInfoDto.Start, Finish = itemInfoDto.Finish }; return(testRun); }
public static ItemInfoDto ToDto(this ItemInfo itemInfo) { var dto = new ItemInfoDto { ItemName = itemInfo.ItemName, Guid = itemInfo.Guid, Start = itemInfo.Start, Finish = itemInfo.Finish }; return(dto); }
public static ItemInfo MapTestRunInfo(this ItemInfoDto itemInfoDto) { var run = new ItemInfo { Guid = itemInfoDto.Guid, Start = itemInfoDto.Start, Finish = itemInfoDto.Finish, ItemName = NamesProvider.GetTestRunFileName(itemInfoDto.Finish) }; return(run); }
public void UpdateTestOutput(ItemInfoDto testInfo, TestOutputDto testOutput) { var outputFolderPath = _locationsProvider.GetTestOutputFolderPath(testInfo.Guid); var outputFileName = NamesProvider.GetTestOutputFileName(testInfo.Finish); var existingOutput = Path.Combine(outputFolderPath, outputFileName).LoadTestOutput(); _logger.Debug($"Loaded existing output: {JsonConvert.SerializeObject(existingOutput, Formatting.Indented)}"); existingOutput.SuiteOutput = testOutput.SuiteOutput; existingOutput.Output = testOutput.Output; File.Delete(Path.Combine(outputFolderPath, outputFileName)); _logger.Debug("Deleted old output"); existingOutput.Save(outputFolderPath); _logger.Debug($"Saved updated output: {JsonConvert.SerializeObject(existingOutput, Formatting.Indented)}"); }
public TestRunDto GetTestRun(ItemInfoDto testInfo) { TestRunDto test = null; if (testInfo != null) { var testFullPath = _locationsProvider.GetTestFullPath(testInfo.Guid, testInfo.Finish); if (File.Exists(testFullPath)) { test = testFullPath.LoadTestRun(); } } return(test); }
public static string SaveItemInfo(this ItemInfoDto itemInfo, string path, string filename, bool removeExisting) { var serializer = new JsonSerializer(); path.Create(); var fullItemInfoPath = Path.Combine(path, filename); if (!File.Exists(fullItemInfoPath)) { using (var file = File.CreateText(fullItemInfoPath)) { serializer.Serialize(file, new List <ItemInfoDto>(1) { itemInfo }); } } else { List <ItemInfoDto> existingItems; using (var file = File.OpenText(fullItemInfoPath)) { existingItems = (List <ItemInfoDto>)serializer.Deserialize(file, typeof(List <ItemInfoDto>)); } var itemsToSave = new List <ItemInfoDto>(existingItems.Count); existingItems.ForEach(i => { itemsToSave.Add(i); }); if (removeExisting && itemsToSave.Any(i => i.Guid.Equals(itemInfo.Guid))) { itemsToSave.RemoveAll(i => i.Guid.Equals(itemInfo.Guid)); } if (!itemsToSave.Contains(itemInfo, new ItemInfoDtoComparer())) { itemsToSave.Add(itemInfo); } using (var file = File.CreateText(fullItemInfoPath)) { itemsToSave = itemsToSave.OrderByDescending(x => x.Start).ToList(); serializer.Serialize(file, itemsToSave); } } return(fullItemInfoPath); }
public void AreEqualTest() { var now = DateTime.Now; var guid1 = Guid.NewGuid(); var dto1 = new ItemInfoDto(); var dto2 = new ItemInfoDto(); Assert.IsTrue(_comparer.Equals(dto1, dto2)); dto1.Guid = guid1; dto2.Guid = guid1; Assert.IsTrue(_comparer.Equals(dto1, dto2)); dto1.ItemName = "a1"; dto2.ItemName = "a2"; Assert.IsTrue(_comparer.Equals(dto1, dto2)); dto1.Start = now; dto2.Start = now; Assert.IsTrue(_comparer.Equals(dto1, dto2)); dto1.Finish = now.AddSeconds(1); dto2.Finish = now.AddSeconds(1); Assert.IsTrue(_comparer.Equals(dto1, dto2)); }
public void AreNotEqualTest() { var now = DateTime.Now; var guid1 = Guid.NewGuid(); var guid2 = Guid.NewGuid(); var dto1 = new ItemInfoDto { Guid = guid1, ItemName = "a1", Start = now, Finish = now.AddSeconds(1) }; var dto2 = new ItemInfoDto { Guid = guid2, ItemName = "a1", Start = now, Finish = now.AddSeconds(1) }; Assert.IsFalse(_comparer.Equals(dto1, dto2)); Assert.IsFalse(_comparer.Equals(dto2, dto1)); dto1 = new ItemInfoDto { Guid = guid1, ItemName = "a1", Start = now.AddSeconds(2), Finish = now.AddSeconds(1) }; dto2 = new ItemInfoDto { Guid = guid1, ItemName = "a1", Start = now, Finish = now.AddSeconds(1) }; Assert.IsFalse(_comparer.Equals(dto1, dto2)); Assert.IsFalse(_comparer.Equals(dto2, dto1)); dto1 = new ItemInfoDto { Guid = guid1, ItemName = "a1", Start = now, Finish = now.AddSeconds(1) }; dto2 = new ItemInfoDto { Guid = guid1, ItemName = "a1", Start = now, Finish = now.AddSeconds(2) }; Assert.IsFalse(_comparer.Equals(dto1, dto2)); Assert.IsFalse(_comparer.Equals(dto2, dto1)); dto1 = new ItemInfoDto { Guid = guid1, ItemName = "a1", Start = now.AddSeconds(2), Finish = now.AddSeconds(1) }; dto2 = new ItemInfoDto { Guid = guid1, ItemName = "a1", Start = now, Finish = now.AddSeconds(2) }; Assert.IsFalse(_comparer.Equals(dto1, dto2)); Assert.IsFalse(_comparer.Equals(dto2, dto1)); }
public void UpdateTestOutput(ItemInfoDto testInfo, TestOutputDto testOutput) { //TODO: implement later! throw new System.NotImplementedException(); }
public static string SaveRunInfo(this ItemInfoDto runInfo, ILocationsProvider locationsProvider) { return(runInfo.SaveItemInfo(locationsProvider.RunsFolderPath, locationsProvider.Paths.File.Runs, true)); }
public void DeleteRun(ItemInfoDto runInfo) { }
public void UpdateTestOutput(ItemInfoDto testInfo, TestOutputDto testOutput) { }
public List <GhprTestCase> GetTestRuns() { var testRuns = new List <GhprTestCase>(); var deploymentFolder = _xml.GetNode("TestSettings")?.GetNode("Deployment")?.GetAttrVal("runDeploymentRoot"); var utrs = _xml.GetNodesList("UnitTestResult"); var uts = _xml.GetNode("TestDefinitions")?.GetNodesList("UnitTest"); if (utrs == null) { Console.WriteLine("No tests found!"); return(testRuns); } foreach (var utr in utrs) { try { var executionId = utr.GetAttrVal("executionId"); var start = utr.GetDateTimeVal("startTime"); var finish = utr.GetDateTimeVal("endTime"); var duration = utr.GetAttrVal("duration"); var durationTimeSpan = new TimeSpan(0); TimeSpan.TryParse(duration, out durationTimeSpan); var internalTestGuid = utr.GetAttrVal("testId") ?? Guid.NewGuid().ToString(); var testName = utr.GetAttrVal("testName"); var ut = uts?.FirstOrDefault(node => (node.GetAttrVal("id") ?? "").Equals(internalTestGuid)); if (utr.FirstChild != null && utr.FirstChild.Name.Equals("InnerResults")) { continue; } var tm = ut?.GetNode("TestMethod"); var testDesc = ut?.GetNode("Description")?.InnerText; var testFullName = (tm?.GetAttrVal("className") ?? "").Split(',')[0] + "." + testName; var testGuid = testFullName.ToMd5HashGuid(); var testInfo = new ItemInfoDto { Start = start, Finish = finish, Guid = testGuid }; var result = utr.GetAttrVal("outcome"); var outputNode = utr.GetNode("Output"); var output = outputNode?.GetNode("StdOut")?.InnerText ?? ""; var msg = outputNode?.GetNode("ErrorInfo")?.GetNode("Message")?.InnerText ?? ""; var sTrace = outputNode?.GetNode("ErrorInfo")?.GetNode("StackTrace")?.InnerText ?? ""; var testOutputInfo = new SimpleItemInfoDto { Date = finish, ItemName = "Test output" }; var testRun = new TestRunDto { TestInfo = testInfo, Name = testName, Description = testDesc, Duration = durationTimeSpan == new TimeSpan(0) ? .0 : durationTimeSpan.TotalSeconds, FullName = testFullName, Result = result, Output = testOutputInfo, TestMessage = msg, TestStackTrace = sTrace }; var testOutput = new TestOutputDto { TestOutputInfo = testOutputInfo, Output = output, SuiteOutput = "" }; var testScreenshots = new List <TestScreenshotDto>(); var resFiles = utr.GetNode("ResultFiles")?.GetNodesList("ResultFile") ?? new List <XmlNode>(); foreach (var resFile in resFiles) { var relativePath = resFile.GetAttrVal("path"); var fullResFilePath = Path.Combine( Path.GetDirectoryName(_trxFullPath), deploymentFolder, "In", executionId, relativePath); if (File.Exists(fullResFilePath)) { try { var ext = Path.GetExtension(fullResFilePath); if (new[] { "png", "jpg", "jpeg", "bmp" }.Contains(ext.Replace(".", "").ToLower())) { var fileInfo = new FileInfo(fullResFilePath); var bytes = File.ReadAllBytes(fullResFilePath); var base64 = Convert.ToBase64String(bytes); var screenInfo = new SimpleItemInfoDto { Date = fileInfo.CreationTimeUtc, ItemName = "" }; var testScreenshotDto = new TestScreenshotDto { Format = ext.Replace(".", ""), TestGuid = testGuid, TestScreenshotInfo = screenInfo, Base64Data = base64 }; testScreenshots.Add(testScreenshotDto); testRun.Screenshots.Add(screenInfo); } } catch (Exception e) { Console.WriteLine($"Error when trying to add test attachment: {e.Message}{Environment.NewLine}" + $"{e.StackTrace}{Environment.NewLine}" + $"The test XML node is:{Environment.NewLine}" + $"{utr.OuterXml}" + $"The file path is:{Environment.NewLine}" + $"{fullResFilePath}"); } } } var ghprTestCase = new GhprTestCase { Id = testGuid.ToString(), ParentId = "", GhprTestRun = testRun, GhprTestOutput = testOutput, GhprTestScreenshots = testScreenshots }; testRuns.Add(ghprTestCase); } catch (Exception e) { Console.WriteLine($"Error when trying to parse the test: {e.Message}{Environment.NewLine}" + $"{e.StackTrace}{Environment.NewLine}" + $"The test XML node is:{Environment.NewLine}" + $"{utr.OuterXml}"); } } return(testRuns); }
public List <KeyValuePair <TestRunDto, TestOutputDto> > GetTestRuns() { var testRuns = new List <KeyValuePair <TestRunDto, TestOutputDto> >(); var utrs = _xml.GetNodesList("UnitTestResult"); var uts = _xml.GetNode("TestDefinitions")?.GetNodesList("UnitTest"); if (utrs == null) { Console.WriteLine("No tests found!"); return(testRuns); } foreach (var utr in utrs) { var start = DateTime.Parse(utr.GetAttrVal("startTime")); var finish = DateTime.Parse(utr.GetAttrVal("endTime")); var testGuid = utr.GetAttrVal("testId") ?? Guid.NewGuid().ToString(); var testInfo = new ItemInfoDto { Start = start, Finish = finish, Guid = Guid.Parse(testGuid) }; var testName = utr.GetAttrVal("testName"); var ut = uts?.FirstOrDefault(node => (node.GetAttrVal("id") ?? "").Equals(testGuid)); var tm = ut?.GetNode("TestMethod"); var testDesc = ut?.GetNode("Description")?.InnerText; var testFullName = (tm?.GetAttrVal("className") ?? "").Split(',')[0] + "." + testName; var result = utr.GetAttrVal("outcome"); var output = utr.GetNode("Output")?.GetNode("StdOut")?.InnerText ?? ""; var msg = utr.GetNode("Output")?.GetNode("ErrorInfo")?.GetNode("Message")?.InnerText ?? ""; var sTrace = utr.GetNode("Output")?.GetNode("ErrorInfo")?.GetNode("StackTrace")?.InnerText ?? ""; var testOutputInfo = new SimpleItemInfoDto { Date = finish, ItemName = "Test output" }; var testRun = new TestRunDto { TestInfo = testInfo, Name = testName, Description = testDesc, FullName = testFullName, Result = result, Output = testOutputInfo, TestMessage = msg, TestStackTrace = sTrace }; var testOutput = new TestOutputDto { TestOutputInfo = testOutputInfo, Output = output, SuiteOutput = "" }; testRuns.Add(new KeyValuePair <TestRunDto, TestOutputDto>(testRun, testOutput)); } return(testRuns); }
public TestRunDto GetTestRun(ItemInfoDto testInfo) { throw new NotImplementedException(); }
public static void Main(string[] args) { var reporter = ReporterFactory.Build(new DummyTestDataProvider()); ResourceExtractor.ExtractReportBase(reporter.ReporterSettings.OutputPath); reporter.Logger.Info("STARTED"); var reportSettings = new ReportSettingsDto(5, 7, "Awesome report", "Awesome project"); reporter.DataWriterService.SaveReportSettings(reportSettings); reporter.DataWriterService.SaveReportSettings(reportSettings); reporter.DataWriterService.SaveReportSettings(reportSettings); var run = new RunDto { RunInfo = new ItemInfoDto { Start = DateTime.Now.AddMinutes(-2), Finish = DateTime.Now, Guid = Guid.NewGuid() }, RunSummary = new RunSummaryDto(), Name = "Awesome run", Sprint = "Sprint 1", TestsInfo = new List <ItemInfoDto>() }; reporter.DataWriterService.SaveRun(run); reporter.DataWriterService.SaveRun(run); reporter.Logger.Info("RUN SAVED"); var testGuid = Guid.NewGuid(); var screen = new TestScreenshotDto { TestScreenshotInfo = new SimpleItemInfoDto { Date = DateTime.Now, ItemName = "Screenshot" }, Base64Data = "ASDJasdkajasdfas==", TestGuid = testGuid }; var test = new TestRunDto(testGuid, "Test", "Test.FullName"); var testInfo = new ItemInfoDto { Start = DateTime.Now.AddSeconds(-2), Finish = DateTime.Now.AddSeconds(2), Guid = testGuid }; test.TestInfo = testInfo; reporter.DataWriterService.SaveScreenshot(screen); reporter.DataWriterService.SaveTestRun(test, new TestOutputDto { TestOutputInfo = new SimpleItemInfoDto { Date = DateTime.Now, ItemName = "Some output" }, Output = "output", SuiteOutput = "suite output" }); reporter.Logger.Info("DONE"); reporter.TearDown(); }
public TestRunDto GetTestRun(ItemInfoDto testInfo) { return(_cache.GetTestRun(testInfo) ?? _dataReaderService.GetTestRun(testInfo)); }
public static string SaveTestInfo(this ItemInfoDto testInfo, ILocationsProvider locationsProvider) { return(testInfo.SaveItemInfo(locationsProvider.GetTestFolderPath(testInfo.Guid), locationsProvider.Paths.File.Tests, false)); }
public void UpdateTestOutput(ItemInfoDto testInfo, TestOutputDto testOutput) { _dataWriterService.UpdateTestOutput(testInfo, testOutput); _cache.UpdateTestOutput(testInfo, testOutput); }
public TestRunDto GetTestRun(ItemInfoDto testInfo) { return(new TestRunDto(Guid.NewGuid(), "Test name", "Full test name")); }
public void DeleteRun(ItemInfoDto runGuid) { //TODO: implement later throw new NotImplementedException(); }
public void DeleteRun(ItemInfoDto runGuid) { _dataWriterService.DeleteRun(runGuid); _cache.DeleteRun(runGuid); }
public static GhprTestCase GetTestRun(XmlNode testNode, ILogger logger) { try { var now = DateTime.UtcNow; var testType = testNode.SelectSingleNode("properties/property[@name='TestType']")?.Val(); var priority = testNode.SelectSingleNode("properties/property[@name='Priority']")?.Val(); var description = testNode.SelectSingleNode("properties/property[@name='Description']")?.Val(); var categories = testNode.SelectNodes("properties/property[@name='Category']")?.Cast <XmlNode>() .Select(n => n.Val()).ToArray(); var testDataDateTimes = testNode.SelectNodes( $"properties/property[contains(@name,'{Paths.Names.TestDataDateTimeKeyTemplate}')]")? .Cast <XmlNode>() .Select(n => n.Val()).ToList(); var testDataActuals = testNode.SelectNodes( $"properties/property[contains(@name,'{Paths.Names.TestDataActualKeyTemplate}')]")? .Cast <XmlNode>() .Select(n => n.Val()).ToArray(); var testDataExpecteds = testNode.SelectNodes( $"properties/property[contains(@name,'{Paths.Names.TestDataExpectedKeyTemplate}')]")? .Cast <XmlNode>() .Select(n => n.Val()).ToArray(); var testDataComments = testNode.SelectNodes( $"properties/property[contains(@name,'{Paths.Names.TestDataCommentKeyTemplate}')]")? .Cast <XmlNode>() .Select(n => n.Val()).ToArray(); var testData = new List <TestDataDto>(); for (var i = 0; i < testDataDateTimes?.Count; i++) { testData.Add(new TestDataDto { TestDataInfo = new SimpleItemInfoDto { Date = DateTime.ParseExact(testDataDateTimes?[i], "yyyyMMdd_HHmmssfff", CultureInfo.InvariantCulture), ItemName = "Test Data" }, Actual = testDataActuals?[i], Expected = testDataExpecteds?[i], Comment = testDataComments?[i] }); } var r = testNode.GetAttribute("result"); var l = testNode.GetAttribute("label"); var fullName = testNode.GetAttribute("fullname"); var testGuid = GetTestGuid(testNode); var name = testNode.GetAttribute("name"); var duration = double.Parse(testNode.GetAttribute("duration") ?? "0.0", CultureInfo.InvariantCulture); var id = testNode.GetAttribute("id") ?? ""; var parentId = testNode.GetAttribute("parentId") ?? ""; if (fullName.Contains(name)) { var ns = fullName.Substring(0, fullName.LastIndexOf(name, StringComparison.Ordinal) - 1); if (ns.Contains("(") && ns.Contains(")")) { var i1 = ns.IndexOf("(", StringComparison.Ordinal); var i2 = ns.IndexOf(")", StringComparison.Ordinal); ns = ns.Substring(0, i1) + ns.Substring(i2 + 1); fullName = ns + "." + name; } } var ti = new ItemInfoDto { Guid = testGuid, Start = testNode.GetAttribute("start-time", now), Finish = testNode.GetAttribute("end-time", now) }; var test = new TestRunDto { Name = name, FullName = fullName, Description = description == "null" ? "" : description, Duration = duration, TestInfo = ti, TestType = testType, Priority = priority, Categories = categories, Result = r != null ? (l != null ? $"{r}: {l}" : r) : "Unknown", Output = new SimpleItemInfoDto { Date = ti.Finish, ItemName = "Test Output" }, TestMessage = testNode.SelectSingleNode("./failure/message")?.InnerText ?? "", TestStackTrace = testNode.SelectSingleNode("./failure/stack-trace")?.InnerText ?? "", Screenshots = new List <SimpleItemInfoDto>(), TestData = testData ?? new List <TestDataDto>() }; var imageAttachments = testNode.SelectNodes(".//attachments/attachment/filePath")? .Cast <XmlNode>().Select(n => n.InnerText).Where(t => t.EndsWithImgExtension()).ToList(); var testScreenshots = new List <TestScreenshotDto>(); foreach (var imageAttachment in imageAttachments.Where(File.Exists)) { var ext = Path.GetExtension(imageAttachment); var fileInfo = new FileInfo(imageAttachment); var bytes = File.ReadAllBytes(imageAttachment); var base64 = Convert.ToBase64String(bytes); var screenInfo = new SimpleItemInfoDto { Date = fileInfo.CreationTimeUtc, ItemName = "" }; var testScreenshotDto = new TestScreenshotDto { Format = ext.Replace(".", ""), TestGuid = testGuid, TestScreenshotInfo = screenInfo, Base64Data = base64 }; testScreenshots.Add(testScreenshotDto); test.Screenshots.Add(testScreenshotDto.TestScreenshotInfo); } var ghprTestCase = new GhprTestCase { Id = id, ParentId = parentId, GhprTestRun = test, GhprTestOutput = GetTestOutput(testNode, test.TestInfo.Finish, logger), GhprTestScreenshots = testScreenshots }; return(ghprTestCase); } catch (Exception ex) { logger.Exception($"Exception in GetTestRun: {ex.Message}{Environment.NewLine}{ex.StackTrace}", ex); return(new GhprTestCase()); } }
public static TestRunDto GetTestRun(XmlNode testNode) { try { var now = DateTime.Now; var guid = testNode.SelectSingleNode("properties/property[@name='TestGuid']")?.GetAttribute("value"); var testType = testNode.SelectSingleNode("properties/property[@name='TestType']")?.GetAttribute("value"); var priority = testNode.SelectSingleNode("properties/property[@name='Priority']")?.GetAttribute("value"); var description = testNode.SelectSingleNode("properties/property[@name='Description']")?.GetAttribute("value"); var categories = testNode.SelectNodes("properties/property[@name='Category']")?.Cast <XmlNode>() .Select(n => n.GetAttribute("value")).ToArray(); var testDataDateTimes = testNode.SelectNodes( $"properties/property[contains(@name,'{Paths.Names.TestDataDateTimeKeyTemplate}')]")? .Cast <XmlNode>() .Select(n => n.GetAttribute("value")).ToList(); var testDataActuals = testNode.SelectNodes( $"properties/property[contains(@name,'{Paths.Names.TestDataActualKeyTemplate}')]")? .Cast <XmlNode>() .Select(n => n.GetAttribute("value")).ToArray(); var testDataExpecteds = testNode.SelectNodes( $"properties/property[contains(@name,'{Paths.Names.TestDataExpectedKeyTemplate}')]")? .Cast <XmlNode>() .Select(n => n.GetAttribute("value")).ToArray(); var testDataComments = testNode.SelectNodes( $"properties/property[contains(@name,'{Paths.Names.TestDataCommentKeyTemplate}')]")? .Cast <XmlNode>() .Select(n => n.GetAttribute("value")).ToArray(); var testData = new List <TestDataDto>(); for (var i = 0; i < testDataDateTimes?.Count; i++) { testData.Add(new TestDataDto { Date = DateTime.ParseExact(testDataDateTimes?[i], "yyyyMMdd_HHmmssfff", CultureInfo.InvariantCulture), Actual = testDataActuals?[i], Expected = testDataExpecteds?[i], Comment = testDataComments?[i] }); } var r = testNode.GetAttribute("result"); var l = testNode.GetAttribute("label"); var fullName = testNode.GetAttribute("fullname"); var testGuid = guid != null?Guid.Parse(guid) : fullName.ToMd5HashGuid(); var name = testNode.GetAttribute("name"); if (fullName.Contains(name)) { var ns = fullName.Substring(0, fullName.LastIndexOf(name, StringComparison.Ordinal) - 1); if (ns.Contains("(") && ns.Contains(")")) { var i1 = ns.IndexOf("(", StringComparison.Ordinal); var i2 = ns.IndexOf(")", StringComparison.Ordinal); ns = ns.Substring(0, i1) + ns.Substring(i2 + 1); fullName = ns + "." + name; } } var ti = new ItemInfoDto { Guid = testGuid, Start = testNode.GetAttribute("start-time", now), Finish = testNode.GetAttribute("end-time", now) }; var test = new TestRunDto { Name = name, FullName = fullName, Description = description == "null" ? "" : description, TestInfo = ti, TestType = testType, Priority = priority, Categories = categories, Result = r != null ? (l != null ? $"{r}: {l}" : r) : "Unknown", Output = testNode.SelectSingleNode(".//output")?.InnerText ?? "", TestMessage = testNode.SelectSingleNode(".//message")?.InnerText ?? "", TestStackTrace = testNode.SelectSingleNode(".//stack-trace")?.InnerText ?? "", Screenshots = new List <TestScreenshotDto>(), TestData = testData ?? new List <TestDataDto>() }; return(test); } catch (Exception ex) { var log = new Core.Utils.Log(GhprEventListener.OutputPath); log.Exception(ex, "Exception in GetTestRun"); return(new TestRunDto()); } }