Esempio n. 1
0
        public void GetScreenshotFileName()
        {
            var creationDate       = new DateTime(2018, 10, 25, 5, 45, 55);
            var screenshotFileName = NamesProvider.GetScreenshotFileName(creationDate);

            Assert.AreEqual($"img_{creationDate:yyyyMMdd_HHmmssfff}.json", screenshotFileName);
        }
Esempio n. 2
0
        public void GetTestOutputFileName()
        {
            var finishDateTime     = new DateTime(2018, 10, 25, 5, 45, 55);
            var testOutputFileName = NamesProvider.GetTestOutputFileName(finishDateTime);

            Assert.AreEqual($"test_output_{finishDateTime:yyyyMMdd_HHmmssfff}.json", testOutputFileName);
        }
Esempio n. 3
0
        public void GetRunFileName()
        {
            var runGuid     = Guid.NewGuid();
            var runFileName = NamesProvider.GetRunFileName(runGuid);

            Assert.AreEqual($"run_{runGuid.ToString("D").ToLower()}.json", runFileName);
        }
Esempio n. 4
0
 public static List <GhprTestCase> GetTestRunsListFromFile(string path, ILogger logger)
 {
     try
     {
         var xmlString = File.ReadAllText(path);
         var doc       = new XmlDocument();
         doc.LoadXml(xmlString);
         XmlNode node         = doc.DocumentElement;
         var     testCases    = node?.SelectNodes(".//*/test-case")?.Cast <XmlNode>().ToList();
         var     list         = testCases?.Select(n => TestRunHelper.GetTestAndOutput(n, logger)).ToList() ?? new List <GhprTestCase>();
         var     testSuites   = node?.SelectNodes(".//*/test-suite")?.Cast <XmlNode>().ToList() ?? new List <XmlNode>();
         var     testInfoDtos = list.Select(d => d.GhprTestRun.TestInfo).ToList();
         foreach (var testSuite in testSuites)
         {
             var testOutputs = TestRunHelper.GetOutputsFromSuite(testSuite, testInfoDtos);
             foreach (var output in testOutputs)
             {
                 var test = list.FirstOrDefault(t => t.GhprTestRun.TestInfo.Guid == output.Key.Guid &&
                                                t.GhprTestRun.TestInfo.Finish == output.Key.Finish) ?? new GhprTestCase();
                 test.GhprTestOutput.Output = output.Value.Output;
                 test.GhprTestOutput.TestOutputInfo.ItemName =
                     NamesProvider.GetTestOutputFileName(test.GhprTestRun.TestInfo.Finish);
                 test.GhprTestOutput.SuiteOutput = output.Value.SuiteOutput;
             }
         }
         return(list);
     }
     catch (Exception ex)
     {
         logger.Exception($"Exception in GetTestRunsListFromFile: {ex.Message}", ex);
         return(null);
     }
 }
Esempio n. 5
0
        public static string Save(this TestRunDto testRun, string path)
        {
            path.Create();
            var fullPath = Path.Combine(path, NamesProvider.GetTestRunFileName(testRun.TestInfo.Finish));

            using (var file = File.CreateText(fullPath))
            {
                var serializer = new JsonSerializer();
                serializer.Serialize(file, testRun);
            }
            return(fullPath);
        }
Esempio n. 6
0
        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);
        }
Esempio n. 7
0
        public static TestOutput Map(this TestOutputDto testOutputDto)
        {
            var name       = NamesProvider.GetTestOutputFileName(testOutputDto.TestOutputInfo.Date);
            var testOutput = new TestOutput
            {
                SuiteOutput    = testOutputDto.SuiteOutput,
                Output         = testOutputDto.Output,
                TestOutputInfo = testOutputDto.TestOutputInfo.MapSimpleItemInfo(name)
            };

            return(testOutput);
        }
Esempio n. 8
0
        public static string Save(this TestOutput testOutput, string path)
        {
            path.Create();
            var fullPath = Path.Combine(path, NamesProvider.GetTestOutputFileName(testOutput.TestOutputInfo.Date));

            using (var file = File.CreateText(fullPath))
            {
                var serializer = new JsonSerializer();
                serializer.Serialize(file, testOutput);
            }
            return(fullPath);
        }
