private void NotifyReporters()
        {
            if (_testList.IsNullOrEmpty())
            {
                return;
            }

            if (!_testList.IsNullOrEmpty() && _testList[0].IsBehaviorDrivenType)
            {
                AnalysisStrategy = AnalysisStrategy.BDD;
            }

            lock (_synclock)
            {
                ReportStatusStats.Refresh(_testList);
            }

            var reportAggregates = new ReportAggregates
            {
                TestList               = _testList,
                StatusList             = _statusList,
                ReportStatusStats      = this.ReportStatusStats,
                AuthorContext          = this.AuthorContext,
                CategoryContext        = this.CategoryContext,
                DeviceContext          = this.DeviceContext,
                ExceptionInfoContext   = this.ExceptionInfoContext,
                TestRunnerLogs         = this.TestRunnerLogs,
                SystemAttributeContext = this.SystemAttributeContext
            };

            StarterReporterList.ForEach(x => {
                x.AnalysisStrategy = AnalysisStrategy;
                x.Flush(reportAggregates);
            });
        }
 internal void AddNode(Test node)
 {
     lock (_synclock)
     {
         StarterReporterList.ForEach(x => x.OnNodeStarted(node));
     }
 }
 internal void AddLog(Test test, Log log)
 {
     lock (_synclock)
     {
         CollectRunInfo();
         StarterReporterList.ForEach(x => x.OnLogAdded(test, log));
     }
 }
 internal void SaveTest(Test test)
 {
     lock (_synclock)
     {
         _testList.Add(test);
         StarterReporterList.ForEach(x => x.OnTestStarted(test));
     }
 }
 protected void Deregister(IExtentReporter reporter)
 {
     lock (_synclock)
     {
         reporter.Stop();
         StarterReporterList.Remove(reporter);
     }
 }
 /// <summary>
 /// Subscribe the reporter to receive updates
 /// </summary>
 /// <param name="reporter"><see cref="IExtentReporter"/></param>
 protected void Register(IExtentReporter reporter)
 {
     lock (_synclock)
     {
         reporter.Start();
         StarterReporterList.Add(reporter);
     }
 }
 internal void RemoveTest(Test test)
 {
     lock (_synclock)
     {
         RemoveTestTestList(test);
         RemoveTestTestAttributeContext(test);
         StarterReporterList.ForEach(x => x.OnTestRemoved(test));
     }
 }
 protected void End()
 {
     Flush();
     StarterReporterList.ForEach(x => x.Stop());
     StarterReporterList.Clear();
 }
 internal void AddScreenCapture(Log log, ScreenCapture screenCapture)
 {
     StarterReporterList.ForEach(x => x.OnScreenCaptureAdded(log, screenCapture));
 }
 internal void AddScreenCapture(Test test, ScreenCapture screenCapture)
 {
     StarterReporterList.ForEach(x => x.OnScreenCaptureAdded(test, screenCapture));
 }
 internal void AssignDevice(Test test, Device device)
 {
     StarterReporterList.ForEach(x => x.OnDeviceAssigned(test, device));
 }
 internal void AssignCategory(Test test, Category category)
 {
     StarterReporterList.ForEach(x => x.OnCategoryAssigned(test, category));
 }
 internal void AssignAuthor(Test test, Author author)
 {
     StarterReporterList.ForEach(x => x.OnAuthorAssigned(test, author));
 }