[Flutter] Integration testで画面を閉じたい

エミュレーターや実機上で動かすIntegration testで画面を閉じたいシーンがありました。しかしながら画面を閉じる時にWillPopScopeウィジェットのonWillPopイベントである処理を実装していたのですが、これが動いてくれていませんでした。

当初はIntegration testの中で以下のようなコードで画面を閉じていました。

(tester.state(find.byType(Navigator)) as NavigatorState).pop();
await tester.pumpAndSettle();

これだとただ画面を閉じただけになっていて、OnWillPopイベントが動いていませんでした。

Androidの戻るボタンを押す動きになればいいのかと色々ググったところ、以下のコードが出てきましたがエラーになって動いてくれませんでした。

await tester.tap(find.byTooltip('Back')); // find.byTooltip('戻る')という記事も見かけましたがエラーは変わらず
await tester.pumpAndSettle();

以下のコードも見かけましたがやはり動かず。

await Process.run(
  'adb',
  <String>['shell', 'input', 'keyevent', 'KEYCODE_BACK'],
  runInShell: true,
);
await tester.pumpAndSettle();

AppBarの戻るボタンにキーを設定してそれをタップさせましたが、画面すら閉じてくれませんでした。

await tester.tap(find.byKey(const ValueKey('app_bar_back')));
await tester.pumpAndSettle();

最終的には以下のコードでいけました。

final dynamic widgetsAppState = tester.state(find.byType(WidgetsApp));
await widgetsAppState.didPopRoute();

きちんとルートを意識してpopさせるというような感じでしょうか。いまいち分かっていませんがとりあえず動いたのでよしとします。