Attempt to fix flaky tests caused by modifying the same test apps. (#9929) * Attempt to fix flaky tests caused by modifying the same test apps. * review comments * formatting * use temp directory with inspector service
diff --git a/packages/devtools_app/test/screens/inspector/inspector_integration_test.dart b/packages/devtools_app/test/screens/inspector/inspector_integration_test.dart index 970108a..3f09b29 100644 --- a/packages/devtools_app/test/screens/inspector/inspector_integration_test.dart +++ b/packages/devtools_app/test/screens/inspector/inspector_integration_test.dart
@@ -31,39 +31,19 @@ // reduced to under 1 second without introducing flakes. const inspectorChangeSettleTime = Duration(seconds: 2); -void _copyDirectorySync(Directory source, Directory destination) { - if (!destination.existsSync()) { - destination.createSync(recursive: true); - } - for (final entity in source.listSync()) { - final newPath = p.join(destination.path, p.basename(entity.path)); - if (entity is Directory) { - _copyDirectorySync(entity, Directory(newPath)); - } else if (entity is File) { - entity.copySync(newPath); - } - } -} - void main() { // We need to use real async in this test so we need to use this binding. initializeLiveTestWidgetsFlutterBindingWithAssets(); const windowSize = Size(2600.0, 1200.0); - // We copy the fixture app to a temporary directory because the - // auto-refresh tests modify lib/main.dart in-place. If this used the shared - // 'inspector_app' fixture, it could cause flaky test failures in other tests - // (like inspector_service_test.dart) that run in parallel. - final tempAppDir = - 'test/test_infra/fixtures/inspector_app_temp_${DateTime.now().millisecondsSinceEpoch}'; - _copyDirectorySync( - Directory('test/test_infra/fixtures/inspector_app'), - Directory(tempAppDir), - ); - + // The auto-refresh tests modify lib/main.dart in-place. + // We use `useTempDirectory: true` to copy the fixture app to a temporary + // directory. This prevents flaky test failures in other tests (like + // inspector_service_test.dart) that run in parallel. final env = FlutterTestEnvironment( const FlutterRunConfiguration(withDebugger: true), - testAppDirectory: tempAppDir, + testAppDirectory: 'test/test_infra/fixtures/inspector_app', + useTempDirectory: true, ); env.afterEverySetup = () async { @@ -92,10 +72,6 @@ tearDownAll(() { env.finalTeardown(); - final dir = Directory(tempAppDir); - if (dir.existsSync()) { - dir.deleteSync(recursive: true); - } }); group('screenshot tests', () {
diff --git a/packages/devtools_app/test/shared/diagnostics/inspector_service_test.dart b/packages/devtools_app/test/shared/diagnostics/inspector_service_test.dart index 63657de..99b2929 100644 --- a/packages/devtools_app/test/shared/diagnostics/inspector_service_test.dart +++ b/packages/devtools_app/test/shared/diagnostics/inspector_service_test.dart
@@ -26,6 +26,7 @@ final env = FlutterTestEnvironment( const FlutterRunConfiguration(withDebugger: true), testAppDirectory: 'test/test_infra/fixtures/inspector_app', + useTempDirectory: true, ); InspectorService? inspectorService;
diff --git a/packages/devtools_app/test/shared/eval_integration_test.dart b/packages/devtools_app/test/shared/eval_integration_test.dart index f6f16e6..3dea886 100644 --- a/packages/devtools_app/test/shared/eval_integration_test.dart +++ b/packages/devtools_app/test/shared/eval_integration_test.dart
@@ -14,6 +14,7 @@ void main() { final env = FlutterTestEnvironment( const FlutterRunConfiguration(withDebugger: true), + useTempDirectory: true, ); late Disposable isAlive;
diff --git a/packages/devtools_app/test/test_infra/flutter_test_environment.dart b/packages/devtools_app/test/test_infra/flutter_test_environment.dart index bb81e3e..d85b328 100644 --- a/packages/devtools_app/test/test_infra/flutter_test_environment.dart +++ b/packages/devtools_app/test/test_infra/flutter_test_environment.dart
@@ -34,9 +34,10 @@ _flutterDriverFactory = flutterDriverFactory ?? defaultFlutterRunDriver, _flutterExe = _parseFlutterExeFromEnv() { if (useTempDirectory) { - final tempDirectory = Directory.systemTemp.createTempSync( - 'flutter_test_temp', - ); + final parentDir = p.dirname(testAppDirectory); + final tempDirectory = Directory( + parentDir, + ).createTempSync('flutter_test_temp_'); _tempTestAppDirectory = tempDirectory.path; _copyToTempDirectory(testAppDirectory, tempDirectory); }