execute method
Future<void>
execute(
- {required CancelToken cancelToken,
- required TestReport report,
- required TestController tester}
override
Attempts to go back by finding the Flutter built in back button and tapping it.
Implementation
@override
Future<void> execute({
required CancelToken cancelToken,
required TestReport report,
required TestController tester,
}) async {
log(
'$id',
tester: tester,
);
var backButton = find.byTooltip('Back');
var evaluated = backButton.evaluate().toList();
if (evaluated.isEmpty == true) {
backButton = find.byType(CupertinoNavigationBarBackButton);
evaluated = backButton.evaluate().toList();
if (evaluated.isEmpty == true) {
throw Exception('Unable to locate Back button.');
}
}
if (cancelToken.cancelled == true) {
throw Exception('[CANCELLED]: step was cancelled by the test');
}
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(backButton);
}