Reland eliminate timeouts from integration tests (#85141)

diff --git a/dev/benchmarks/complex_layout/test_driver/measure_scroll_smoothness_test.dart b/dev/benchmarks/complex_layout/test_driver/measure_scroll_smoothness_test.dart
index 9dd60ce..c40876a 100644
--- a/dev/benchmarks/complex_layout/test_driver/measure_scroll_smoothness_test.dart
+++ b/dev/benchmarks/complex_layout/test_driver/measure_scroll_smoothness_test.dart
@@ -7,7 +7,6 @@
 import 'package:integration_test/integration_test_driver.dart' as driver;
 
 Future<void> main() => driver.integrationDriver(
-  timeout: const Duration(minutes: 5),
   responseDataCallback: (Map<String, dynamic>? data) async {
     await driver.writeResponseData(
       data,
diff --git a/dev/benchmarks/complex_layout/test_driver/scroll_perf_test.dart b/dev/benchmarks/complex_layout/test_driver/scroll_perf_test.dart
index f7d5d1e..afa169f 100644
--- a/dev/benchmarks/complex_layout/test_driver/scroll_perf_test.dart
+++ b/dev/benchmarks/complex_layout/test_driver/scroll_perf_test.dart
@@ -55,12 +55,12 @@
 
     test('complex_layout_scroll_perf', () async {
       await testScrollPerf('complex-scroll', 'complex_layout_scroll_perf');
-    });
+    }, timeout: Timeout.none);
 
     test('tiles_scroll_perf', () async {
       await driver.tap(find.byTooltip('Open navigation menu'));
       await driver.tap(find.byValueKey('scroll-switcher'));
       await testScrollPerf('tiles-scroll', 'tiles_scroll_perf');
-    });
+    }, timeout: Timeout.none);
   });
 }
diff --git a/dev/benchmarks/complex_layout/test_driver/semantics_perf_test.dart b/dev/benchmarks/complex_layout/test_driver/semantics_perf_test.dart
index cc7828c..e37603b 100644
--- a/dev/benchmarks/complex_layout/test_driver/semantics_perf_test.dart
+++ b/dev/benchmarks/complex_layout/test_driver/semantics_perf_test.dart
@@ -40,6 +40,6 @@
 
       final String jsonEncoded = json.encode(<String, dynamic>{'initialSemanticsTreeCreation': semanticsTreeCreation.inMilliseconds});
       File(p.join(testOutputsDirectory, 'complex_layout_semantics_perf.json')).writeAsStringSync(jsonEncoded);
-    });
+    }, timeout: Timeout.none);
   });
 }
diff --git a/dev/benchmarks/macrobenchmarks/test/cull_opacity_perf_e2e.dart b/dev/benchmarks/macrobenchmarks/test/cull_opacity_perf_e2e.dart
index 6609d16..0be0116 100644
--- a/dev/benchmarks/macrobenchmarks/test/cull_opacity_perf_e2e.dart
+++ b/dev/benchmarks/macrobenchmarks/test/cull_opacity_perf_e2e.dart
@@ -15,6 +15,5 @@
     kCullOpacityRouteName,
     pageDelay: const Duration(seconds: 1),
     duration: const Duration(seconds: 10),
-    timeout: const Duration(seconds: 45),
   );
 }
diff --git a/dev/benchmarks/macrobenchmarks/test/multi_widget_construction_perf_e2e.dart b/dev/benchmarks/macrobenchmarks/test/multi_widget_construction_perf_e2e.dart
index c5991e2..442c9ec 100644
--- a/dev/benchmarks/macrobenchmarks/test/multi_widget_construction_perf_e2e.dart
+++ b/dev/benchmarks/macrobenchmarks/test/multi_widget_construction_perf_e2e.dart
@@ -12,6 +12,5 @@
     kMultiWidgetConstructionRouteName,
     pageDelay: const Duration(seconds: 1),
     duration: const Duration(seconds: 10),
-    timeout: const Duration(seconds: 45),
   );
 }
diff --git a/dev/benchmarks/macrobenchmarks/test/util.dart b/dev/benchmarks/macrobenchmarks/test/util.dart
index 557a029..e99bfa4 100644
--- a/dev/benchmarks/macrobenchmarks/test/util.dart
+++ b/dev/benchmarks/macrobenchmarks/test/util.dart
@@ -15,7 +15,6 @@
   String routeName, {
   Duration pageDelay,
   Duration duration = const Duration(seconds: 3),
-  Duration timeout = const Duration(seconds: 30),
   ControlCallback body,
   ControlCallback setup,
 }) {
@@ -63,5 +62,5 @@
       }
       await durationFuture;
     });
-  }, semanticsEnabled: false, timeout: Timeout(timeout));
+  }, semanticsEnabled: false, timeout: Timeout.none);
 }
diff --git a/dev/benchmarks/macrobenchmarks/test_driver/animated_image_test.dart b/dev/benchmarks/macrobenchmarks/test_driver/animated_image_test.dart
index 3e1d85b..2b6f71f 100644
--- a/dev/benchmarks/macrobenchmarks/test_driver/animated_image_test.dart
+++ b/dev/benchmarks/macrobenchmarks/test_driver/animated_image_test.dart
@@ -20,5 +20,5 @@
     await summary.writeTimelineToFile(fileName, pretty: true);
 
     await driver.close();
