Exemple #1
0
 public void TestStarted(TestRunDto testRun)
 {
     Action.Safe(() =>
     {
         TestRunsRepository.AddNewTestRun(testRun);
     });
 }
Exemple #2
0
 public static void TestStarted(TestRunDto testRun)
 {
     lock (Lock)
     {
         _reporter.TestStarted(testRun);
     }
 }
        public ItemInfoDto SaveTestRun(TestRunDto testRunDto, TestOutputDto testOutputDto)
        {
            var testOutput = testOutputDto.Map();
            var testRun    = testRunDto.Map(testOutput.TestOutputInfo.ToDto());
            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}");
                        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 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)}");
            return(testRun.TestInfo.ToDto());
        }
        public ItemInfoDto SaveTestRun(TestRunDto testRun, TestOutputDto testOutput)
        {
            var res = _dataWriterService.SaveTestRun(testRun, testOutput);

            _cache.SaveTestRun(testRun, testOutput);
            return(res);
        }
Exemple #5
0
        public TestRunDto UpdateTestRunOnScenarioEnd(TestRunDto tr, Exception testError, string testOutput, FeatureContext fc, ScenarioContext sc,
                                                     out TestOutputDto testOutputDto)
        {
            var finishDt    = DateTime.Now;
            var tc          = sc.TryGetTestContext();
            var nameForGuid = GetFullNameForGuid(tc, sc, fc);
            var guid        = nameForGuid.ToMd5HashGuid().ToString();

            tr.TestInfo.Guid   = Guid.Parse(guid);
            tr.TestInfo.Finish = finishDt;
            tr.FullName        = GetFullName(tc, sc, fc);
            testOutputDto      = new TestOutputDto
            {
                Output         = testOutput,
                SuiteOutput    = "",
                TestOutputInfo = new SimpleItemInfoDto
                {
                    Date     = finishDt,
                    ItemName = "Test output"
                }
            };
            tr.Output         = testOutputDto.TestOutputInfo;
            tr.Result         = testError == null ? "Passed" : (testError is AssertFailedException ? "Failed" : "Error");
            tr.TestMessage    = testError?.Message ?? "";
            tr.TestStackTrace = testError?.StackTrace ?? "";
            tr.TestData.AddRange(TestDataHelper.GetTestData());
            return(tr);
        }
        public void OnTestFinished(TestRunDto testRun)
        {
            CurrentRun.RunSummary.Total++;
            switch (testRun.TestResult)
            {
            case TestResult.Passed:
                CurrentRun.RunSummary.Success++;
                break;

            case TestResult.Failed:
                CurrentRun.RunSummary.Failures++;
                break;

            case TestResult.Broken:
                CurrentRun.RunSummary.Errors++;
                break;

            case TestResult.Ignored:
                CurrentRun.RunSummary.Ignored++;
                break;

            case TestResult.Inconclusive:
                CurrentRun.RunSummary.Inconclusive++;
                break;

            case TestResult.Unknown:
                CurrentRun.RunSummary.Unknown++;
                break;

            default:
                CurrentRun.RunSummary.Unknown++;
                break;
            }
            CurrentRun.TestsInfo.Add(testRun.TestInfo);
        }
 public void OnScenarioEnd()
 {
     lock (Lock)
     {
         var te         = _engine.ScenarioContext?.TestError;
         var testOutput = _outputWriter.GetOutput();
         var fc         = _engine.FeatureContext;
         var sc         = _engine.ScenarioContext;
         var finish     = DateTime.Now;
         _currentTestRun.TestInfo.Finish = finish;
         var testOutputDto = new TestOutputDto
         {
             Output         = testOutput,
             SuiteOutput    = "",
             TestOutputInfo = new SimpleItemInfoDto
             {
                 Date     = finish,
                 ItemName = "Test output"
             }
         };
         _currentTestRun.Output = testOutputDto.TestOutputInfo;
         _currentTestRun        = GhprPluginHelper.TestExecutionEngineHelper.UpdateTestRunOnScenarioEnd(
             _currentTestRun, te, testOutputDto, fc, sc);
         ReporterManager.TestFinished(_currentTestRun, testOutputDto);
         _runner.OnScenarioEnd();
         _outputWriter.Flush();
     }
 }
        public TestRunDto Process(TestRunDto testRunDtoWhenStarted, TestRunDto testRunDtoWhenFinished, Guid runGuid)
        {
            var finalTestRunDto = testRunDtoWhenFinished;

            if (finalTestRunDto.TestInfo.Guid.Equals(Guid.Empty))
            {
                finalTestRunDto.TestInfo.Guid = finalTestRunDto.FullName.ToMd5HashGuid();
            }
            finalTestRunDto.Screenshots
            .AddRange(testRunDtoWhenStarted.Screenshots.Where(
                          s => !finalTestRunDto.Screenshots.Any(ts => ts.Date.Equals(s.Date))));
            finalTestRunDto.TestData
            .AddRange(testRunDtoWhenStarted.TestData.Where(
                          s => !finalTestRunDto.TestData.Any(ts => ts.TestDataInfo.Date.Equals(s.TestDataInfo.Date))));
            finalTestRunDto.Events.
            AddRange(testRunDtoWhenStarted.Events.Where(
                         e => !finalTestRunDto.Events.Any(te => te.Comment.Equals(e.Comment))));
            finalTestRunDto.TestInfo.Start = testRunDtoWhenStarted.TestInfo.Start.Equals(default(DateTime))
                ? finalTestRunDto.TestInfo.Start
                : testRunDtoWhenStarted.TestInfo.Start;
            finalTestRunDto.TestInfo.Finish = finalTestRunDto.TestInfo.Finish.Equals(default(DateTime))
                ? DateTime.Now
                : finalTestRunDto.TestInfo.Finish;
            finalTestRunDto.RunGuid = runGuid;
            return(finalTestRunDto);
        }
