Skip to content

Commit 318dbcf

Browse files
authored
Rework the integration test timeout logic (#9322)
1 parent 3a9da96 commit 318dbcf

13 files changed

+102
-69
lines changed

packages/devtools_app/integration_test/test/live_connection/app_test.dart

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,9 @@ void main() {
2525
await resetHistory();
2626
});
2727

28-
testWidgets('connect to app and switch tabs', (tester) async {
28+
testWidgets('connect to app and switch tabs', timeout: shortTimeout, (
29+
tester,
30+
) async {
2931
await pumpAndConnectDevTools(tester, testApp);
3032

3133
// For the sake of this test, do not show extension screens by default.

packages/devtools_app/integration_test/test/live_connection/debugger_panel_test.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ void main() {
2929
expect(testApp.vmServiceUri, isNotNull);
3030
});
3131

32-
testWidgets('Debugger panel', (tester) async {
32+
testWidgets('Debugger panel', timeout: longTimeout, (tester) async {
3333
await pumpAndConnectDevTools(tester, testApp);
3434
await switchToScreen(
3535
tester,

packages/devtools_app/integration_test/test/live_connection/devtools_extensions_test.dart

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,9 @@ void main() {
4141
resetDevToolsExtensionEnabledStates();
4242
});
4343

44-
testWidgets('end to end extensions flow', (tester) async {
44+
testWidgets('end to end extensions flow', timeout: mediumTimeout, (
45+
tester,
46+
) async {
4547
await pumpDevTools(tester);
4648

4749
// TODO(https://github.com/flutter/devtools/issues/9196): re-enable this

packages/devtools_app/integration_test/test/live_connection/eval_and_browse_test.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ void main() {
3030
await resetHistory();
3131
});
3232

33-
testWidgets('memory eval and browse', (tester) async {
33+
testWidgets('memory eval and browse', timeout: mediumTimeout, (tester) async {
3434
await pumpAndConnectDevTools(tester, testApp);
3535

3636
final evalTester = EvalTester(tester);

packages/devtools_app/integration_test/test/live_connection/eval_and_inspect_test.dart

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,9 @@ void main() {
3232
await resetHistory();
3333
});
3434

35-
testWidgets('eval with scope in inspector window', (tester) async {
35+
testWidgets('eval with scope in inspector window', timeout: mediumTimeout, (
36+
tester,
37+
) async {
3638
await pumpAndConnectDevTools(tester, testApp);
3739

3840
final evalTester = EvalTester(tester);
@@ -47,6 +49,7 @@ void main() {
4749

4850
testWidgets(
4951
'eval with scope on widget tree node',
52+
timeout: mediumTimeout,
5053
(tester) async {
5154
await pumpAndConnectDevTools(tester, testApp);
5255

packages/devtools_app/integration_test/test/live_connection/export_snapshot_test.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ void main() {
2525
await resetHistory();
2626
});
2727

28-
testWidgets('Export snapshot', (tester) async {
28+
testWidgets('Export snapshot', timeout: shortTimeout, (tester) async {
2929
await pumpAndConnectDevTools(tester, testApp);
3030
await prepareMemoryUI(tester);
3131
await takeHeapSnapshot(tester);

packages/devtools_app/integration_test/test/live_connection/performance_screen_event_recording_test.dart

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,9 @@ void main() {
2424
expect(testApp.vmServiceUri, isNotNull);
2525
});
2626

27-
testWidgets('can process and refresh timeline data', (tester) async {
27+
testWidgets('can process and refresh timeline data', timeout: longTimeout, (
28+
tester,
29+
) async {
2830
await pumpAndConnectDevTools(tester, testApp);
2931

3032
logStatus(

packages/devtools_app/integration_test/test/live_connection/service_connection_test.dart

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,9 @@ void main() {
2727
await resetHistory();
2828
});
2929

30-
testWidgets('initial service connection state', (tester) async {
30+
testWidgets('initial service connection state', timeout: mediumTimeout, (
31+
tester,
32+
) async {
3133
await pumpAndConnectDevTools(tester, testApp);
3234

3335
// Await a delay to ensure the service extensions have had a chance to
@@ -87,17 +89,16 @@ void main() {
8789
);
8890

8991
logStatus('verify managers have all been initialized');
90-
expect(serviceConnection.serviceManager.isolateManager, isNotNull);
9192
expect(serviceConnection.serviceManager.serviceExtensionManager, isNotNull);
92-
expect(serviceConnection.vmFlagManager, isNotNull);
9393
expect(
9494
serviceConnection.serviceManager.isolateManager.isolates.value,
9595
isNotEmpty,
9696
);
9797
expect(serviceConnection.vmFlagManager.flags.value, isNotNull);
9898

99-
if (serviceConnection.serviceManager.isolateManager.selectedIsolate.value ==
100-
null) {
99+
final selectedIsolate =
100+
serviceConnection.serviceManager.isolateManager.selectedIsolate;
101+
if (selectedIsolate.value == null) {
101102
await whenValueNonNull(
102103
serviceConnection.serviceManager.isolateManager.selectedIsolate,
103104
);

packages/devtools_app/integration_test/test/live_connection/service_extensions_test.dart

Lines changed: 54 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ void main() {
3737

3838
testWidgets(
3939
'can call services and service extensions',
40-
40+
timeout: mediumTimeout,
4141
(tester) async {
4242
await pumpAndConnectDevTools(tester, testApp);
4343
await tester.pump(longDuration);
@@ -75,58 +75,62 @@ void main() {
7575
skip: true, // https://github.com/flutter/devtools/issues/8107
7676
);
7777

78-
testWidgets('loads initial extension states from device', (tester) async {
79-
await pumpAndConnectDevTools(tester, testApp);
80-
await tester.pump(longDuration);
81-
82-
// Ensure all futures are completed before running checks.
83-
final service = serviceConnection.serviceManager.service!;
84-
await service.allFuturesCompleted;
85-
86-
final serviceExtensionsToEnable = [
87-
(extensions.debugPaint.extension, true),
88-
(extensions.slowAnimations.extension, 5.0),
89-
(extensions.togglePlatformMode.extension, 'iOS'),
90-
];
91-
92-
logStatus('enabling service extensions on the test device');
93-
// Enable a service extension of each type (boolean, numeric, string).
94-
for (final ext in serviceExtensionsToEnable) {
95-
await serviceConnection.serviceManager.serviceExtensionManager
96-
.setServiceExtensionState(ext.$1, enabled: true, value: ext.$2);
97-
}
98-
99-
logStatus('disconnecting from the test device');
100-
await disconnectFromTestApp(tester);
101-
102-
for (final ext in serviceExtensionsToEnable) {
103-
expect(
104-
serviceConnection.serviceManager.serviceExtensionManager
105-
.isServiceExtensionAvailable(ext.$1),
106-
isFalse,
107-
);
108-
}
78+
testWidgets(
79+
'loads initial extension states from device',
80+
timeout: const Timeout(Duration(minutes: 3)),
81+
(tester) async {
82+
await pumpAndConnectDevTools(tester, testApp);
83+
await tester.pump(longDuration);
10984

110-
logStatus('reconnecting to the test device');
111-
await connectToTestApp(tester, testApp);
85+
// Ensure all futures are completed before running checks.
86+
final service = serviceConnection.serviceManager.service!;
87+
await service.allFuturesCompleted;
88+
89+
final serviceExtensionsToEnable = [
90+
(extensions.debugPaint.extension, true),
91+
(extensions.slowAnimations.extension, 5.0),
92+
(extensions.togglePlatformMode.extension, 'iOS'),
93+
];
94+
95+
logStatus('enabling service extensions on the test device');
96+
// Enable a service extension of each type (boolean, numeric, string).
97+
for (final ext in serviceExtensionsToEnable) {
98+
await serviceConnection.serviceManager.serviceExtensionManager
99+
.setServiceExtensionState(ext.$1, enabled: true, value: ext.$2);
100+
}
101+
102+
logStatus('disconnecting from the test device');
103+
await disconnectFromTestApp(tester);
112104

113-
logStatus('verify extension states have been restored from the device');
114-
for (final ext in serviceExtensionsToEnable) {
115-
expect(
116-
serviceConnection.serviceManager.serviceExtensionManager
117-
.isServiceExtensionAvailable(ext.$1),
118-
isTrue,
119-
reason: 'Expect ${ext.$1} to be available',
120-
);
121-
await _verifyExtensionStateInServiceManager(
122-
ext.$1,
123-
enabled: true,
124-
value: ext.$2,
125-
);
126-
}
105+
for (final ext in serviceExtensionsToEnable) {
106+
expect(
107+
serviceConnection.serviceManager.serviceExtensionManager
108+
.isServiceExtensionAvailable(ext.$1),
109+
isFalse,
110+
);
111+
}
112+
113+
logStatus('reconnecting to the test device');
114+
await connectToTestApp(tester, testApp);
115+
116+
logStatus('verify extension states have been restored from the device');
117+
for (final ext in serviceExtensionsToEnable) {
118+
expect(
119+
serviceConnection.serviceManager.serviceExtensionManager
120+
.isServiceExtensionAvailable(ext.$1),
121+
isTrue,
122+
reason: 'Expect ${ext.$1} to be available',
123+
);
124+
await _verifyExtensionStateInServiceManager(
125+
ext.$1,
126+
enabled: true,
127+
value: ext.$2,
128+
);
129+
}
127130

128-
await disconnectFromTestApp(tester);
129-
});
131+
await disconnectFromTestApp(tester);
132+
},
133+
);
130134
}
131135

132136
Future<void> _verifyBooleanExtension(WidgetTester tester) async {

packages/devtools_app/integration_test/test/offline/memory_offline_data_test.dart

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,9 @@ import 'package:integration_test/integration_test.dart';
1414
void main() {
1515
IntegrationTestWidgetsFlutterBinding.ensureInitialized();
1616

17-
testWidgets('Memory screen can load offline data', (tester) async {
17+
testWidgets('Memory screen can load offline data', timeout: mediumTimeout, (
18+
tester,
19+
) async {
1820
await pumpDevTools(tester);
1921
logStatus('1 - pumped devtools');
2022
await loadSampleData(tester, memoryFileName);

0 commit comments

Comments
 (0)