-  });
+  }, timeout: Timeout.none);
 }
diff --git a/dev/benchmarks/macrobenchmarks/test_driver/cull_opacity_perf_test.dart b/dev/benchmarks/macrobenchmarks/test_driver/cull_opacity_perf_test.dart
index eb7a8c6..40c8e81 100644
--- a/dev/benchmarks/macrobenchmarks/test_driver/cull_opacity_perf_test.dart
+++ b/dev/benchmarks/macrobenchmarks/test_driver/cull_opacity_perf_test.dart
@@ -12,6 +12,5 @@
     kCullOpacityRouteName,
     pageDelay: const Duration(seconds: 1),
     duration: const Duration(seconds: 10),
-    timeout: const Duration(minutes: 2),
   );
 }
diff --git a/dev/benchmarks/macrobenchmarks/test_driver/e2e_test.dart b/dev/benchmarks/macrobenchmarks/test_driver/e2e_test.dart
index d931eff..b6b9b8b 100644
--- a/dev/benchmarks/macrobenchmarks/test_driver/e2e_test.dart
+++ b/dev/benchmarks/macrobenchmarks/test_driver/e2e_test.dart
@@ -5,7 +5,6 @@
 import 'package:integration_test/integration_test_driver.dart' as driver;
 
 Future<void> main() => driver.integrationDriver(
-  timeout: const Duration(minutes: 5),
   responseDataCallback: (Map<String, dynamic> data) async {
     await driver.writeResponseData(
       data['performance'] as Map<String, dynamic>,
diff --git a/dev/benchmarks/macrobenchmarks/test_driver/frame_policy_test.dart b/dev/benchmarks/macrobenchmarks/test_driver/frame_policy_test.dart
index 53a2a0d..77aa56a 100644
--- a/dev/benchmarks/macrobenchmarks/test_driver/frame_policy_test.dart
+++ b/dev/benchmarks/macrobenchmarks/test_driver/frame_policy_test.dart
@@ -7,7 +7,6 @@
 import 'package:integration_test/integration_test_driver.dart' as driver;
 
 Future<void> main() => driver.integrationDriver(
-  timeout: const Duration(minutes: 1),
   responseDataCallback: (Map<String, dynamic> data) async {
     final Map<String, dynamic> benchmarkLiveResult =
         data['benchmarkLive'] as Map<String,dynamic>;
diff --git a/dev/benchmarks/macrobenchmarks/test_driver/large_image_changer_test.dart b/dev/benchmarks/macrobenchmarks/test_driver/large_image_changer_test.dart
index c19c384..8ac78c0 100644
--- a/dev/benchmarks/macrobenchmarks/test_driver/large_image_changer_test.dart
+++ b/dev/benchmarks/macrobenchmarks/test_driver/large_image_changer_test.dart
@@ -40,5 +40,5 @@
     }
 
     await driver.close();
-  });
+  }, timeout: Timeout.none);
 }
diff --git a/dev/benchmarks/macrobenchmarks/test_driver/multi_widget_construction_perf_test.dart b/dev/benchmarks/macrobenchmarks/test_driver/multi_widget_construction_perf_test.dart
index 7b4b00d..b233b17 100644
--- a/dev/benchmarks/macrobenchmarks/test_driver/multi_widget_construction_perf_test.dart
+++ b/dev/benchmarks/macrobenchmarks/test_driver/multi_widget_construction_perf_test.dart
@@ -12,6 +12,5 @@
     kMultiWidgetConstructionRouteName,
     pageDelay: const Duration(seconds: 1),
     duration: const Duration(seconds: 10),
-    timeout: const Duration(seconds: 45),
   );
 }