Exemple #9
0
        public void TestData()
        {
            var now         = DateTime.Now;
            var runGuid     = Guid.NewGuid();
            var testGuid    = Guid.NewGuid();
            var p           = new TestRunDtoProcessor();
            var testOnStart = new TestRunDto(testGuid, "Cool Test")
            {
                TestData = new List <TestDataDto>
                {
                    new TestDataDto
                    {
                        Actual       = "a1",
                        Expected     = "e1",
                        Comment      = "c1",
                        TestDataInfo = new SimpleItemInfoDto {
                            Date = now
                        }
                    },
                    new TestDataDto
                    {
                        Actual       = "a2",
                        Expected     = "e2",
                        Comment      = "c2",
                        TestDataInfo = new SimpleItemInfoDto {
                            Date = now.AddSeconds(1)
                        }
                    }
                }
            };
            var testOnFinish = new TestRunDto
            {
                TestData = new List <TestDataDto>
                {
                    new TestDataDto
                    {
                        Actual       = "a3",
                        Expected     = "e3",
                        Comment      = "c3",
                        TestDataInfo = new SimpleItemInfoDto {
                            Date = now.AddSeconds(2)
                        }
                    },
                    new TestDataDto
                    {
                        Actual       = "a4",
                        Expected     = "e4",
                        Comment      = "c4",
                        TestDataInfo = new SimpleItemInfoDto {
                            Date = now.AddSeconds(3)
                        }
                    }
                }
            };
            var finalTest = p.Process(testOnStart, testOnFinish, runGuid);

            Assert.AreEqual(4, finalTest.TestData.Count);
            Assert.AreEqual(0, finalTest.Screenshots.Count);
            Assert.AreEqual(0, finalTest.Events.Count);
        }
Exemple #10
0
        public void TestInfoTest2()
        {
            var now         = DateTime.Now.AddSeconds(-3);
            var runGuid     = Guid.NewGuid();
            var testGuid    = Guid.NewGuid();
            var p           = new TestRunDtoProcessor();
            var testOnStart = new TestRunDto(testGuid, "Cool Test")
            {
                TestInfo = new ItemInfoDto
                {
                    ItemName = "item1"
                }
            };
            var testOnFinish = new TestRunDto
            {
                TestInfo = new ItemInfoDto
                {
                    Start = now.AddSeconds(4)
                }
            };
            var finalTest = p.Process(testOnStart, testOnFinish, runGuid);

            Assert.AreEqual(testOnFinish.TestInfo.Start, finalTest.TestInfo.Start);
            Assert.True(finalTest.TestInfo.Finish > now);
        }
Exemple #11
0
 public static void TestFinished(TestRunDto testRun, TestOutputDto testOutputDto)
 {
     lock (Lock)
     {
         _reporter.TestFinished(testRun, testOutputDto);
     }
 }
