CircularProgressIndicatorなどのループアニメーションを含むWidgetがUIにあると、driver.tap()やdriver.screenshot()などのdriverへのアクションはフリーズします。
これは、flutter_driverにはUIの更新が終わるまでUIへの操作を待機させるframe syncという機構が備わっているからです。
例
test('test', () async => {
// UIにプログレスバーなどのループアニメーションがあると実行されない
// =>テストがタイムアウト
await driver.tap(find.byValueKey('key'));
});
解決方法
runUnsynchronizedでframe syncを無効にすればUIの更新終了を待たずに実行することができます
test('test', () async {
await driver.runUnsynchronized(() async {
// UIが更新途中でも実行される
await driver.tap(find.byValueKey('key'));
});
});