diff --git a/dev/benchmarks/macrobenchmarks/test_driver/picture_cache_perf_test.dart b/dev/benchmarks/macrobenchmarks/test_driver/picture_cache_perf_test.dart
index 0affa49..31445b2 100644
--- a/dev/benchmarks/macrobenchmarks/test_driver/picture_cache_perf_test.dart
+++ b/dev/benchmarks/macrobenchmarks/test_driver/picture_cache_perf_test.dart
@@ -11,7 +11,6 @@
   macroPerfTest(
     'picture_cache_perf',
     kPictureCacheRouteName,
-    timeout: const Duration(seconds: 60),
     pageDelay: const Duration(seconds: 1),
     driverOps: (FlutterDriver driver) async {
       final SerializableFinder tabBarView = find.byValueKey('tabbar_view');
diff --git a/dev/benchmarks/macrobenchmarks/test_driver/stack_size_perf_test.dart b/dev/benchmarks/macrobenchmarks/test_driver/stack_size_perf_test.dart
index 6344b5c..e47932c 100644
--- a/dev/benchmarks/macrobenchmarks/test_driver/stack_size_perf_test.dart
+++ b/dev/benchmarks/macrobenchmarks/test_driver/stack_size_perf_test.dart
@@ -30,7 +30,7 @@
     await file.writeAsString(_encodeJson(<String, dynamic>{
       'stack_size': stackSizeInBytes,
     }));
-  }, timeout: const Timeout(kTimeout));
+  }, timeout: Timeout.none);
 }
 
 String _encodeJson(Map<String, dynamic> jsonObject) {
diff --git a/dev/benchmarks/macrobenchmarks/test_driver/util.dart b/dev/benchmarks/macrobenchmarks/test_driver/util.dart
index 55a18df..e4bd50f 100644
--- a/dev/benchmarks/macrobenchmarks/test_driver/util.dart
+++ b/dev/benchmarks/macrobenchmarks/test_driver/util.dart
@@ -6,8 +6,6 @@
 import 'package:macrobenchmarks/common.dart';
 import 'package:test/test.dart' hide TypeMatcher, isInstanceOf;
 
-const Duration kTimeout = Duration(seconds: 30);
-
 typedef DriverTestCallBack = Future<void> Function(FlutterDriver driver);
 
 Future<void> runDriverTestForRoute(String routeName, DriverTestCallBack body) async {
@@ -34,14 +32,13 @@
 }
 
 void macroPerfTest(
-    String testName,
-    String routeName,
-    { Duration pageDelay,
-      Duration duration = const Duration(seconds: 3),
-      Duration timeout = kTimeout,
-      Future<void> Function(FlutterDriver driver) driverOps,
-      Future<void> Function(FlutterDriver driver) setupOps,
-    }) {
+  String testName,
+  String routeName, {
+  Duration pageDelay,
+  Duration duration = const Duration(seconds: 3),
+  Future<void> Function(FlutterDriver driver) driverOps,
+  Future<void> Function(FlutterDriver driver) setupOps,
+}) {
   test(testName, () async {
     Timeline timeline;
     await runDriverTestForRoute(routeName, (FlutterDriver driver) async {
@@ -67,5 +64,5 @@
 
     final TimelineSummary summary = TimelineSummary.summarize(timeline);
     await summary.writeTimelineToFile(testName, pretty: true);
-  }, timeout: Timeout(timeout));
+  }, timeout: Timeout.none);
 }
diff --git a/dev/benchmarks/platform_views_layout/test_driver/scroll_perf_test.dart b/dev/benchmarks/platform_views_layout/test_driver/scroll_perf_test.dart
index e42ff78..1fa81c6 100644
--- a/dev/benchmarks/platform_views_layout/test_driver/scroll_perf_test.dart
+++ b/dev/benchmarks/platform_views_layout/test_driver/scroll_perf_test.dart
@@ -55,6 +55,6 @@
       await driver.runUnsynchronized(() async {
         await testScrollPerf('platform-views-scroll', 'platform_views_scroll_perf');
       });
-    });
+    }, timeout: Timeout.none);
   });
 }
diff --git a/dev/benchmarks/platform_views_layout_hybrid_composition/test_driver/scroll_perf_test.dart b/dev/benchmarks/platform_views_layout_hybrid_composition/test_driver/scroll_perf_test.dart
index 7626fc6..fa4dcf9 100644
--- a/dev/benchmarks/platform_views_layout_hybrid_composition/test_driver/scroll_perf_test.dart
+++ b/dev/benchmarks/platform_views_layout_hybrid_composition/test_driver/scroll_perf_test.dart
@@ -55,6 +55,6 @@
       await driver.runUnsynchronized(() async {
         await testScrollPerf('platform-views-scroll', 'platform_views_scroll_perf_hybrid_composition');
       });
-    });
+    }, timeout: Timeout.none);
   });
 }
diff --git a/dev/benchmarks/test_apps/stocks/test_driver/scroll_perf_test.dart b/dev/benchmarks/test_apps/stocks/test_driver/scroll_perf_test.dart
index 03a6ae9..21c8d3e 100644
--- a/dev/benchmarks/test_apps/stocks/test_driver/scroll_perf_test.dart
+++ b/dev/benchmarks/test_apps/stocks/test_driver/scroll_perf_test.dart
@@ -40,6 +40,6 @@
 
       final TimelineSummary summary = TimelineSummary.summarize(timeline);
       await summary.writeTimelineToFile('stocks_scroll_perf', pretty: true);
-    });
+    }, timeout: Timeout.none);
   });
 }
diff --git a/dev/benchmarks/test_apps/stocks/test_driver/stock_view_test.dart b/dev/benchmarks/test_apps/stocks/test_driver/stock_view_test.dart
index 308ec4e..07a54df 100644
--- a/dev/benchmarks/test_apps/stocks/test_driver/stock_view_test.dart
+++ b/dev/benchmarks/test_apps/stocks/test_driver/stock_view_test.dart
@@ -22,7 +22,7 @@
     test('Stock list is shown', () async {
       final SerializableFinder stockList = find.byValueKey('stock-list');
       expect(stockList, isNotNull);
-    });
+    }, timeout: Timeout.none);
 
     test('open AAPL stock', () async {
       final SerializableFinder stockList = find.byValueKey('stock-list');
@@ -36,10 +36,9 @@
 
       final SerializableFinder stockOption =
           find.byValueKey('AAPL_symbol_name');
-      final String symbol = await driver.getText(stockOption,
-          timeout: const Duration(milliseconds: 500));
+      final String symbol = await driver.getText(stockOption);
 
       expect(symbol, 'AAPL');
-    }, skip: 'Needs to be fixed on Fuchsia.');
+    }, skip: 'Needs to be fixed on Fuchsia.', timeout: Timeout.none);
   });
 }
