private ITestReporter GetOrStartSuiteNode(string fullName, DateTime startTime) { if (_suitesflow.ContainsKey(fullName)) { return(_suitesflow[fullName]); } else { var parts = fullName.Split('.'); if (parts.Length == 1) { if (_suitesflow.ContainsKey(parts[0])) { return(_suitesflow[parts[0]]); } else { // create root var startSuiteRequest = new StartTestItemRequest { Name = fullName, StartTime = startTime, Type = TestItemType.Suite }; var rootSuite = _launchReporter.StartChildTestReporter(startSuiteRequest); _suitesflow[fullName] = rootSuite; return(rootSuite); } } else { var parent = GetOrStartSuiteNode(string.Join(".", parts.Take(parts.Length - 1)), startTime); // create var startSuiteRequest = new StartTestItemRequest { Name = parts.Last(), StartTime = startTime, Type = TestItemType.Suite }; var suite = parent.StartChildTestReporter(startSuiteRequest); _suitesflow[fullName] = suite; return(suite); } } }
public static void BeforeFeature(FeatureContext featureContext) { try { if (_launchReporter != null) { ContextAwareLogHandler.ActiveFeatureContext = featureContext; lock (LockHelper.GetLock(FeatureInfoEqualityComparer.GetFeatureInfoHashCode(featureContext.FeatureInfo))) { var currentFeature = ReportPortalAddin.GetFeatureTestReporter(featureContext); if (currentFeature == null || currentFeature.FinishTask != null) { var request = new StartTestItemRequest { Name = featureContext.FeatureInfo.Title, Description = featureContext.FeatureInfo.Description, StartTime = DateTime.UtcNow, Type = TestItemType.Suite, Attributes = featureContext.FeatureInfo.Tags?.Select(t => new ItemAttributeConverter().ConvertFrom(t, (opts) => opts.UndefinedKey = "Tag")).ToList() }; var eventArg = new TestItemStartedEventArgs(_service, request, null, featureContext, null); ReportPortalAddin.OnBeforeFeatureStarted(null, eventArg); if (!eventArg.Canceled) { currentFeature = _launchReporter.StartChildTestReporter(request); ReportPortalAddin.SetFeatureTestReporter(featureContext, currentFeature); ReportPortalAddin.OnAfterFeatureStarted(null, new TestItemStartedEventArgs(_service, request, currentFeature, featureContext, null)); } } else { ReportPortalAddin.IncrementFeatureThreadCount(featureContext); } } } } catch (Exception exp) { _traceLogger.Error(exp.ToString()); } }