private void countSteps(Resultsable[] steps) { for (Resultsable step : steps) { Match match = step.getMatch(); // no match = could not find method that was matched to this step -> status is missing if (match != null) { String methodName = match.getLocation(); // location is missing so there is no way to identify step if (StringUtils.isNotEmpty(methodName)) { addNewStep(step.getResult(), methodName); } } } }
@Override public void prepareReport() { context.put("all_features", reportResult.getAllFeatures()); context.put("report_summary", reportResult.getFeatureReport()); context.put("classifications", configuration.getClassifications()); } }
@Override public void prepareReport() { context.put("all_steps", reportResult.getAllSteps()); int allOccurrences = 0; long allDurations = 0; for (StepObject stepObject : reportResult.getAllSteps()) { allOccurrences += stepObject.getTotalOccurrences(); allDurations += stepObject.getDuration(); } context.put("all_occurrences", allOccurrences); context.put("all_durations", Util.formatDuration(allDurations)); // make sure it does not divide by 0 - may happens if there is no step at all or all results have 0 ms durations context.put("all_max_duration", Util.formatDuration(maxDurationOf(reportResult.getAllSteps()))); long average = allDurations / (allOccurrences == 0 ? 1 : allOccurrences); context.put("all_average_duration", Util.formatDuration(average)); }
@Override public void prepareReport() { List<TagObject> tags = reportResult.getAllTags(); context.put("all_tags", tags); context.put("report_summary", reportResult.getTagReport()); context.put("chart_categories", generateTagLabels(filterExcludedTags(tags))); context.put("chart_data", generateTagValues(filterExcludedTags(tags))); }
private void generatePages(Trends trends) { new FeaturesOverviewPage(reportResult, configuration).generatePage(); for (Feature feature : reportResult.getAllFeatures()) { new FeatureReportPage(reportResult, configuration, feature).generatePage(); } new TagsOverviewPage(reportResult, configuration).generatePage(); for (TagObject tagObject : reportResult.getAllTags()) { new TagReportPage(reportResult, configuration, tagObject).generatePage(); } new StepsOverviewPage(reportResult, configuration).generatePage(); new FailuresOverviewPage(reportResult, configuration).generatePage(); if (configuration.isTrendsAvailable()) { new TrendsOverviewPage(reportResult, configuration, trends).generatePage(); } }
public ReportResult(List<Feature> features, Configuration configuration) { buildTime = getCurrentTime(); sortingFactory = new SortingFactory(configuration.getSortingMethod()); // TODO: extract to separate class as sorting method above Feature[] arrayFeatures; if (configuration.getReducingMethods().contains(ReducingMethod.MERGE_FEATURES_BY_ID)) { Map<String, Feature> mergedFeatures = new HashMap<>(); for (Feature feature : features) { Feature mergedFeature = mergedFeatures.get(feature.getId()); if (mergedFeature == null) { mergedFeatures.put(feature.getId(), feature); } else { mergedFeatures.get(feature.getId()).addElements(feature.getElements()); } } arrayFeatures = mergedFeatures.values().toArray(new Feature[mergedFeatures.size()]); } else { arrayFeatures = features.toArray(new Feature[features.size()]); } for (int i = 0; i < arrayFeatures.length; i++) { // as this is the incex, start numeration from 1, not 0 arrayFeatures[i].setMetaData(i, configuration); processFeature(arrayFeatures[i]); } }
String formattedTime = reportResult != null ? reportResult.getBuildTime() : ReportResult.getCurrentTime(); context.put("build_time", formattedTime);
private void processFeature(Feature feature) { allFeatures.add(feature); for (Element element : feature.getElements()) { if (element.isScenario()) { featuresReport.incScenarioFor(element.getStatus()); // all feature tags should be linked with scenario for (Tag tag : feature.getTags()) { processTag(tag, element, feature.getStatus()); } } // all element tags should be linked with element for (Tag tag : element.getTags()) { // don't count tag for feature if was already counted for element if (!ArrayUtils.contains(feature.getTags(), tag)) { processTag(tag, element, element.getStatus()); } } Step[] steps = element.getSteps(); for (Step step : steps) { featuresReport.incStepsFor(step.getResult().getStatus()); featuresReport.incDurationBy(step.getDuration()); } countSteps(steps); countSteps(element.getBefore()); countSteps(element.getAfter()); } featuresReport.incFeaturesFor(feature.getStatus()); tagsReport.incFeaturesFor(feature.getStatus()); }
reportResult = new ReportResult(features, configuration); Reportable reportable = reportResult.getFeatureReport();
private void processTag(Tag tag, Element element, Status status) { TagObject tagObject = addTagObject(tag.getName()); // if this element was not added by feature tag, add it as element tag if (tagObject.addElement(element)) { tagsReport.incScenarioFor(status); Step[] steps = element.getSteps(); for (Step step : steps) { tagsReport.incStepsFor(step.getResult().getStatus()); tagsReport.incDurationBy(step.getDuration()); } } }
private List<Element> collectFailures() { List<Element> failures = new ArrayList<>(); for (Feature feature : reportResult.getAllFeatures()) { if (feature.getStatus().isPassed()) { continue; } for (Element element : feature.getElements()) { if (!element.getStepsStatus().isPassed()) { failures.add(element); } } } return failures; } }
@Override public void prepareReport() { List<TagObject> tags = reportResult.getAllTags(); context.put("all_tags", tags); context.put("report_summary", reportResult.getTagReport()); context.put("chart_categories", generateTagLabels(filterExcludedTags(tags))); context.put("chart_data", generateTagValues(filterExcludedTags(tags))); }
private void generatePages(Trends trends) { new FeaturesOverviewPage(reportResult, configuration).generatePage(); for (Feature feature : reportResult.getAllFeatures()) { new FeatureReportPage(reportResult, configuration, feature).generatePage(); } new TagsOverviewPage(reportResult, configuration).generatePage(); for (TagObject tagObject : reportResult.getAllTags()) { new TagReportPage(reportResult, configuration, tagObject).generatePage(); } new StepsOverviewPage(reportResult, configuration).generatePage(); new FailuresOverviewPage(reportResult, configuration).generatePage(); if (configuration.isTrendsAvailable()) { new TrendsOverviewPage(reportResult, configuration, trends).generatePage(); } }
public ReportResult(List<Feature> features, Configuration configuration) { buildTime = getCurrentTime(); sortingFactory = new SortingFactory(configuration.getSortingMethod()); // TODO: extract to separate class as sorting method above Feature[] arrayFeatures; if (configuration.getReducingMethods().contains(ReducingMethod.MERGE_FEATURES_BY_ID)) { Map<String, Feature> mergedFeatures = new HashMap<>(); for (Feature feature : features) { Feature mergedFeature = mergedFeatures.get(feature.getId()); if (mergedFeature == null) { mergedFeatures.put(feature.getId(), feature); } else { mergedFeatures.get(feature.getId()).addElements(feature.getElements()); } } arrayFeatures = mergedFeatures.values().toArray(new Feature[mergedFeatures.size()]); } else { arrayFeatures = features.toArray(new Feature[features.size()]); } for (int i = 0; i < arrayFeatures.length; i++) { // as this is the incex, start numeration from 1, not 0 arrayFeatures[i].setMetaData(i, configuration); processFeature(arrayFeatures[i]); } }
String formattedTime = reportResult != null ? reportResult.getBuildTime() : ReportResult.getCurrentTime(); context.put("build_time", formattedTime);
private void processFeature(Feature feature) { allFeatures.add(feature); for (Element element : feature.getElements()) { if (element.isScenario()) { featuresReport.incScenarioFor(element.getStatus()); // all feature tags should be linked with scenario for (Tag tag : feature.getTags()) { processTag(tag, element, feature.getStatus()); } } // all element tags should be linked with element for (Tag tag : element.getTags()) { // don't count tag for feature if was already counted for element if (!ArrayUtils.contains(feature.getTags(), tag)) { processTag(tag, element, element.getStatus()); } } Step[] steps = element.getSteps(); for (Step step : steps) { featuresReport.incStepsFor(step.getResult().getStatus()); featuresReport.incDurationBy(step.getDuration()); } countSteps(steps); countSteps(element.getBefore()); countSteps(element.getAfter()); } featuresReport.incFeaturesFor(feature.getStatus()); tagsReport.incFeaturesFor(feature.getStatus()); }
reportResult = new ReportResult(features, configuration); Reportable reportable = reportResult.getFeatureReport();
private void processTag(Tag tag, Element element, Status status) { TagObject tagObject = addTagObject(tag.getName()); // if this element was not added by feature tag, add it as element tag if (tagObject.addElement(element)) { tagsReport.incScenarioFor(status); Step[] steps = element.getSteps(); for (Step step : steps) { tagsReport.incStepsFor(step.getResult().getStatus()); tagsReport.incDurationBy(step.getDuration()); } } }
private List<Element> collectFailures() { List<Element> failures = new ArrayList<>(); for (Feature feature : reportResult.getAllFeatures()) { if (feature.getStatus().isPassed()) { continue; } for (Element element : feature.getElements()) { if (!element.getStepsStatus().isPassed()) { failures.add(element); } } } return failures; } }
@Override public void prepareReport() { context.put("all_features", reportResult.getAllFeatures()); context.put("report_summary", reportResult.getFeatureReport()); context.put("classifications", configuration.getClassifications()); } }