buildPackageTestMetadata function

PackageTestMetadata buildPackageTestMetadata({
  1. required String rawName,
  2. Iterable<String> rawTags = const <String>[],
  3. List<String> groupPath = const <String>[],
  4. String? packagePath,
  5. int retryCount = 1,
  6. bool skipped = false,
  7. String? testCaseName,
  8. String? nativeSelector,
  9. Iterable<AllureParameter> additionalParameters = const <AllureParameter>[],
})

Builds Allure metadata from package test declaration details.

Implementation

PackageTestMetadata buildPackageTestMetadata({
  required String rawName,
  Iterable<String> rawTags = const <String>[],
  List<String> groupPath = const <String>[],
  String? packagePath,
  int retryCount = 1,
  bool skipped = false,
  String? testCaseName,
  String? nativeSelector,
  Iterable<AllureParameter> additionalParameters = const <AllureParameter>[],
}) {
  final titleMetadata = extractMetadataFromString(rawName);
  final normalizedTags = rawTags.whereType<String>().toList();

  final labels = <AllureLabel>[...titleMetadata.labels];
  final links = <AllureLink>[...titleMetadata.links];
  String? externalId = titleMetadata.allureId;

  for (final tag in normalizedTags) {
    if (tag.startsWith('@allure.')) {
      final extracted = extractMetadataFromString(tag);
      labels.addAll(extracted.labels);
      links.addAll(extracted.links);
      externalId ??= extracted.allureId;
    } else {
      labels.add(AllureLabel(name: 'tag', value: tag));
    }
  }

  final resolvedName = titleMetadata.displayName ?? titleMetadata.cleanName;
  final resolvedTestCaseName = testCaseName ?? titleMetadata.cleanName;
  final titlePath = <String>[
    if (packagePath != null) packagePath,
    ...groupPath,
  ];
  final fullNameParts = <String>[
    if (packagePath != null) packagePath,
    ...groupPath,
    resolvedName,
  ];
  final parameters = <AllureParameter>[];
  if (retryCount > 1) {
    parameters.add(
      AllureParameter(
        name: 'retry',
        value: '${retryCount - 1}',
        excluded: true,
      ),
    );
  }
  parameters.addAll(additionalParameters);

  return PackageTestMetadata(
    name: resolvedName,
    fullName: fullNameParts.isEmpty ? resolvedName : fullNameParts.join('#'),
    testCaseName: resolvedTestCaseName,
    titlePath: titlePath,
    groupPath: List<String>.unmodifiable(groupPath),
    packagePath: packagePath,
    labels: labels,
    links: links,
    parameters: parameters,
    externalId: externalId,
    nativeSelector: nativeSelector ?? fullNameParts.join('#'),
    rawTags: normalizedTags,
    skipped: skipped,
  );
}