Exemple #12
0
        public void TestEvents()
        {
            var runGuid     = Guid.NewGuid();
            var testGuid    = Guid.NewGuid();
            var p           = new TestRunDtoProcessor();
            var testOnStart = new TestRunDto(testGuid, "Cool Test")
            {
                Events = new List <TestEventDto>
                {
                    new TestEventDto("ev1")
                    {
                        Comment   = "comment",
                        EventInfo = new SimpleItemInfoDto {
                            Date = DateTime.Now, ItemName = "item"
                        },
                        Finished = DateTime.Now,
                        Started  = DateTime.Now.AddSeconds(-3)
                    },
                    new TestEventDto("ev2")
                }
            };
            var testOnFinish = new TestRunDto
            {
                Events = new List <TestEventDto> {
                    new TestEventDto("ev3"), new TestEventDto("ev4")
                }
            };
            var finalTest = p.Process(testOnStart, testOnFinish, runGuid);

            Assert.AreEqual(0, finalTest.TestData.Count);
            Assert.AreEqual(0, finalTest.Screenshots.Count);
            Assert.AreEqual(4, finalTest.Events.Count);
        }
Exemple #13
0
        public TestRunDto GetTestRunOnScenarioStart(ITestRunner runner, FeatureInfo fi, ScenarioInfo si, FeatureContext fc, ScenarioContext sc)
        {
            var className = TestContext.CurrentContext.Test.ClassName;
            var testName  = TestContext.CurrentContext.Test.Name;
            var names     = className.Split('.').ToList();

            if (names.Count >= 2)
            {
                names.RemoveAt(names.Count - 1);
            }
            className = string.Join(".", names);
            var fullName = $"{className}.{fi.Title}.{testName}";
            var name     = si.Title;
            var guid     = TestContext.CurrentContext.Test.FullName.ToMd5HashGuid().ToString();
            var testRun  = new TestRunDto(guid, name, fullName)
            {
                Categories = si.Tags,
                TestInfo   =
                {
                    Start = DateTime.Now
                }
            };

            return(testRun);
        }
Exemple #14
0
 public void TestStarted(TestRunDto testRun)
 {
     Action.Safe(() =>
     {
         TestRunsRepository.AddNewTestRun(testRun);
         Logger.Info($"Test '{testRun.Name}' (Guid: {testRun.TestInfo.Guid}) started");
     });
 }
Exemple #15
0
 public void TestFinished(TestRunDto testRun)
 {
     OnTestFinish(testRun);
     if (ReporterSettings.RealTimeGeneration)
     {
         GenerateReport(DateTime.Now);
     }
 }
Exemple #16
0
 public TestRunDto UpdateTestRunOnScenarioEnd(TestRunDto tr, Exception testError, TestOutputDto testOutputDto, FeatureContext fc, ScenarioContext sc)
 {
     tr.Result         = TestContext.CurrentContext.Result.Outcome.ToString();
     tr.TestMessage    = testError?.Message ?? "";
     tr.TestStackTrace = testError?.StackTrace ?? "";
     tr.TestData.AddRange(TestDataHelper.GetTestData());
     return(tr);
 }
Exemple #17
0
 public GhprTestCase()
 {
     Id                  = "";
     ParentId            = "";
     GhprTestRun         = new TestRunDto();
     GhprTestOutput      = new TestOutputDto();
     GhprTestScreenshots = new List <TestScreenshotDto>();
 }
Exemple #18
0
 public TestRunDto UpdateTestRunOnScenarioEnd(TestRunDto tr, Exception testError, TestOutputDto testOutputDto, FeatureContext fc,
                                              ScenarioContext sc)
 {
     tr.Result         = testError == null ? "Passed" : "Failed";
     tr.TestMessage    = testError?.Message ?? "";
     tr.TestStackTrace = testError?.StackTrace ?? "";
     return(tr);
 }
        public ItemInfoDto SaveTestRun(TestRunDto testRunDto, TestOutputDto testOutputDto)
        {
            //TODO: SAVE testOutputDto correctly!
            var testRunEntity = testRunDto.Map();

            Database.SaveTestRun(testRunEntity);
            return(testRunEntity.Data.TestInfo.ToDto());
        }
        public void DeleteTestScreenshot(TestRunDto testRun, TestScreenshotDto testScreenshot)
        {
            var testScreenshotFullPath = _locationsProvider
                                         .GetTestScreenshotFullPath(testRun.TestInfo.Guid, testScreenshot.TestScreenshotInfo.Date);

            _logger.Debug($"Deleting Test screenshot: {testScreenshotFullPath}");
            File.Delete(testScreenshotFullPath);
        }
        public void DeleteTestOutput(TestRunDto testRun, TestOutputDto testOutput)
        {
            var testOutputFullPath = _locationsProvider.GetTestOutputFullPath(testRun.TestInfo.Guid,
                                                                              testRun.TestInfo.Finish);

            _logger.Debug($"Deleting Test Output: {testOutputFullPath}");
            File.Delete(testOutputFullPath);
        }
