waitForInitialWidgets static method
Implementation
static Future<void> waitForInitialWidgets(
WidgetTester tester, {
EnsembleTestCase? testCase,
}) async {
final keysToWait = <String>[];
if (testCase != null) {
for (final step in testCase.steps) {
if (step.type != 'expectVisible' && step.type != 'tap') {
break;
}
final id = step.args['id']?.toString();
if (id != null && id.isNotEmpty) keysToWait.add(id);
}
}
await tester.pump();
await _yieldToRealAsyncWork(tester);
for (var i = 0; i < 80; i++) {
if (keysToWait.isEmpty ||
keysToWait.every(
(id) => find.byKey(ValueKey(id)).evaluate().isNotEmpty,
)) {
return;
}
await tester.pump(const Duration(milliseconds: 100));
await _yieldToRealAsyncWork(tester);
}
if (keysToWait.isNotEmpty) {
throw EnsembleTestFailure(
'Timed out waiting for widgets: ${keysToWait.join(", ")}',
);
}
}