testWidgets function

void testWidgets(
  1. String description,
  2. WidgetTesterCallback callback, {
  3. bool? skip,
  4. Timeout? timeout,
  5. bool semanticsEnabled = true,
  6. TestVariant<Object?> variant = const ft.DefaultTestVariant(),
  7. Object? tags,
  8. int? retry,
})

Drop-in replacement for flutter_test's testWidgets with Allure reporting.

Implementation

void testWidgets(
  String description,
  ft.WidgetTesterCallback callback, {
  bool? skip,
  ft.Timeout? timeout,
  bool semanticsEnabled = true,
  ft.TestVariant<Object?> variant = const ft.DefaultTestVariant(),
  Object? tags,
  int? retry,
}) {
  _ensureAllureInstalled();
  final packagePath = resolvePackageTestPathFromDeclaration(
    stackTrace: StackTrace.current,
    ignoredLibrarySuffixes: _ignoredLibrarySuffixes,
  );
  final groupPath = PackageTestScopeRegistry.instance.currentPath;
  final testPlan = parseTestPlan();
  final variantValues = variant.values.toList(growable: false);

  for (final value in variantValues) {
    PackageTestScopeRegistry.instance.registerTest(packagePath: packagePath);
    final variationDescription = variant.describeValue(value);
    final combinedDescription = variationDescription.isEmpty
        ? description
        : '$description (variant: $variationDescription)';
    final declaredMetadata = buildPackageTestMetadata(
      rawName: combinedDescription,
      rawTags: normalizePackageTestTags(tags),
      groupPath: groupPath,
      packagePath: packagePath,
      skipped: skip == true,
      testCaseName: description,
      additionalParameters: <AllureParameter>[
        if (variationDescription.isNotEmpty)
          AllureParameter(name: 'variant', value: variationDescription),
      ],
    );
    PackageTestScopeRegistry.instance.registerMetadata(declaredMetadata);

    var effectiveSkip = skip;
    if (testPlan != null &&
        !includedInTestPlan(
          testPlan,
          id: declaredMetadata.externalId,
          fullName: declaredMetadata.fullName,
          nativeSelector: declaredMetadata.nativeSelector,
          tags: declaredMetadata.rawTags,
        ) &&
        skip != true) {
      effectiveSkip = true;
    }

    ft.testWidgets(
      description,
      callback,
      skip: effectiveSkip,
      timeout: timeout,
      semanticsEnabled: semanticsEnabled,
      variant: _SingleValueVariant<Object?>(delegate: variant, value: value),
      tags: tags,
      retry: retry,
    );
  }
}