我为我的应用设置了以下登录测试:
testWidgets('sign in with email and password', (WidgetTester tester) async {
app.main();
await tester.pumpAndSettle(Duration(seconds: 3));
final emailInputFinder = find.byKey(Key('type-email'));
final passwordInputFinder = find.byKey(Key('type-password'));
final emailButtonFinder = find.byKey(Key('enter-email'));
final passwordButtonFinder = find.byKey(Key('enter-password'));
final dashboardFinder = find.byKey(Key('dashboard'));
await tester.enterText(emailInputFinder, 'test.lab.user.01@...');
await tester.pumpAndSettle(Duration(seconds: 3));
await tester.tap(emailButtonFinder);
await tester.pumpAndSettle(Duration(seconds: 3));
await tester.enterText(passwordInputFinder, '...');
await tester.pumpAndSettle(Duration(seconds: 3));
await tester.tap(passwordButtonFinder);
await tester.pumpAndSettle(Duration(seconds: 3));
expect(dashboardFinder, findsOneWidget);
});
硬编码的 3 秒延迟并不理想,但没有它我无法使用驱动程序运行测试。
使用驱动程序在我的本地计算机上运行很好。我使用命令
flutter drive --driver=test_driver/integration_test.dart --target=integration_test/app_test.dart
但是当我将 Espresso 测试上传到 Firebase 测试实验室并查看视频时,登录屏幕会加载,但第一个enterText()
命令似乎没有效果。文本字段中没有添加任何内容,并且测试只是超时。
我尝试了 and 的各种组合tester.tap()
,tester.showKeyboard()
但到目前为止,没有任何结果。
如何enterText()
在 TestLab 支持的 Espresso 环境中正常工作?