testWidgets function
void
testWidgets(
- String description,
- WidgetTesterCallback callback, {
- bool? skip,
- Timeout? timeout,
- bool semanticsEnabled = true,
- TestVariant<
Object?> variant = const ft.DefaultTestVariant(), - Object? tags,
- int? retry,
- LeakTesting? experimentalLeakTesting,
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,
LeakTesting? experimentalLeakTesting,
}) {
_ensureAllureInstalled();
// Resolve path once for all variants — stack walk is the same each time.
final packagePath = resolvePackageTestPathFromDeclaration(
stackTrace: StackTrace.current,
ignoredLibrarySuffixes: _ignoredLibrarySuffixes,
);
final variantValues = variant.values.toList(growable: false);
for (final value in variantValues) {
final variationDescription = variant.describeValue(value);
// Must match flutter_test's internal variant naming so declared metadata
// merges with the runtime LiveTest name.
final combinedDescription = variationDescription.isEmpty
? description
: '$description (variant: $variationDescription)';
final prepared = preparePackageTestDeclaration(
description: description,
skip: skip,
tags: tags,
packagePath: packagePath,
rawName: combinedDescription,
testCaseName: description,
additionalParameters: <AllureParameter>[
if (variationDescription.isNotEmpty)
AllureParameter(name: 'variant', value: variationDescription),
],
);
ft.WidgetTesterCallback effectiveCallback = callback;
if (prepared.shouldRuntimeSkip) {
effectiveCallback = (tester) async {
ft.markTestSkipped(prepared.runtimeSkipReason);
};
}
ft.testWidgets(
description,
effectiveCallback,
skip: prepared.declarationSkipFlag,
timeout: timeout,
semanticsEnabled: semanticsEnabled,
variant: _SingleValueVariant<Object?>(delegate: variant, value: value),
tags: tags,
retry: retry,
experimentalLeakTesting: experimentalLeakTesting,
);
}
}