buildPackageTestMetadata function
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,
);
}