diff --git a/dev/bots/analyze.dart b/dev/bots/analyze.dart
index ed8f93f..35865ea 100644
--- a/dev/bots/analyze.dart
+++ b/dev/bots/analyze.dart
@@ -72,6 +72,9 @@
   print('$clock Internationalization...');
   await verifyInternationalizations();
 
+  print('$clock Integration test timeouts...');
+  await verifyIntegrationTestTimeouts(flutterRoot);
+
   // Ensure that all package dependencies are in sync.
   print('$clock Package dependencies...');
   await runCommand(flutter, <String>['update-packages', '--verify-only'],
@@ -394,6 +397,31 @@
   }
 }
 
+Future<void> verifyIntegrationTestTimeouts(String workingDirectory) async {
+  final List<String> errors = <String>[];
+  final String dev = path.join(workingDirectory, 'dev');
+  final List<File> files = await _allFiles(dev, 'dart', minimumMatches: 1)
+      .where((File file) => file.path.contains('test_driver') && (file.path.endsWith('_test.dart') || file.path.endsWith('util.dart')))
+      .toList();
+  for (final File file in files) {
+    final String contents = file.readAsStringSync();
+    final int testCount = ' test('.allMatches(contents).length;
+    final int timeoutNoneCount = 'timeout: Timeout.none'.allMatches(contents).length;
+    if (testCount != timeoutNoneCount) {
+      errors.add('$yellow${file.path}$reset has at least $testCount test(s) but only $timeoutNoneCount `Timeout.none`(s).');
+    }
+  }
+  if (errors.isNotEmpty) {
+    exitWithError(<String>[
+      if (errors.length == 1)
+        '${bold}An error was detected when looking at import dependencies within the flutter_tools package:$reset'
+      else
+        '${bold}Multiple errors were detected when looking at import dependencies within the flutter_tools package:$reset',
+      ...errors.map((String paragraph) => '$paragraph\n'),
+    ]);
+  }
+}
+
 Future<void> verifyInternationalizations() async {
   final EvalResult materialGenResult = await _evalCommand(
     dart,
@@ -1006,7 +1034,7 @@
   );
   if (evalResult.exitCode != 0) {
     exitWithError(<String>[
-      'git ls-filese failed with exit code ${evalResult.exitCode}',
+      'git ls-files failed with exit code ${evalResult.exitCode}',
       '${bold}stdout:$reset',
       evalResult.stdout,
       '${bold}stderr:$reset',
diff --git a/dev/integration_tests/android_semantics_testing/test_driver/main_test.dart b/dev/integration_tests/android_semantics_testing/test_driver/main_test.dart
index 7c59114..8b8d2b4 100644
--- a/dev/integration_tests/android_semantics_testing/test_driver/main_test.dart
+++ b/dev/integration_tests/android_semantics_testing/test_driver/main_test.dart
@@ -161,7 +161,7 @@
             ],
           ),
         );
-      });
+      }, timeout: Timeout.none);
 
       test('password TextField has correct Android semantics', () async {
         final SerializableFinder passwordTextField = find.descendant(
@@ -229,7 +229,7 @@
             ],
           ),
         );
-      });
+      }, timeout: Timeout.none);
 
       tearDownAll(() async {
         await driver.tap(find.byValueKey('back'));
@@ -287,7 +287,7 @@
             ],
           ),
         );
-      });
+      }, timeout: Timeout.none);
       test('Radio has correct Android semantics', () async {
         Future<AndroidSemanticsNode> getRadioSemantics(String key) async {
           return getSemantics(find.byValueKey(key));
@@ -323,7 +323,7 @@
             ],
           ),
         );
-      });
+      }, timeout: Timeout.none);
       test('Switch has correct Android semantics', () async {
         Future<AndroidSemanticsNode> getSwitchSemantics(String key) async {
           return getSemantics(find.byValueKey(key));
@@ -359,7 +359,7 @@
             ],
           ),
         );
-      });
+      }, timeout: Timeout.none);
 
       // Regression test for https://github.com/flutter/flutter/issues/20820.
       test('Switch can be labeled', () async {
@@ -381,7 +381,7 @@
             ],
           ),
         );
-      });
+      }, timeout: Timeout.none);
 
       tearDownAll(() async {
         await driver.tap(find.byValueKey('back'));
@@ -461,7 +461,7 @@
         } finally {
           await driver.tap(find.byValueKey('$popupKeyValue.${popupItems.first}'));
         }
-      });
+      }, timeout: Timeout.none);
 
       test('Dropdown Menu has correct Android semantics', () async {
         expect(
@@ -551,7 +551,7 @@
             ),
           );
         }
