waitFor function
Waits until condition holds, polling every few milliseconds; throws ScenarioFailure
naming what after timeout.
Implementation
Future<void> waitFor(
String what,
FutureOr<bool> Function() condition, {
Duration timeout = const Duration(seconds: 15),
}) async {
final end = DateTime.now().add(timeout);
while (!await condition()) {
if (DateTime.now().isAfter(end)) {
throw ScenarioFailure('timed out waiting for $what');
}
await Future<void>.delayed(const Duration(milliseconds: 5));
}
}