Exemple #1
0
        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);
        }
Exemple #5
0
        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)
 {
 }
Exemple #18
0
        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);
        }
Exemple #19
0
        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);
        }
Exemple #20
0
 public TestRunDto GetTestRun(ItemInfoDto testInfo)
 {
     throw new NotImplementedException();
 }
Exemple #21
0
        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());
            }
        }
Exemple #29
0
        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());
            }
        }