-      });
+      }, timeout: Timeout.none);
 
       test('Modal alert dialog has correct Android semantics', () async {
         expect(
@@ -647,7 +647,7 @@
         } finally {
           await driver.tap(find.byValueKey('$alertKeyValue.OK'));
         }
-      });
+      }, timeout: Timeout.none);
 
       tearDownAll(() async {
         await Future<void>.delayed(const Duration(milliseconds: 500));
@@ -665,14 +665,14 @@
           await getSemantics(find.byValueKey(appBarTitleKeyValue)),
           hasAndroidSemantics(isHeading: true),
         );
-      });
+      }, timeout: Timeout.none);
 
       test('body text does not have Android heading semantics', () async {
         expect(
           await getSemantics(find.byValueKey(bodyTextKeyValue)),
           hasAndroidSemantics(isHeading: false),
         );
-      });
+      }, timeout: Timeout.none);
 
       tearDownAll(() async {
         await driver.tap(find.byValueKey('back'));
diff --git a/dev/integration_tests/android_views/test_driver/main_test.dart b/dev/integration_tests/android_views/test_driver/main_test.dart
index 5893286..37d0297 100644
--- a/dev/integration_tests/android_views/test_driver/main_test.dart
+++ b/dev/integration_tests/android_views/test_driver/main_test.dart
@@ -27,7 +27,7 @@
     expect(errorMessage, '');
     final SerializableFinder backButton = find.byValueKey('back');
     await driver.tap(backButton);
-  });
+  }, timeout: Timeout.none);
 
   group('WindowManager', ()
   {
@@ -49,7 +49,7 @@
       await driver.tap(showAlertDialog);
       final String status = await driver.getText(find.byValueKey('Status'));
       expect(status, 'Success');
-    });
+    }, timeout: Timeout.none);
 
     test('Child windows can handle touches', () async {
       final SerializableFinder addWindow = find.byValueKey('AddWindow');
@@ -59,9 +59,8 @@
       await driver.tap(tapWindow);
       final String windowClickCount = await driver.getText(
         find.byValueKey('WindowClickCount'),
-        timeout: const Duration(seconds: 5),
       );
       expect(windowClickCount, 'Click count: 1');
-    });
+    }, timeout: Timeout.none);
   });
 }
diff --git a/dev/integration_tests/channels/test_driver/main_test.dart b/dev/integration_tests/channels/test_driver/main_test.dart
index dcba327..7f9f171 100644
--- a/dev/integration_tests/channels/test_driver/main_test.dart
+++ b/dev/integration_tests/channels/test_driver/main_test.dart
@@ -25,7 +25,7 @@
       if (status != 'complete') {
         fail('Failed at step $step with status $status');
       }
-    }, timeout: const Timeout(Duration(minutes: 1)));
+    }, timeout: Timeout.none);
 
     tearDownAll(() async {
       driver.close();
diff --git a/dev/integration_tests/external_ui/test_driver/main_test.dart b/dev/integration_tests/external_ui/test_driver/main_test.dart
index fc96e45..474663e 100644
--- a/dev/integration_tests/external_ui/test_driver/main_test.dart
+++ b/dev/integration_tests/external_ui/test_driver/main_test.dart
@@ -59,7 +59,7 @@
       expect(double.parse(matchFast.group(1)!), closeTo(flutterFrameRate * 2.0, 5.0));
       expect(double.parse(matchFast.group(2)!), closeTo(flutterFrameRate, 10.0));
       expect(int.parse(matchFast.group(3)!), 1);
-    });
+    }, timeout: Timeout.none);
 
     tearDownAll(() async {
       driver.close();
diff --git a/dev/integration_tests/flavors/test_driver/main_test.dart b/dev/integration_tests/flavors/test_driver/main_test.dart
index af905f6..2bc8493 100644
--- a/dev/integration_tests/flavors/test_driver/main_test.dart
+++ b/dev/integration_tests/flavors/test_driver/main_test.dart
@@ -17,7 +17,7 @@
       final SerializableFinder flavorField = find.byValueKey('flavor');
       final String flavor = await driver.getText(flavorField);
       expect(flavor, 'paid');
-    });
+    }, timeout: Timeout.none);
 
     tearDownAll(() async {
       driver.close();
diff --git a/dev/integration_tests/flutter_gallery/test_driver/scroll_perf_test.dart b/dev/integration_tests/flutter_gallery/test_driver/scroll_perf_test.dart
index 19006e1..92401c8 100644
--- a/dev/integration_tests/flutter_gallery/test_driver/scroll_perf_test.dart
+++ b/dev/integration_tests/flutter_gallery/test_driver/scroll_perf_test.dart
@@ -42,6 +42,6 @@
 
       final TimelineSummary summary = TimelineSummary.summarize(timeline);
       await summary.writeTimelineToFile('home_scroll_perf', pretty: true);
-    });
+    }, timeout: Timeout.none);
   });
 }
diff --git a/dev/integration_tests/flutter_gallery/test_driver/scroll_perf_web_test.dart b/dev/integration_tests/flutter_gallery/test_driver/scroll_perf_web_test.dart
index fbd61d5..f30932d 100644
--- a/dev/integration_tests/flutter_gallery/test_driver/scroll_perf_web_test.dart
+++ b/dev/integration_tests/flutter_gallery/test_driver/scroll_perf_web_test.dart
@@ -35,6 +35,6 @@
         await driver.scroll(demoList, 0.0, 300.0, const Duration(milliseconds: 300));
         await Future<void>.delayed(const Duration(milliseconds: 500));
       }
-    });
+    }, timeout: Timeout.none);
   });
 }