Exemple #22
0
 public void TestFinished(TestRunDto testRun, TestOutputDto testOutputDto)
 {
     OnTestFinish(testRun, testOutputDto);
     Logger.Info($"Test '{testRun.Name}' (Guid: {testRun.TestInfo.Guid}) finished");
     if (ReporterSettings.RealTimeGeneration)
     {
         GenerateReport(DateTime.Now);
     }
 }
Exemple #23
0
        public void TestResultTest(string testResult, TestResult result)
        {
            var test = new TestRunDto
            {
                Result = testResult
            };

            Assert.AreEqual(result, test.TestResult);
        }
Exemple #24
0
 private void OnTestFinish(TestRunDto testDtoWhenFinished)
 {
     Action.Safe(() =>
     {
         RunRepository.OnTestFinished(testDtoWhenFinished);
         var testDtoWhenStarted = TestRunsRepository.ExtractCorrespondingTestRun(testDtoWhenFinished);
         var finalTest          = TestRunProcessor.Process(testDtoWhenStarted, testDtoWhenFinished, RunRepository.RunGuid);
         DataService.SaveTestRun(finalTest);
     });
 }
Exemple #25
0
        public void TestProcessRunGuid()
        {
            var guid         = Guid.NewGuid();
            var p            = new TestRunDtoProcessor();
            var testOnStart  = new TestRunDto();
            var testOnFinish = new TestRunDto();
            var finalTest    = p.Process(testOnStart, testOnFinish, guid);

            Assert.AreEqual(guid, finalTest.RunGuid);
        }
 public TestOutputDto GetTestOutput(TestRunDto testRunDto)
 {
     return(new TestOutputDto
     {
         Output = "output",
         SuiteOutput = "suite output",
         TestOutputInfo = new SimpleItemInfoDto {
             Date = DateTime.Now, ItemName = "item"
         }
     });
 }
Exemple #27
0
 private void OnTestFinish(TestRunDto testDtoWhenFinished, TestOutputDto testOutputDto)
 {
     Action.Safe(() =>
     {
         RunRepository.OnTestFinished(testDtoWhenFinished);
         var testDtoWhenStarted = TestRunsRepository.ExtractCorrespondingTestRun(testDtoWhenFinished);
         var finalTest          = TestRunProcessor.Process(testDtoWhenStarted, testDtoWhenFinished, RunRepository.RunGuid);
         Logger.Debug($"Saving test run '{finalTest.Name}' (Guid: {finalTest.TestInfo.Guid})");
         DataWriterService.SaveTestRun(finalTest, testOutputDto);
     });
 }
        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);
        }
Exemple #29
0
        public TestRunDto GetTestRunOnScenarioStart(ITestRunner runner, FeatureInfo fi, ScenarioInfo si, FeatureContext fc,
                                                    ScenarioContext sc)
        {
            var fullName = $"Features.{fi.Title}.{si.Title}";
            var name     = si.Title;
            var guid     = fullName.ToMd5HashGuid();
            var testRun  = new TestRunDto(guid, name, fullName)
            {
                Categories = si.Tags
            };

            return(testRun);
        }
        public void DeleteTest(TestRunDto testRun)
        {
            var testFullPath = _locationsProvider.GetTestFullPath(testRun.TestInfo.Guid,
                                                                  testRun.TestInfo.Finish);

            _logger.Debug($"Deleting Test: {testFullPath}");
            File.Delete(testFullPath);
            _locationsProvider.GetTestFolderPath(testRun.TestInfo.Guid)
            .DeleteItemsFromItemInfosFile(_locationsProvider.Paths.File.Tests, new List <ItemInfoDto>(1)
            {
                testRun.TestInfo
            });
        }