execute method
Future<void>
execute({
- required CancelToken cancelToken,
- required TestReport report,
- required TestController tester,
override
Attempts to locate the Testable widget identified by testableId and then will attempt to tap the widget on center point of the widget.
Implementation
@override
Future<void> execute({
required CancelToken cancelToken,
required TestReport report,
required TestController tester,
}) async {
String? testableId = tester.resolveVariable(this.testableId);
assert(testableId?.isNotEmpty == true);
var name = "$id('$testableId')";
log(
name,
tester: tester,
);
var finder = await waitFor(
testableId,
cancelToken: cancelToken,
tester: tester,
timeout: timeout,
);
if (cancelToken.cancelled == true) {
throw Exception('[CANCELLED]: step was cancelled by the test');
}
await sleep(
tester.delays.postFoundWidget,
cancelStream: cancelToken.stream,
tester: tester,
);
if (cancelToken.cancelled == true) {
throw Exception('[CANCELLED]: step was cancelled by the test');
}
var evaluated = finder.evaluate();
if (evaluated.length > 1) {
var error =
'[ERROR]: found (${evaluated.length}) widgets; expected only one.';
var index = 0;
for (var w in evaluated) {
error += '\n ${++index}: ${w.widget.runtimeType} [${w.widget.key}]';
}
throw Exception(error);
}
await driver.tap(finder);
}