diff --git a/dev/integration_tests/flutter_gallery/test_driver/transitions_perf_e2e.dart b/dev/integration_tests/flutter_gallery/test_driver/transitions_perf_e2e.dart
index 0225af5..cb3a817 100644
--- a/dev/integration_tests/flutter_gallery/test_driver/transitions_perf_e2e.dart
+++ b/dev/integration_tests/flutter_gallery/test_driver/transitions_perf_e2e.dart
@@ -48,7 +48,6 @@
           ..removeAll(kProfiledDemos);
         await runDemos(unprofiledDemos.toList(), tester);
       },
-      timeout: const Timeout(Duration(minutes: 5)),
       semanticsEnabled: withSemantics,
     );
   });
diff --git a/dev/integration_tests/flutter_gallery/test_driver/transitions_perf_e2e_test.dart b/dev/integration_tests/flutter_gallery/test_driver/transitions_perf_e2e_test.dart
index e4936e8..6ea8511 100644
--- a/dev/integration_tests/flutter_gallery/test_driver/transitions_perf_e2e_test.dart
+++ b/dev/integration_tests/flutter_gallery/test_driver/transitions_perf_e2e_test.dart
@@ -5,7 +5,6 @@
 import 'package:integration_test/integration_test_driver.dart' as driver;
 
 Future<void> main() => driver.integrationDriver(
-  timeout: const Duration(minutes: 5),
   responseDataCallback: (Map<String, dynamic>? data) async {
     await driver.writeResponseData(
       data!['performance'] as Map<String, dynamic>,
diff --git a/dev/integration_tests/flutter_gallery/test_driver/transitions_perf_test.dart b/dev/integration_tests/flutter_gallery/test_driver/transitions_perf_test.dart
index e6b7d7d..5f36f06 100644
--- a/dev/integration_tests/flutter_gallery/test_driver/transitions_perf_test.dart
+++ b/dev/integration_tests/flutter_gallery/test_driver/transitions_perf_test.dart
@@ -130,7 +130,6 @@
     await driver.scrollUntilVisible(demoList, demoItem,
       dyScroll: -48.0,
       alignment: 0.5,
-      timeout: const Duration(seconds: 30),
     );
 
     for (int i = 0; i < 2; i += 1) {
@@ -181,7 +180,7 @@
       // Assert that we can use semantics related finders in profile mode.
       final int id = await driver.getSemanticsId(find.bySemanticsLabel('Material'));
       expect(id, greaterThan(-1));
-    }, skip: !withSemantics);
+    }, skip: !withSemantics, timeout: Timeout.none);
 
     test('all demos', () async {
       // Collect timeline data for just a limited set of demos to avoid OOMs.
@@ -218,6 +217,6 @@
         await runDemos(unprofiledDemos.toList(), driver);
       }
 
-    }, timeout: const Timeout(Duration(minutes: 5)));
+    }, timeout: Timeout.none);
   });
 }
diff --git a/dev/integration_tests/hybrid_android_views/test_driver/main_test.dart b/dev/integration_tests/hybrid_android_views/test_driver/main_test.dart
index 7bf8843..0ad2ff0 100644
--- a/dev/integration_tests/hybrid_android_views/test_driver/main_test.dart
+++ b/dev/integration_tests/hybrid_android_views/test_driver/main_test.dart
@@ -25,7 +25,7 @@
     expect(errorMessage, '');
     final SerializableFinder backButton = find.byValueKey('back');
     await driver.tap(backButton);
-  });
+  }, timeout: Timeout.none);
 
   group('Nested View Event', () {
     setUpAll(() async {
@@ -45,7 +45,7 @@
       await driver.tap(showAlertDialog);
       final String status = await driver.getText(find.byValueKey('Status'));
       expect(status, 'Success');
-    });
+    }, timeout: Timeout.none);
 
     test('Child view can handle touches', () async {
       final SerializableFinder addChildView = find.byValueKey('AddChildView');
@@ -56,7 +56,7 @@
       final String nestedViewClickCount =
         await driver.getText(find.byValueKey('NestedViewClickCount'));
       expect(nestedViewClickCount, 'Click count: 1');
-    });
+    }, timeout: Timeout.none);
   });
 
   group('Flutter surface switch', () {
@@ -107,6 +107,6 @@
         '    |-ViewGroup\n'
         '  |-FlutterImageView\n' // Flutter UI (overlay surface)
       );
-    });
+    }, timeout: Timeout.none);
   });
 }
diff --git a/dev/integration_tests/ios_platform_view_tests/test_driver/main_test.dart b/dev/integration_tests/ios_platform_view_tests/test_driver/main_test.dart
index ed36c7d..4cd8fe3 100644
--- a/dev/integration_tests/ios_platform_view_tests/test_driver/main_test.dart
+++ b/dev/integration_tests/ios_platform_view_tests/test_driver/main_test.dart
@@ -40,7 +40,7 @@
 
       final Health driverHealth = await driver.checkHealth();
       expect(driverHealth.status, HealthStatus.ok);
-    });
+    }, timeout: Timeout.none);
 
     test('Merge thread to create and remove platform views should not crash',
         () async {
@@ -65,6 +65,6 @@
 
       final Health driverHealth = await driver.checkHealth();
       expect(driverHealth.status, HealthStatus.ok);
-    });
+    }, timeout: Timeout.none);
   });
 }