Esempio n. 9
0
        public static TestScreenshot Map(this TestScreenshotDto testScreenshotDto)
        {
            var name           = NamesProvider.GetScreenshotFileName(testScreenshotDto.TestScreenshotInfo.Date);
            var testScreenshot = new TestScreenshot
            {
                TestScreenshotInfo = testScreenshotDto.TestScreenshotInfo.MapSimpleItemInfo(name),
                Base64Data         = testScreenshotDto.Base64Data,
                TestGuid           = testScreenshotDto.TestGuid,
                Format             = testScreenshotDto.Format
            };

            return(testScreenshot);
        }
        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 static TestOutputDto GetTestOutput(XmlNode testNode, DateTime testFinishDate, ILogger logger)
        {
            var output = new TestOutputDto
            {
                SuiteOutput    = "",
                Output         = testNode.SelectSingleNode("./output")?.InnerText ?? "",
                TestOutputInfo = new SimpleItemInfoDto
                {
                    Date     = testFinishDate,
                    ItemName = NamesProvider.GetTestOutputFileName(testFinishDate)
                }
            };

            return(output);
        }
        public static string Save(this TestScreenshotDto testScreenshot, string path)
        {
            path.Create();
            var fullPath = Path.Combine(path, NamesProvider.GetScreenshotFileName(testScreenshot.TestScreenshotInfo.Date));

            using (var file = File.CreateText(fullPath))
            {
                var serializer = new JsonSerializer();
                serializer.Serialize(file, testScreenshot);
            }
            var fileInfo = new FileInfo(fullPath);

            fileInfo.Refresh();
            fileInfo.CreationTime = testScreenshot.TestScreenshotInfo.Date;
            return(fullPath);
        }
        public ItemInfoDto SaveTestRun(TestRunDto testRun, TestOutputDto testOutput)
        {
            testRun.TestInfo.ItemName          = NamesProvider.GetTestRunFileName(testRun.TestInfo.Finish);
            testOutput.TestOutputInfo.ItemName = NamesProvider.GetTestOutputFileName(testRun.TestInfo.Finish);
            testRun.Output.ItemName            = testOutput.TestOutputInfo.ItemName;
            var imgFolder = _locationsProvider.GetScreenshotFolderPath(testRun.TestInfo.Guid);

            if (Directory.Exists(imgFolder))
            {
                var imgFiles = new DirectoryInfo(imgFolder).GetFiles("*.json");
                _logger.Info($"Checking unassigned img files: {imgFiles.Length} file found");
                foreach (var imgFile in imgFiles)
                {
                    var img = Path.Combine(imgFolder, imgFile.Name).LoadTestScreenshot();
                    if (imgFile.CreationTime > testRun.TestInfo.Start)
                    {
                        _logger.Info($"New img file found: {imgFile.CreationTime}, {imgFile.Name}");
                        if (testRun.Screenshots.All(s => s.Date != img.TestScreenshotInfo.Date))
                        {
                            testRun.Screenshots.Add(img.TestScreenshotInfo);
                        }
                    }
                }
            }
            var testOutputFullPath = testOutput.Save(_locationsProvider.GetTestOutputFolderPath(testRun.TestInfo.Guid));

            _logger.Info($"Test output was saved: '{testOutputFullPath}'");
            _logger.Debug($"Test run output data was saved correctly: {JsonConvert.SerializeObject(testOutput, Formatting.Indented)}");
            var testRunFullPath = testRun.Save(_locationsProvider.GetTestFolderPath(testRun.TestInfo.Guid));

            _logger.Info($"Test run was saved: '{testRunFullPath}'");
            var testRunsInfoFullPath = testRun.TestInfo.SaveTestInfo(_locationsProvider);

            _logger.Info($"Test runs Info was saved: '{testRunsInfoFullPath}'");
            _logger.Debug($"Test run data was saved correctly: {JsonConvert.SerializeObject(testRun, Formatting.Indented)}");

            if (!_processedTests.ContainsKey(testRun.TestInfo.Guid))
            {
                _processedTests.Add(testRun.TestInfo.Guid, testRun.TestInfo);
            }

            return(testRun.TestInfo);
        }
        public SimpleItemInfoDto SaveScreenshot(TestScreenshotDto screenshot)
        {
            screenshot.TestScreenshotInfo.ItemName =
                NamesProvider.GetScreenshotFileName(screenshot.TestScreenshotInfo.Date);
            var testGuid = screenshot.TestGuid;
            var path     = _locationsProvider.GetScreenshotFolderPath(testGuid);

            screenshot.Save(path);
            _logger.Info($"Screenshot was saved: '{path}'");
            _logger.Debug($"Screenshot data was saved correctly: {JsonConvert.SerializeObject(screenshot, Formatting.Indented)}");
            if (_processedTests.ContainsKey(testGuid))
            {
                var testRun = _reader.GetTestRun(_processedTests[testGuid]);
                if (testRun.Screenshots.All(s => s.Date != screenshot.TestScreenshotInfo.Date))
                {
                    testRun.Screenshots.Add(screenshot.TestScreenshotInfo);
                    var output = _reader.GetTestOutput(testRun);
                    SaveTestRun(testRun, output);
                }
            }
            return(screenshot.TestScreenshotInfo);
        }
        public ItemInfoDto SaveRun(RunDto run)
        {
            run.RunInfo.ItemName = NamesProvider.GetRunFileName(run.RunInfo.Guid);
            var runGuid  = run.RunInfo.Guid;
            var fileName = NamesProvider.GetRunFileName(runGuid);

            run.RunInfo.ItemName = fileName;
            _locationsProvider.RunsFolderPath.Create();
            var fullRunPath = _locationsProvider.GetRunFullPath(runGuid);

            using (var file = File.CreateText(fullRunPath))
            {
                var serializer = new JsonSerializer();
                serializer.Serialize(file, run);
            }
            _logger.Info($"Run was saved: '{fullRunPath}'");
            var runsInfoFullPath = run.RunInfo.SaveRunInfo(_locationsProvider);

            _logger.Info($"Runs Info was saved: '{runsInfoFullPath}'");
            _logger.Debug($"Run data was saved correctly: {JsonConvert.SerializeObject(run, Formatting.Indented)}");
            return(run.RunInfo);
        }
        public RunDto GetRun(Guid runGuid)
        {
            var run = _locationsProvider.RunsFolderPath.LoadRun(NamesProvider.GetRunFileName(runGuid));

            return(run);
        }