execute method
Future<void>
execute({
- required CancelToken cancelToken,
- required TestReport report,
- required TestController tester,
Executes the step. This will execute the whenTrue or whenFalse based on whether a Widget with a ValueKey containing the testableId exists on the widget tree when this executes.
Implementation
@override
Future<void> execute({
required CancelToken cancelToken,
required TestReport report,
required TestController tester,
}) async {
var whenFalse = tester.resolveVariable(this.whenFalse);
var whenTrue = tester.resolveVariable(this.whenTrue);
String testableId = tester.resolveVariable(this.testableId);
assert(testableId.isNotEmpty == true);
var name = "$id('$testableId')";
log(
name,
tester: tester,
);
TestStep? step;
var widgetExists =
find.byKey(ValueKey<String?>(testableId)).evaluate().isNotEmpty == true;
var resultStep = widgetExists == true ? whenTrue : whenFalse;
if (resultStep != null) {
step = TestStep.fromDynamic(resultStep);
}
if (step == null) {
log(
'conditional_widget_exists: exists: [$widgetExists] -- no step',
tester: tester,
);
} else {
log(
'conditional_widget_exists: exists: [$widgetExists] -- executing step',
tester: tester,
);
await tester.executeStep(
cancelToken: cancelToken,
report: report,
step: step,
subStep: true,
);
}
}