diff --git a/dev/integration_tests/platform_interaction/test_driver/main_test.dart b/dev/integration_tests/platform_interaction/test_driver/main_test.dart
index 277114c..4d7fbba 100644
--- a/dev/integration_tests/platform_interaction/test_driver/main_test.dart
+++ b/dev/integration_tests/platform_interaction/test_driver/main_test.dart
@@ -25,7 +25,7 @@
       if (status != 'complete') {
         fail('Failed at step $step with status $status');
       }
-    });
+    }, timeout: Timeout.none);
 
     tearDownAll(() async {
       driver.close();
diff --git a/dev/integration_tests/ui/test_driver/commands_debug_paint_test.dart b/dev/integration_tests/ui/test_driver/commands_debug_paint_test.dart
index f5fbdf1..270d0c6 100644
--- a/dev/integration_tests/ui/test_driver/commands_debug_paint_test.dart
+++ b/dev/integration_tests/ui/test_driver/commands_debug_paint_test.dart
@@ -18,5 +18,5 @@
 
   test('check that we are painting in debugPaintSize mode', () async {
     expect(await driver.requestData('status'), 'log: paint debugPaintSize');
-  });
+  }, timeout: Timeout.none);
 }
diff --git a/dev/integration_tests/ui/test_driver/commands_none_test.dart b/dev/integration_tests/ui/test_driver/commands_none_test.dart
index dfdb903..dfb20df 100644
--- a/dev/integration_tests/ui/test_driver/commands_none_test.dart
+++ b/dev/integration_tests/ui/test_driver/commands_none_test.dart
@@ -18,6 +18,6 @@
 
   test('check that we are in normal mode', () async {
     expect(await driver.requestData('status'), 'log: paint');
-    await driver.waitForAbsent(find.byType('PerformanceOverlay'), timeout: Duration.zero);
-  });
+    await driver.waitForAbsent(find.byType('PerformanceOverlay'));
+  }, timeout: Timeout.none);
 }
diff --git a/dev/integration_tests/ui/test_driver/commands_performance_overlay_test.dart b/dev/integration_tests/ui/test_driver/commands_performance_overlay_test.dart
index c489055..85f13ef 100644
--- a/dev/integration_tests/ui/test_driver/commands_performance_overlay_test.dart
+++ b/dev/integration_tests/ui/test_driver/commands_performance_overlay_test.dart
@@ -18,6 +18,6 @@
 
   test('check that we are showing the performance overlay', () async {
     await driver.requestData('status'); // force a reassemble
-    await driver.waitFor(find.byType('PerformanceOverlay'), timeout: Duration.zero);
-  });
+    await driver.waitFor(find.byType('PerformanceOverlay'));
+  }, timeout: Timeout.none);
 }
diff --git a/dev/integration_tests/ui/test_driver/defines_test.dart b/dev/integration_tests/ui/test_driver/defines_test.dart
index 63665b8..38a156c 100644
--- a/dev/integration_tests/ui/test_driver/defines_test.dart
+++ b/dev/integration_tests/ui/test_driver/defines_test.dart
@@ -18,5 +18,5 @@
 
   test('Can run with --dart-define', () async {
     await driver.waitFor(find.text('Example,AValue'));
-  });
+  }, timeout: Timeout.none);
 }
diff --git a/dev/integration_tests/ui/test_driver/driver_test.dart b/dev/integration_tests/ui/test_driver/driver_test.dart
index 2f8c966..105ed47 100644
--- a/dev/integration_tests/ui/test_driver/driver_test.dart
+++ b/dev/integration_tests/ui/test_driver/driver_test.dart
@@ -23,7 +23,7 @@
 
     test('waitFor should find text "present"', () async {
       await driver.waitFor(presentText);
-    });
+    }, timeout: Timeout.none);
 
     test('waitForAbsent should time out waiting for text "present" to disappear', () async {
       await expectLater(
@@ -34,7 +34,7 @@
           contains('Timeout while executing waitForAbsent'),
         )),
       );
-    });
+    }, timeout: Timeout.none);
 
     test('waitForAbsent should resolve when text "present" disappears', () async {
       // Begin waiting for it to disappear
@@ -50,7 +50,7 @@
 
       // Ensure waitForAbsent resolves
       await whenWaitForAbsentResolves.future;
-    });
+    }, timeout: Timeout.none);
 
     test('waitFor times out waiting for "present" to reappear', () async {
       await expectLater(
@@ -61,7 +61,7 @@
           contains('Timeout while executing waitFor'),
         )),
       );
-    });
+    }, timeout: Timeout.none);
 
     test('waitFor should resolve when text "present" reappears', () async {
       // Begin waiting for it to reappear
@@ -77,11 +77,11 @@
 
       // Ensure waitFor resolves
       await whenWaitForResolves.future;
-    });
+    }, timeout: Timeout.none);
 
     test('waitForAbsent resolves immediately when the element does not exist', () async {
       await driver.waitForAbsent(find.text('that does not exist'));
-    });
+    }, timeout: Timeout.none);
 
     test('uses hit test to determine tappable elements', () async {
       final SerializableFinder a = find.byValueKey('a');
@@ -97,7 +97,7 @@
       // Close it again
       await driver.tap(a);
       await driver.waitForAbsent(menu);
-    });
+    }, timeout: Timeout.none);
 
     test('enters text in a text field', () async {
       final SerializableFinder textField = find.byValueKey('enter-text-field');
@@ -106,6 +106,6 @@
       await driver.waitFor(find.text('Hello!'));
       await driver.enterText('World!');
       await driver.waitFor(find.text('World!'));
-    });
+    }, timeout: Timeout.none);
   });
 }
diff --git a/dev/integration_tests/ui/test_driver/empty_test.dart b/dev/integration_tests/ui/test_driver/empty_test.dart
index 2daec60..482a7a1 100644
--- a/dev/integration_tests/ui/test_driver/empty_test.dart
+++ b/dev/integration_tests/ui/test_driver/empty_test.dart
@@ -18,6 +18,6 @@
       await driver.close();
     });
 
-    test('empty', () async {}, timeout: const Timeout(Duration(minutes: 1)));
+    test('empty', () async {}, timeout: Timeout.none);
   });
 }
diff --git a/dev/integration_tests/ui/test_driver/keyboard_resize_test.dart b/dev/integration_tests/ui/test_driver/keyboard_resize_test.dart
index d224142..db70d5b 100644
--- a/dev/integration_tests/ui/test_driver/keyboard_resize_test.dart
+++ b/dev/integration_tests/ui/test_driver/keyboard_resize_test.dart
@@ -59,6 +59,6 @@
         }
       }
       expect(heightTextDidExpand, isTrue);
-    });
+    }, timeout: Timeout.none);
   });
 }
diff --git a/dev/integration_tests/ui/test_driver/keyboard_textfield_test.dart b/dev/integration_tests/ui/test_driver/keyboard_textfield_test.dart
index 9eecafe..ed770c5 100644
--- a/dev/integration_tests/ui/test_driver/keyboard_textfield_test.dart
+++ b/dev/integration_tests/ui/test_driver/keyboard_textfield_test.dart
@@ -46,6 +46,6 @@
 
       // Ensure the scroll offset changed appropriately when TextField scrolled back into view.
       expect(scrollOffsetWithKeyboard, greaterThan(scrollOffsetWithoutKeyboard));
-    });
+    }, timeout: Timeout.none);
   });
 }
diff --git a/dev/integration_tests/ui/test_driver/license_check_test.dart b/dev/integration_tests/ui/test_driver/license_check_test.dart
index 56f04f0..758c607 100644
--- a/dev/integration_tests/ui/test_driver/license_check_test.dart
+++ b/dev/integration_tests/ui/test_driver/license_check_test.dart
@@ -37,7 +37,7 @@
       final String foundLicense = await driver.getText(find.byValueKey('FlutterLicense'));
       expect(foundPackage, equals('flutter'));
       expect(foundLicense, equals(license));
-    });
+    }, timeout: Timeout.none);
 
     test('engine license', () async {
       await driver.waitFor(find.byValueKey('Header'));
@@ -46,6 +46,6 @@
       expect(foundPackage, equals('engine'));
       // The engine has the same license, but with a different Copyright date.
       expect(foundLicense, contains(license.replaceFirst('2014', '2013')));
-    });
+    }, timeout: Timeout.none);
   });
 }
diff --git a/dev/integration_tests/ui/test_driver/route_test.dart b/dev/integration_tests/ui/test_driver/route_test.dart
index 6f1ecf5..d9f5479 100644
--- a/dev/integration_tests/ui/test_driver/route_test.dart
+++ b/dev/integration_tests/ui/test_driver/route_test.dart
@@ -22,6 +22,6 @@
       // This only makes sense if you ran the test as described
       // in the test file. It's normally run from devicelab.
       expect(await driver.requestData('route'), '/smuggle-it');
-    });
+    }, timeout: Timeout.none);
   });
 }
diff --git a/dev/integration_tests/ui/test_driver/screenshot_test.dart b/dev/integration_tests/ui/test_driver/screenshot_test.dart
index 34618c1..b5df865 100644
--- a/dev/integration_tests/ui/test_driver/screenshot_test.dart
+++ b/dev/integration_tests/ui/test_driver/screenshot_test.dart
@@ -48,6 +48,6 @@
 
         imageBefore = imageAfter;
       }
-    }, timeout: const Timeout(Duration(minutes: 2)));
+    }, timeout: Timeout.none);
   });
 }
diff --git a/packages/integration_test/example/test_driver/failure_test.dart b/packages/integration_test/example/test_driver/failure_test.dart
index b74e9ed..2904cde 100644
--- a/packages/integration_test/example/test_driver/failure_test.dart
+++ b/packages/integration_test/example/test_driver/failure_test.dart
@@ -20,5 +20,5 @@
       response.allTestsPassed,
       false,
     );
-  });
+  }, timeout: Timeout.none);
 }
diff --git a/packages/integration_test/lib/integration_test_driver.dart b/packages/integration_test/lib/integration_test_driver.dart
index 866785e..e01a229 100644
--- a/packages/integration_test/lib/integration_test_driver.dart
+++ b/packages/integration_test/lib/integration_test_driver.dart
@@ -64,7 +64,7 @@
 ///
 /// ```
 Future<void> integrationDriver({
-  Duration timeout = const Duration(minutes: 1),
+  Duration timeout = const Duration(minutes: 20),
   ResponseDataCallback? responseDataCallback = writeResponseData,
 }) async {
   final FlutterDriver driver = await FlutterDriver.connect();