Refactor DevTools test to share more helpers (#6880)

diff --git a/packages/devtools_app/integration_test/test/live_connection/app_test.dart b/packages/devtools_app/integration_test/test/live_connection/app_test.dart
index 0a5fcc1..a9850eb 100644
--- a/packages/devtools_app/integration_test/test/live_connection/app_test.dart
+++ b/packages/devtools_app/integration_test/test/live_connection/app_test.dart
@@ -3,8 +3,8 @@
 // found in the LICENSE file.
 
 import 'package:devtools_app/devtools_app.dart';
-import 'package:devtools_test/devtools_integration_test.dart';
-import 'package:flutter/material.dart';
+import 'package:devtools_test/helpers.dart';
+import 'package:devtools_test/integration_test.dart';
 import 'package:flutter_test/flutter_test.dart';
 import 'package:integration_test/integration_test.dart';
 
@@ -33,41 +33,6 @@
     await tester.pumpAndSettle(shortPumpDuration);
 
     logStatus('verify that we can load each DevTools screen');
-    final availableScreenIds = <String>[];
-    for (final screen in devtoolsScreens!) {
-      if (shouldShowScreen(screen.screen)) {
-        availableScreenIds.add(screen.screen.screenId);
-      }
-    }
-    final tabs = tester.widgetList<Tab>(
-      find.descendant(
-        of: find.byType(DevToolsAppBar),
-        matching: find.byType(Tab),
-      ),
-    );
-
-    var numTabs = tabs.length;
-    if (numTabs < availableScreenIds.length) {
-      final tabOverflowMenuFinder = find.descendant(
-        of: find.byType(TabOverflowButton),
-        matching: find.byType(MenuAnchor),
-      );
-      expect(tabOverflowMenuFinder, findsOneWidget);
-      final menuChildren =
-          tester.widget<MenuAnchor>(tabOverflowMenuFinder).menuChildren;
-      numTabs += menuChildren.length;
-    }
-
-    expect(numTabs, availableScreenIds.length);
-
-    final screens = (ScreenMetaData.values.toList()
-      ..removeWhere((data) => !availableScreenIds.contains(data.id)));
-    for (final screen in screens) {
-      await switchToScreen(
-        tester,
-        tabIcon: screen.icon!,
-        screenId: screen.id,
-      );
-    }
+    await navigateThroughDevToolsScreens(tester);
   });
 }
diff --git a/packages/devtools_app/integration_test/test/live_connection/debugger_panel_test.dart b/packages/devtools_app/integration_test/test/live_connection/debugger_panel_test.dart
index 2f7ec11..360a8b1 100644
--- a/packages/devtools_app/integration_test/test/live_connection/debugger_panel_test.dart
+++ b/packages/devtools_app/integration_test/test/live_connection/debugger_panel_test.dart
@@ -5,8 +5,8 @@
 import 'package:devtools_app/devtools_app.dart';
 import 'package:devtools_app/src/screens/debugger/call_stack.dart';
 import 'package:devtools_app/src/screens/debugger/codeview.dart';
-import 'package:devtools_test/devtools_integration_test.dart';
-import 'package:devtools_test/devtools_test.dart';
+import 'package:devtools_test/helpers.dart';
+import 'package:devtools_test/integration_test.dart';
 import 'package:flutter/material.dart';
 import 'package:flutter_test/flutter_test.dart';
 import 'package:integration_test/integration_test.dart';
diff --git a/packages/devtools_app/integration_test/test/live_connection/devtools_extensions_test.dart b/packages/devtools_app/integration_test/test/live_connection/devtools_extensions_test.dart
index 0ebb2d2..83a374d 100644
--- a/packages/devtools_app/integration_test/test/live_connection/devtools_extensions_test.dart
+++ b/packages/devtools_app/integration_test/test/live_connection/devtools_extensions_test.dart
@@ -13,7 +13,8 @@
 import 'package:devtools_app/src/shared/development_helpers.dart';
 import 'package:devtools_app_shared/ui.dart';
 import 'package:devtools_shared/devtools_extensions.dart';
-import 'package:devtools_test/devtools_integration_test.dart';
+import 'package:devtools_test/helpers.dart';
+import 'package:devtools_test/integration_test.dart';
 import 'package:flutter/material.dart';
 import 'package:flutter_test/flutter_test.dart';
 import 'package:integration_test/integration_test.dart';
diff --git a/packages/devtools_app/integration_test/test/live_connection/eval_and_browse_test.dart b/packages/devtools_app/integration_test/test/live_connection/eval_and_browse_test.dart
index 1c087fb..f4f2ca3 100644
--- a/packages/devtools_app/integration_test/test/live_connection/eval_and_browse_test.dart
+++ b/packages/devtools_app/integration_test/test/live_connection/eval_and_browse_test.dart
@@ -10,7 +10,8 @@
 import 'package:devtools_app/src/screens/memory/panes/diff/widgets/snapshot_list.dart';
 import 'package:devtools_app/src/screens/memory/shared/primitives/instance_context_menu.dart';
 import 'package:devtools_app/src/shared/console/widgets/console_pane.dart';
-import 'package:devtools_test/devtools_integration_test.dart';
+import 'package:devtools_test/helpers.dart';
+import 'package:devtools_test/integration_test.dart';
 import 'package:flutter/material.dart';
 import 'package:flutter/services.dart';
 import 'package:flutter_test/flutter_test.dart';
diff --git a/packages/devtools_app/integration_test/test/live_connection/performance_screen_event_recording_test.dart b/packages/devtools_app/integration_test/test/live_connection/performance_screen_event_recording_test.dart
index 03217bd..85dcc1f 100644
--- a/packages/devtools_app/integration_test/test/live_connection/performance_screen_event_recording_test.dart
+++ b/packages/devtools_app/integration_test/test/live_connection/performance_screen_event_recording_test.dart
@@ -4,7 +4,8 @@
 
 import 'package:devtools_app/devtools_app.dart';
 import 'package:devtools_app/src/screens/performance/panes/timeline_events/timeline_events_view.dart';
-import 'package:devtools_test/devtools_integration_test.dart';
+import 'package:devtools_test/helpers.dart';
+import 'package:devtools_test/integration_test.dart';
 import 'package:flutter/material.dart';
 import 'package:flutter_test/flutter_test.dart';
 import 'package:integration_test/integration_test.dart';
diff --git a/packages/devtools_app/integration_test/test/live_connection/service_connection_test.dart b/packages/devtools_app/integration_test/test/live_connection/service_connection_test.dart
index 7932f81..f900701 100644
--- a/packages/devtools_app/integration_test/test/live_connection/service_connection_test.dart
+++ b/packages/devtools_app/integration_test/test/live_connection/service_connection_test.dart
@@ -11,7 +11,8 @@
 import 'package:devtools_app_shared/service.dart';
 import 'package:devtools_app_shared/ui.dart';
 import 'package:devtools_app_shared/utils.dart';
-import 'package:devtools_test/devtools_integration_test.dart';
+import 'package:devtools_test/helpers.dart';
+import 'package:devtools_test/integration_test.dart';
 import 'package:flutter/widgets.dart';
 import 'package:flutter_test/flutter_test.dart';
 import 'package:integration_test/integration_test.dart';
diff --git a/packages/devtools_app/integration_test/test/offline/perfetto_test.dart b/packages/devtools_app/integration_test/test/offline/perfetto_test.dart
index 5ded74e..8c2fc77 100644
--- a/packages/devtools_app/integration_test/test/offline/perfetto_test.dart
+++ b/packages/devtools_app/integration_test/test/offline/perfetto_test.dart
@@ -4,7 +4,8 @@
 
 import 'package:devtools_app/src/screens/performance/panes/flutter_frames/flutter_frames_chart.dart';
 import 'package:devtools_app/src/screens/performance/panes/timeline_events/perfetto/_perfetto_web.dart';
-import 'package:devtools_test/devtools_integration_test.dart';
+import 'package:devtools_test/helpers.dart';
+import 'package:devtools_test/integration_test.dart';
 import 'package:flutter/material.dart';
 import 'package:flutter_test/flutter_test.dart';
 import 'package:integration_test/integration_test.dart';
diff --git a/packages/devtools_app/lib/initialization.dart b/packages/devtools_app/lib/initialization.dart
index 76212b0..4abc479 100644
--- a/packages/devtools_app/lib/initialization.dart
+++ b/packages/devtools_app/lib/initialization.dart
@@ -2,7 +2,6 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-import 'package:devtools_app_shared/ui.dart';
 import 'package:devtools_app_shared/utils.dart';
 import 'package:flutter/material.dart';
 import 'package:flutter_riverpod/flutter_riverpod.dart';
@@ -35,32 +34,11 @@
   List<DevToolsScreen>? screens,
 }) {
   setupErrorHandling(() async {
-    screens ??= defaultScreens(sampleData: sampleData);
-
-    initDevToolsLogging();
-
-    // Before switching to URL path strategy, check if this URL is in the legacy
-    // fragment format and redirect if necessary.
-    if (_handleLegacyUrl()) return;
-
-    usePathUrlStrategy();
-
-    _maybeInitForIntegrationTestMode(
+    await initializeDevTools(
       integrationTestMode: integrationTestMode,
-      enableExperiments: shouldEnableExperiments,
+      shouldEnableExperiments: shouldEnableExperiments,
     );
 
-    // Initialize the framework before we do anything else, otherwise the
-    // StorageController won't be initialized and preferences won't be loaded.
-    await initializeFramework();
-
-    setGlobal(IdeTheme, getIdeTheme());
-
-    final preferences = PreferencesController();
-    // Wait for preferences to load before rendering the app to avoid a flash of
-    // content with the incorrect theme.
-    await preferences.init();
-
     // Load the Dart syntax highlighting grammar.
     await SyntaxHighlighter.initialize();
 
@@ -69,7 +47,7 @@
       ProviderScope(
         observers: const [ErrorLoggerObserver()],
         child: DevToolsApp(
-          screens!,
+          screens ?? defaultScreens(sampleData: sampleData),
           await analyticsController,
           sampleData: sampleData,
         ),
@@ -78,6 +56,34 @@
   });
 }
 
+@visibleForTesting
+Future<void> initializeDevTools({
+  bool integrationTestMode = false,
+  bool shouldEnableExperiments = false,
+}) async {
+  initDevToolsLogging();
+
+  // Before switching to URL path strategy, check if this URL is in the legacy
+  // fragment format and redirect if necessary.
+  if (_handleLegacyUrl()) return;
+
+  usePathUrlStrategy();
+
+  _maybeInitForIntegrationTestMode(
+    integrationTestMode: integrationTestMode,
+    enableExperiments: shouldEnableExperiments,
+  );
+
+  // Initialize the framework before we do anything else, otherwise the
+  // StorageController won't be initialized and preferences won't be loaded.
+  await initializeFramework();
+
+  final preferences = PreferencesController();
+  // Wait for preferences to load before rendering the app to avoid a flash of
+  // content with the incorrect theme.
+  await preferences.init();
+}
+
 /// Initializes some DevTools global fields for our Flutter integration tests.
 ///
 /// Since we call [runDevTools] from Dart code, we cannot set environment
diff --git a/packages/devtools_app/lib/src/app.dart b/packages/devtools_app/lib/src/app.dart
index a68f14d..787451d 100644
--- a/packages/devtools_app/lib/src/app.dart
+++ b/packages/devtools_app/lib/src/app.dart
@@ -239,19 +239,9 @@
       child: DevToolsScaffold.withChild(
         key: const Key('not-found'),
         embed: isEmbedded(args),
-        child: Center(
-          child: Column(
-            mainAxisSize: MainAxisSize.min,
-            children: [
-              Text("'$page' not found."),
-              const SizedBox(height: defaultSpacing),
-              ElevatedButton(
-                onPressed: () =>
-                    routerDelegate.navigateHome(clearScreenParam: true),
-                child: const Text('Go to Home screen'),
-              ),
-            ],
-          ),
+        child: PageNotFound(
+          page: page,
+          routerDelegate: routerDelegate,
         ),
       ),
     );
@@ -534,6 +524,36 @@
   }
 }
 
+class PageNotFound extends StatelessWidget {
+  const PageNotFound({
+    super.key,
+    required this.page,
+    required this.routerDelegate,
+  });
+
+  final String page;
+
+  final DevToolsRouterDelegate routerDelegate;
+
+  @override
+  Widget build(BuildContext context) {
+    return Center(
+      child: Column(
+        mainAxisSize: MainAxisSize.min,
+        children: [
+          Text("'$page' not found."),
+          const SizedBox(height: defaultSpacing),
+          ElevatedButton(
+            onPressed: () =>
+                routerDelegate.navigateHome(clearScreenParam: true),
+            child: const Text('Go to Home screen'),
+          ),
+        ],
+      ),
+    );
+  }
+}
+
 /// Screens to initialize DevTools with.
 ///
 /// If the screen depends on a provided controller, the provider should be
diff --git a/packages/devtools_app/lib/src/framework/framework_core.dart b/packages/devtools_app/lib/src/framework/framework_core.dart
index 6a26448..0d744dc 100644
--- a/packages/devtools_app/lib/src/framework/framework_core.dart
+++ b/packages/devtools_app/lib/src/framework/framework_core.dart
@@ -4,6 +4,7 @@
 
 import 'dart:async';
 
+import 'package:devtools_app_shared/ui.dart';
 import 'package:devtools_app_shared/utils.dart';
 import 'package:devtools_shared/devtools_shared.dart';
 import 'package:devtools_shared/service.dart';
@@ -45,6 +46,7 @@
     setGlobal(BreakpointManager, BreakpointManager());
     setGlobal(EvalService, EvalService());
     setGlobal(ExtensionService, ExtensionService());
+    setGlobal(IdeTheme, getIdeTheme());
   }
 
   static void init() {
diff --git a/packages/devtools_app/test/app_size/app_size_screen_test.dart b/packages/devtools_app/test/app_size/app_size_screen_test.dart
index e5b55b6..04d01c3 100644
--- a/packages/devtools_app/test/app_size/app_size_screen_test.dart
+++ b/packages/devtools_app/test/app_size/app_size_screen_test.dart
@@ -11,6 +11,7 @@
 import 'package:devtools_app_shared/utils.dart';
 import 'package:devtools_shared/devtools_test_utils.dart';
 import 'package:devtools_test/devtools_test.dart';
+import 'package:devtools_test/helpers.dart';
 import 'package:flutter/material.dart';
 import 'package:flutter_test/flutter_test.dart';
 import 'package:mockito/mockito.dart';
diff --git a/packages/devtools_app/test/app_size/code_size_attribution_test.dart b/packages/devtools_app/test/app_size/code_size_attribution_test.dart
index 23bd160..4cef396 100644
--- a/packages/devtools_app/test/app_size/code_size_attribution_test.dart
+++ b/packages/devtools_app/test/app_size/code_size_attribution_test.dart
@@ -8,6 +8,7 @@
 import 'package:devtools_app_shared/ui.dart';
 import 'package:devtools_app_shared/utils.dart';
 import 'package:devtools_test/devtools_test.dart';
+import 'package:devtools_test/helpers.dart';
 import 'package:flutter/material.dart';
 import 'package:flutter_test/flutter_test.dart';
 import 'package:vm_snapshot_analysis/precompiler_trace.dart';
diff --git a/packages/devtools_app/test/cpu_profiler/cpu_profiler_controller_test.dart b/packages/devtools_app/test/cpu_profiler/cpu_profiler_controller_test.dart
index b87fd6e..0a45424 100644
--- a/packages/devtools_app/test/cpu_profiler/cpu_profiler_controller_test.dart
+++ b/packages/devtools_app/test/cpu_profiler/cpu_profiler_controller_test.dart
@@ -7,6 +7,7 @@
 import 'package:devtools_app_shared/utils.dart';
 import 'package:devtools_shared/devtools_test_utils.dart';
 import 'package:devtools_test/devtools_test.dart';
+import 'package:devtools_test/helpers.dart';
 import 'package:flutter_test/flutter_test.dart';
 import 'package:mockito/mockito.dart';
 import 'package:vm_service/vm_service.dart';
diff --git a/packages/devtools_app/test/cpu_profiler/cpu_profiler_test.dart b/packages/devtools_app/test/cpu_profiler/cpu_profiler_test.dart
index 5bd36cd..1f23fc0 100644
--- a/packages/devtools_app/test/cpu_profiler/cpu_profiler_test.dart
+++ b/packages/devtools_app/test/cpu_profiler/cpu_profiler_test.dart
@@ -17,6 +17,7 @@
 import 'package:devtools_app_shared/ui.dart';
 import 'package:devtools_app_shared/utils.dart';
 import 'package:devtools_test/devtools_test.dart';
+import 'package:devtools_test/helpers.dart';
 import 'package:flutter/material.dart';
 import 'package:flutter_test/flutter_test.dart';
 import 'package:mockito/mockito.dart';
diff --git a/packages/devtools_app/test/cpu_profiler/method_table/method_table_test.dart b/packages/devtools_app/test/cpu_profiler/method_table/method_table_test.dart
index 55f2144..bb9b056 100644
--- a/packages/devtools_app/test/cpu_profiler/method_table/method_table_test.dart
+++ b/packages/devtools_app/test/cpu_profiler/method_table/method_table_test.dart
@@ -11,6 +11,7 @@
 import 'package:devtools_app_shared/ui.dart';
 import 'package:devtools_app_shared/utils.dart';
 import 'package:devtools_test/devtools_test.dart';
+import 'package:devtools_test/helpers.dart';
 import 'package:flutter/material.dart';
 import 'package:flutter_test/flutter_test.dart';
 import 'package:mockito/mockito.dart';
diff --git a/packages/devtools_app/test/cpu_profiler/profiler_screen_test.dart b/packages/devtools_app/test/cpu_profiler/profiler_screen_test.dart
index adc6e25..b5c0cd8 100644
--- a/packages/devtools_app/test/cpu_profiler/profiler_screen_test.dart
+++ b/packages/devtools_app/test/cpu_profiler/profiler_screen_test.dart
@@ -10,6 +10,7 @@
 import 'package:devtools_app/src/shared/file_import.dart';
 import 'package:devtools_app/src/shared/ui/vm_flag_widgets.dart';
 import 'package:devtools_test/devtools_test.dart';
+import 'package:devtools_test/helpers.dart';
 import 'package:flutter/material.dart';
 import 'package:flutter_test/flutter_test.dart';
 
diff --git a/packages/devtools_app/test/debugger/debugger_codeview_statistics_test.dart b/packages/devtools_app/test/debugger/debugger_codeview_statistics_test.dart
index 2db696e..084e191 100644
--- a/packages/devtools_app/test/debugger/debugger_codeview_statistics_test.dart
+++ b/packages/devtools_app/test/debugger/debugger_codeview_statistics_test.dart
@@ -7,6 +7,7 @@
 import 'package:devtools_app_shared/ui.dart';
 import 'package:devtools_app_shared/utils.dart';
 import 'package:devtools_test/devtools_test.dart';
+import 'package:devtools_test/helpers.dart';
 import 'package:flutter/material.dart';
 import 'package:flutter_test/flutter_test.dart';
 import 'package:mockito/mockito.dart';
diff --git a/packages/devtools_app/test/debugger/debugger_codeview_test.dart b/packages/devtools_app/test/debugger/debugger_codeview_test.dart
index 0dda565..3b54f17 100644
--- a/packages/devtools_app/test/debugger/debugger_codeview_test.dart
+++ b/packages/devtools_app/test/debugger/debugger_codeview_test.dart
@@ -9,6 +9,7 @@
 import 'package:devtools_app_shared/ui.dart';
 import 'package:devtools_app_shared/utils.dart';
 import 'package:devtools_test/devtools_test.dart';
+import 'package:devtools_test/helpers.dart';
 import 'package:flutter/material.dart';
 import 'package:flutter_test/flutter_test.dart';
 import 'package:mockito/mockito.dart';
diff --git a/packages/devtools_app/test/debugger/debugger_console_test.dart b/packages/devtools_app/test/debugger/debugger_console_test.dart
index abbaf89..262a96f 100644
--- a/packages/devtools_app/test/debugger/debugger_console_test.dart
+++ b/packages/devtools_app/test/debugger/debugger_console_test.dart
@@ -8,6 +8,7 @@
 import 'package:devtools_app_shared/ui.dart';
 import 'package:devtools_app_shared/utils.dart';
 import 'package:devtools_test/devtools_test.dart';
+import 'package:devtools_test/helpers.dart';
 import 'package:flutter/material.dart';
 import 'package:flutter/services.dart';
 import 'package:flutter_test/flutter_test.dart';
diff --git a/packages/devtools_app/test/debugger/debugger_evaluation_test.dart b/packages/devtools_app/test/debugger/debugger_evaluation_test.dart
index 87e5d15..125d987 100644
--- a/packages/devtools_app/test/debugger/debugger_evaluation_test.dart
+++ b/packages/devtools_app/test/debugger/debugger_evaluation_test.dart
@@ -8,7 +8,7 @@
 import 'package:devtools_app/src/shared/console/eval/auto_complete.dart';
 import 'package:devtools_app_shared/service.dart';
 import 'package:devtools_app_shared/utils.dart';
-import 'package:devtools_test/devtools_test.dart';
+import 'package:devtools_test/helpers.dart';
 import 'package:flutter_test/flutter_test.dart';
 
 import '../test_infra/flutter_test_driver.dart';
diff --git a/packages/devtools_app/test/debugger/debugger_floating_test.dart b/packages/devtools_app/test/debugger/debugger_floating_test.dart
index 8c3801c..ceb06ea 100644
--- a/packages/devtools_app/test/debugger/debugger_floating_test.dart
+++ b/packages/devtools_app/test/debugger/debugger_floating_test.dart
@@ -6,6 +6,7 @@
 import 'package:devtools_app_shared/ui.dart';
 import 'package:devtools_app_shared/utils.dart';
 import 'package:devtools_test/devtools_test.dart';
+import 'package:devtools_test/helpers.dart';
 import 'package:flutter/material.dart';
 import 'package:flutter_test/flutter_test.dart';
 import 'package:mockito/mockito.dart';
diff --git a/packages/devtools_app/test/debugger/debugger_screen_breakpoints_test.dart b/packages/devtools_app/test/debugger/debugger_screen_breakpoints_test.dart
index ab39e21..c849a02 100644
--- a/packages/devtools_app/test/debugger/debugger_screen_breakpoints_test.dart
+++ b/packages/devtools_app/test/debugger/debugger_screen_breakpoints_test.dart
@@ -8,6 +8,7 @@
 import 'package:devtools_app_shared/ui.dart';
 import 'package:devtools_app_shared/utils.dart';
 import 'package:devtools_test/devtools_test.dart';
+import 'package:devtools_test/helpers.dart';
 import 'package:flutter/material.dart';
 import 'package:flutter_test/flutter_test.dart';
 import 'package:mockito/mockito.dart';
diff --git a/packages/devtools_app/test/debugger/debugger_screen_call_stack_test.dart b/packages/devtools_app/test/debugger/debugger_screen_call_stack_test.dart
index 3aa1458..22ee58d 100644
--- a/packages/devtools_app/test/debugger/debugger_screen_call_stack_test.dart
+++ b/packages/devtools_app/test/debugger/debugger_screen_call_stack_test.dart
@@ -8,6 +8,7 @@
 import 'package:devtools_app_shared/ui.dart';
 import 'package:devtools_app_shared/utils.dart';
 import 'package:devtools_test/devtools_test.dart';
+import 'package:devtools_test/helpers.dart';
 import 'package:flutter/material.dart';
 import 'package:flutter_test/flutter_test.dart';
 import 'package:mockito/mockito.dart';
diff --git a/packages/devtools_app/test/debugger/debugger_screen_dap_variables_test.dart b/packages/devtools_app/test/debugger/debugger_screen_dap_variables_test.dart
index 65686da..275e9aa 100644
--- a/packages/devtools_app/test/debugger/debugger_screen_dap_variables_test.dart
+++ b/packages/devtools_app/test/debugger/debugger_screen_dap_variables_test.dart
@@ -9,6 +9,7 @@
 import 'package:devtools_app_shared/ui.dart';
 import 'package:devtools_app_shared/utils.dart';
 import 'package:devtools_test/devtools_test.dart';
+import 'package:devtools_test/helpers.dart';
 import 'package:flutter/material.dart';
 import 'package:flutter_test/flutter_test.dart';
 import 'package:mockito/mockito.dart';
diff --git a/packages/devtools_app/test/debugger/debugger_screen_explorer_visibility_test.dart b/packages/devtools_app/test/debugger/debugger_screen_explorer_visibility_test.dart
index 85f7747..c407322 100644
--- a/packages/devtools_app/test/debugger/debugger_screen_explorer_visibility_test.dart
+++ b/packages/devtools_app/test/debugger/debugger_screen_explorer_visibility_test.dart
@@ -6,6 +6,7 @@
 import 'package:devtools_app_shared/ui.dart';
 import 'package:devtools_app_shared/utils.dart';
 import 'package:devtools_test/devtools_test.dart';
+import 'package:devtools_test/helpers.dart';
 import 'package:flutter/material.dart';
 import 'package:flutter_test/flutter_test.dart';
 import 'package:mockito/mockito.dart';
diff --git a/packages/devtools_app/test/debugger/debugger_screen_paused_test.dart b/packages/devtools_app/test/debugger/debugger_screen_paused_test.dart
index 55d0993..39c231c 100644
--- a/packages/devtools_app/test/debugger/debugger_screen_paused_test.dart
+++ b/packages/devtools_app/test/debugger/debugger_screen_paused_test.dart
@@ -10,6 +10,7 @@
 import 'package:devtools_app_shared/ui.dart';
 import 'package:devtools_app_shared/utils.dart';
 import 'package:devtools_test/devtools_test.dart';
+import 'package:devtools_test/helpers.dart';
 import 'package:flutter/material.dart';
 import 'package:flutter_test/flutter_test.dart';
 import 'package:mockito/mockito.dart';
diff --git a/packages/devtools_app/test/debugger/debugger_screen_test.dart b/packages/devtools_app/test/debugger/debugger_screen_test.dart
index e5b77f6..aaddc39 100644
--- a/packages/devtools_app/test/debugger/debugger_screen_test.dart
+++ b/packages/devtools_app/test/debugger/debugger_screen_test.dart
@@ -10,6 +10,7 @@
 import 'package:devtools_app_shared/ui.dart';
 import 'package:devtools_app_shared/utils.dart';
 import 'package:devtools_test/devtools_test.dart';
+import 'package:devtools_test/helpers.dart';
 import 'package:flutter/material.dart';
 import 'package:flutter_test/flutter_test.dart';
 import 'package:mockito/mockito.dart';
diff --git a/packages/devtools_app/test/debugger/debugger_screen_variables_test.dart b/packages/devtools_app/test/debugger/debugger_screen_variables_test.dart
index 12b9cbc..f1b178b 100644
--- a/packages/devtools_app/test/debugger/debugger_screen_variables_test.dart
+++ b/packages/devtools_app/test/debugger/debugger_screen_variables_test.dart
@@ -7,6 +7,7 @@
 import 'package:devtools_app_shared/ui.dart';
 import 'package:devtools_app_shared/utils.dart';
 import 'package:devtools_test/devtools_test.dart';
+import 'package:devtools_test/helpers.dart';
 import 'package:flutter/material.dart';
 import 'package:flutter_test/flutter_test.dart';
 import 'package:mockito/mockito.dart';
diff --git a/packages/devtools_app/test/debugger/debugger_scripts_test.dart b/packages/devtools_app/test/debugger/debugger_scripts_test.dart
index caf3b58..845517c 100644
--- a/packages/devtools_app/test/debugger/debugger_scripts_test.dart
+++ b/packages/devtools_app/test/debugger/debugger_scripts_test.dart
@@ -9,6 +9,7 @@
 import 'package:devtools_app_shared/ui.dart';
 import 'package:devtools_app_shared/utils.dart';
 import 'package:devtools_test/devtools_test.dart';
+import 'package:devtools_test/helpers.dart';
 import 'package:flutter/material.dart';
 import 'package:flutter_test/flutter_test.dart';
 import 'package:mockito/mockito.dart';
diff --git a/packages/devtools_app/test/debugger/file_search_test.dart b/packages/devtools_app/test/debugger/file_search_test.dart
index 9d4236b..d4e055c 100644
--- a/packages/devtools_app/test/debugger/file_search_test.dart
+++ b/packages/devtools_app/test/debugger/file_search_test.dart
@@ -7,6 +7,7 @@
 import 'package:devtools_app_shared/ui.dart';
 import 'package:devtools_app_shared/utils.dart';
 import 'package:devtools_test/devtools_test.dart';
+import 'package:devtools_test/helpers.dart';
 import 'package:flutter/material.dart';
 import 'package:flutter_test/flutter_test.dart';
 import 'package:mockito/mockito.dart';
diff --git a/packages/devtools_app/test/debugger/program_explorer_test.dart b/packages/devtools_app/test/debugger/program_explorer_test.dart
index a69d32a..ad22a61 100644
--- a/packages/devtools_app/test/debugger/program_explorer_test.dart
+++ b/packages/devtools_app/test/debugger/program_explorer_test.dart
@@ -10,6 +10,7 @@
 import 'package:devtools_app_shared/ui.dart';
 import 'package:devtools_app_shared/utils.dart';
 import 'package:devtools_test/devtools_test.dart';
+import 'package:devtools_test/helpers.dart';
 import 'package:flutter/material.dart';
 import 'package:flutter_test/flutter_test.dart';
 import 'package:mockito/mockito.dart';
diff --git a/packages/devtools_app/test/debugger/variables_test.dart b/packages/devtools_app/test/debugger/variables_test.dart
index cf979bf..716c709 100644
--- a/packages/devtools_app/test/debugger/variables_test.dart
+++ b/packages/devtools_app/test/debugger/variables_test.dart
@@ -9,6 +9,7 @@
 import 'package:devtools_app_shared/ui.dart';
 import 'package:devtools_app_shared/utils.dart';
 import 'package:devtools_test/devtools_test.dart';
+import 'package:devtools_test/helpers.dart';
 import 'package:flutter_test/flutter_test.dart';
 
 void main() {
diff --git a/packages/devtools_app/test/deep_link_vlidation/deep_links_screen_test.dart b/packages/devtools_app/test/deep_link_vlidation/deep_links_screen_test.dart
index eac2256..aa60755 100644
--- a/packages/devtools_app/test/deep_link_vlidation/deep_links_screen_test.dart
+++ b/packages/devtools_app/test/deep_link_vlidation/deep_links_screen_test.dart
@@ -10,6 +10,7 @@
 import 'package:devtools_app_shared/ui.dart';
 import 'package:devtools_app_shared/utils.dart';
 import 'package:devtools_test/devtools_test.dart';
+import 'package:devtools_test/helpers.dart';
 import 'package:flutter/material.dart';
 import 'package:flutter_test/flutter_test.dart';
 
diff --git a/packages/devtools_app/test/extensions/extension_screen_test.dart b/packages/devtools_app/test/extensions/extension_screen_test.dart
index f3c82cc..b188ff8 100644
--- a/packages/devtools_app/test/extensions/extension_screen_test.dart
+++ b/packages/devtools_app/test/extensions/extension_screen_test.dart
@@ -10,6 +10,7 @@
 import 'package:devtools_app_shared/utils.dart';
 import 'package:devtools_shared/devtools_extensions.dart';
 import 'package:devtools_test/devtools_test.dart';
+import 'package:devtools_test/helpers.dart';
 import 'package:flutter/material.dart';
 import 'package:flutter_test/flutter_test.dart';
 
diff --git a/packages/devtools_app/test/extensions/extension_settings_test.dart b/packages/devtools_app/test/extensions/extension_settings_test.dart
index babfd73..9289039 100644
--- a/packages/devtools_app/test/extensions/extension_settings_test.dart
+++ b/packages/devtools_app/test/extensions/extension_settings_test.dart
@@ -8,6 +8,7 @@
 import 'package:devtools_app_shared/utils.dart';
 import 'package:devtools_shared/devtools_extensions.dart';
 import 'package:devtools_test/devtools_test.dart';
+import 'package:devtools_test/helpers.dart';
 import 'package:flutter/material.dart';
 import 'package:flutter_test/flutter_test.dart';
 
diff --git a/packages/devtools_app/test/inspector/diagnostics_test.dart b/packages/devtools_app/test/inspector/diagnostics_test.dart
index b66f594..7f04c26 100644
--- a/packages/devtools_app/test/inspector/diagnostics_test.dart
+++ b/packages/devtools_app/test/inspector/diagnostics_test.dart
@@ -9,6 +9,7 @@
 import 'package:devtools_app_shared/ui.dart';
 import 'package:devtools_app_shared/utils.dart';
 import 'package:devtools_test/devtools_test.dart';
+import 'package:devtools_test/helpers.dart';
 import 'package:flutter/material.dart';
 import 'package:flutter_test/flutter_test.dart';
 
diff --git a/packages/devtools_app/test/inspector/inspector_error_navigator_test.dart b/packages/devtools_app/test/inspector/inspector_error_navigator_test.dart
index 6c366ea..420f0d5 100644
--- a/packages/devtools_app/test/inspector/inspector_error_navigator_test.dart
+++ b/packages/devtools_app/test/inspector/inspector_error_navigator_test.dart
@@ -8,6 +8,7 @@
 import 'package:devtools_app_shared/ui.dart';
 import 'package:devtools_app_shared/utils.dart';
 import 'package:devtools_test/devtools_test.dart';
+import 'package:devtools_test/helpers.dart';
 import 'package:flutter/material.dart';
 import 'package:flutter_test/flutter_test.dart';
 
diff --git a/packages/devtools_app/test/inspector/inspector_integration_test.dart b/packages/devtools_app/test/inspector/inspector_integration_test.dart
index eafed2f..1e7dbc3 100644
--- a/packages/devtools_app/test/inspector/inspector_integration_test.dart
+++ b/packages/devtools_app/test/inspector/inspector_integration_test.dart
@@ -3,7 +3,7 @@
 // found in the LICENSE file.
 
 import 'package:devtools_app/devtools_app.dart';
-import 'package:devtools_test/devtools_test.dart';
+import 'package:devtools_test/helpers.dart';
 import 'package:flutter/material.dart';
 import 'package:flutter_test/flutter_test.dart';
 
diff --git a/packages/devtools_app/test/inspector/inspector_screen_test.dart b/packages/devtools_app/test/inspector/inspector_screen_test.dart
index dc5c070..286c07c 100644
--- a/packages/devtools_app/test/inspector/inspector_screen_test.dart
+++ b/packages/devtools_app/test/inspector/inspector_screen_test.dart
@@ -14,6 +14,7 @@
 import 'package:devtools_app_shared/ui.dart';
 import 'package:devtools_app_shared/utils.dart';
 import 'package:devtools_test/devtools_test.dart';
+import 'package:devtools_test/helpers.dart';
 import 'package:flutter/material.dart';
 import 'package:flutter_test/flutter_test.dart' hide Fake;
 import 'package:mockito/mockito.dart';
diff --git a/packages/devtools_app/test/inspector/inspector_service_test.dart b/packages/devtools_app/test/inspector/inspector_service_test.dart
index 0579a9e..7c05cdb 100644
--- a/packages/devtools_app/test/inspector/inspector_service_test.dart
+++ b/packages/devtools_app/test/inspector/inspector_service_test.dart
@@ -10,7 +10,7 @@
 import 'package:devtools_app/devtools_app.dart';
 import 'package:devtools_app_shared/ui.dart';
 import 'package:devtools_app_shared/utils.dart';
-import 'package:devtools_test/devtools_test.dart';
+import 'package:devtools_test/helpers.dart';
 import 'package:flutter_test/flutter_test.dart';
 
 import '../test_infra/flutter_test_driver.dart' show FlutterRunConfiguration;
diff --git a/packages/devtools_app/test/inspector/inspector_tree_test.dart b/packages/devtools_app/test/inspector/inspector_tree_test.dart
index 56f9471..5f54b10 100644
--- a/packages/devtools_app/test/inspector/inspector_tree_test.dart
+++ b/packages/devtools_app/test/inspector/inspector_tree_test.dart
@@ -7,6 +7,7 @@
 import 'package:devtools_app_shared/ui.dart';
 import 'package:devtools_app_shared/utils.dart';
 import 'package:devtools_test/devtools_test.dart';
+import 'package:devtools_test/helpers.dart';
 import 'package:flutter/material.dart';
 import 'package:flutter_test/flutter_test.dart' hide Fake;
 import 'package:mockito/mockito.dart';
diff --git a/packages/devtools_app/test/inspector/layout_explorer/flex/flex_test.dart b/packages/devtools_app/test/inspector/layout_explorer/flex/flex_test.dart
index 55b48a0..461a1f7 100644
--- a/packages/devtools_app/test/inspector/layout_explorer/flex/flex_test.dart
+++ b/packages/devtools_app/test/inspector/layout_explorer/flex/flex_test.dart
@@ -8,6 +8,7 @@
 import 'package:devtools_app/src/shared/console/eval/inspector_tree.dart';
 import 'package:devtools_app/src/shared/diagnostics/diagnostics_node.dart';
 import 'package:devtools_test/devtools_test.dart';
+import 'package:devtools_test/helpers.dart';
 import 'package:flutter/material.dart';
 import 'package:flutter_test/flutter_test.dart';
 
diff --git a/packages/devtools_app/test/inspector/utils/inspector_tree.dart b/packages/devtools_app/test/inspector/utils/inspector_tree.dart
index 2023026..c637f58 100644
--- a/packages/devtools_app/test/inspector/utils/inspector_tree.dart
+++ b/packages/devtools_app/test/inspector/utils/inspector_tree.dart
@@ -3,7 +3,7 @@
 // found in the LICENSE file.
 
 import 'package:devtools_app/devtools_app.dart';
-import 'package:devtools_test/devtools_test.dart';
+import 'package:devtools_test/helpers.dart';
 import 'package:flutter/material.dart';
 import 'package:flutter/rendering.dart';
 import 'package:flutter_test/flutter_test.dart';
diff --git a/packages/devtools_app/test/logging/logging_controller_test.dart b/packages/devtools_app/test/logging/logging_controller_test.dart
index c48dc2b..68f84ca 100644
--- a/packages/devtools_app/test/logging/logging_controller_test.dart
+++ b/packages/devtools_app/test/logging/logging_controller_test.dart
@@ -10,6 +10,7 @@
 import 'package:devtools_app/src/shared/primitives/message_bus.dart';
 import 'package:devtools_app_shared/utils.dart';
 import 'package:devtools_test/devtools_test.dart';
+import 'package:devtools_test/helpers.dart';
 import 'package:flutter_test/flutter_test.dart';
 
 void main() {
diff --git a/packages/devtools_app/test/logging/logging_screen_data_test.dart b/packages/devtools_app/test/logging/logging_screen_data_test.dart
index e0c2a70..684252f 100644
--- a/packages/devtools_app/test/logging/logging_screen_data_test.dart
+++ b/packages/devtools_app/test/logging/logging_screen_data_test.dart
@@ -10,6 +10,7 @@
 import 'package:devtools_app_shared/ui.dart';
 import 'package:devtools_app_shared/utils.dart';
 import 'package:devtools_test/devtools_test.dart';
+import 'package:devtools_test/helpers.dart';
 import 'package:flutter/material.dart';
 import 'package:flutter_test/flutter_test.dart';
 import 'package:mockito/mockito.dart';
diff --git a/packages/devtools_app/test/logging/logging_screen_test.dart b/packages/devtools_app/test/logging/logging_screen_test.dart
index 0df3f90..ab4203a 100644
--- a/packages/devtools_app/test/logging/logging_screen_test.dart
+++ b/packages/devtools_app/test/logging/logging_screen_test.dart
@@ -11,6 +11,7 @@
 import 'package:devtools_app_shared/ui.dart';
 import 'package:devtools_app_shared/utils.dart';
 import 'package:devtools_test/devtools_test.dart';
+import 'package:devtools_test/helpers.dart';
 import 'package:flutter/material.dart';
 import 'package:flutter_test/flutter_test.dart';
 import 'package:mockito/mockito.dart';
diff --git a/packages/devtools_app/test/memory/chart/chart_test.dart b/packages/devtools_app/test/memory/chart/chart_test.dart
index 3e10033..b48f96b 100644
--- a/packages/devtools_app/test/memory/chart/chart_test.dart
+++ b/packages/devtools_app/test/memory/chart/chart_test.dart
@@ -12,6 +12,7 @@
 import 'package:devtools_app_shared/utils.dart';
 import 'package:devtools_shared/devtools_shared.dart';
 import 'package:devtools_test/devtools_test.dart';
+import 'package:devtools_test/helpers.dart';
 import 'package:flutter/material.dart';
 import 'package:flutter_test/flutter_test.dart';
 
diff --git a/packages/devtools_app/test/memory/control/settings_dialog_test.dart b/packages/devtools_app/test/memory/control/settings_dialog_test.dart
index 3b6b9a9..0cba584 100644
--- a/packages/devtools_app/test/memory/control/settings_dialog_test.dart
+++ b/packages/devtools_app/test/memory/control/settings_dialog_test.dart
@@ -7,7 +7,7 @@
 import 'package:devtools_app/src/shared/common_widgets.dart';
 import 'package:devtools_app/src/shared/globals.dart';
 import 'package:devtools_app_shared/src/ui/dialogs.dart';
-import 'package:devtools_test/devtools_test.dart';
+import 'package:devtools_test/helpers.dart';
 import 'package:flutter/material.dart';
 import 'package:flutter_test/flutter_test.dart';
 
diff --git a/packages/devtools_app/test/memory/diff/widgets/class_filter_test.dart b/packages/devtools_app/test/memory/diff/widgets/class_filter_test.dart
index 45baa45..b7a4498 100644
--- a/packages/devtools_app/test/memory/diff/widgets/class_filter_test.dart
+++ b/packages/devtools_app/test/memory/diff/widgets/class_filter_test.dart
@@ -6,7 +6,7 @@
 import 'package:devtools_app/src/screens/memory/panes/diff/diff_pane.dart';
 import 'package:devtools_app/src/screens/memory/shared/heap/class_filter.dart';
 import 'package:devtools_app/src/screens/memory/shared/widgets/class_filter.dart';
-import 'package:devtools_test/devtools_test.dart';
+import 'package:devtools_test/helpers.dart';
 import 'package:flutter/material.dart';
 import 'package:flutter_test/flutter_test.dart';
 
diff --git a/packages/devtools_app/test/memory/diff/widgets/diff_pane_test.dart b/packages/devtools_app/test/memory/diff/widgets/diff_pane_test.dart
index a95cfee..1f0e0c5 100644
--- a/packages/devtools_app/test/memory/diff/widgets/diff_pane_test.dart
+++ b/packages/devtools_app/test/memory/diff/widgets/diff_pane_test.dart
@@ -6,7 +6,7 @@
 import 'package:devtools_app/src/screens/memory/framework/connected/memory_tabs.dart';
 import 'package:devtools_app/src/screens/memory/panes/diff/diff_pane.dart';
 import 'package:devtools_app/src/screens/memory/panes/diff/widgets/snapshot_list.dart';
-import 'package:devtools_test/devtools_test.dart';
+import 'package:devtools_test/helpers.dart';
 import 'package:flutter/material.dart';
 import 'package:flutter_test/flutter_test.dart';
 
diff --git a/packages/devtools_app/test/memory/memory_screen_test.dart b/packages/devtools_app/test/memory/memory_screen_test.dart
index 8a0db93..b8900f9 100644
--- a/packages/devtools_app/test/memory/memory_screen_test.dart
+++ b/packages/devtools_app/test/memory/memory_screen_test.dart
@@ -9,6 +9,7 @@
 import 'package:devtools_app_shared/utils.dart';
 import 'package:devtools_shared/devtools_shared.dart';
 import 'package:devtools_test/devtools_test.dart';
+import 'package:devtools_test/helpers.dart';
 import 'package:flutter/material.dart';
 import 'package:flutter_test/flutter_test.dart';
 import 'package:mockito/mockito.dart';
diff --git a/packages/devtools_app/test/memory/profile/allocation_profile_table_view_test.dart b/packages/devtools_app/test/memory/profile/allocation_profile_table_view_test.dart
index 2a0089d..0072be9 100644
--- a/packages/devtools_app/test/memory/profile/allocation_profile_table_view_test.dart
+++ b/packages/devtools_app/test/memory/profile/allocation_profile_table_view_test.dart
@@ -11,6 +11,7 @@
 import 'package:devtools_app/src/shared/primitives/utils.dart';
 import 'package:devtools_app/src/shared/table/table.dart';
 import 'package:devtools_test/devtools_test.dart';
+import 'package:devtools_test/helpers.dart';
 import 'package:flutter/material.dart';
 import 'package:flutter_test/flutter_test.dart';
 
diff --git a/packages/devtools_app/test/memory/tracing/tracing_view_test.dart b/packages/devtools_app/test/memory/tracing/tracing_view_test.dart
index f90ab06..ce57d9d 100644
--- a/packages/devtools_app/test/memory/tracing/tracing_view_test.dart
+++ b/packages/devtools_app/test/memory/tracing/tracing_view_test.dart
@@ -11,6 +11,7 @@
 import 'package:devtools_app/src/screens/memory/panes/tracing/tracing_tree.dart';
 import 'package:devtools_app_shared/utils.dart';
 import 'package:devtools_test/devtools_test.dart';
+import 'package:devtools_test/helpers.dart';
 import 'package:flutter/material.dart';
 import 'package:flutter_test/flutter_test.dart';
 import 'package:mockito/mockito.dart';
diff --git a/packages/devtools_app/test/network/network_controller_test.dart b/packages/devtools_app/test/network/network_controller_test.dart
index 3ee820d..c543f5a 100644
--- a/packages/devtools_app/test/network/network_controller_test.dart
+++ b/packages/devtools_app/test/network/network_controller_test.dart
@@ -10,6 +10,7 @@
 import 'package:devtools_app/src/shared/http/http_request_data.dart';
 import 'package:devtools_app_shared/utils.dart';
 import 'package:devtools_test/devtools_test.dart';
+import 'package:devtools_test/helpers.dart';
 import 'package:flutter_test/flutter_test.dart';
 import 'package:vm_service/vm_service.dart';
 
diff --git a/packages/devtools_app/test/network/network_profiler_test.dart b/packages/devtools_app/test/network/network_profiler_test.dart
index 8fd31b0..efb6b09 100644
--- a/packages/devtools_app/test/network/network_profiler_test.dart
+++ b/packages/devtools_app/test/network/network_profiler_test.dart
@@ -11,6 +11,7 @@
 import 'package:devtools_app_shared/ui.dart';
 import 'package:devtools_app_shared/utils.dart';
 import 'package:devtools_test/devtools_test.dart';
+import 'package:devtools_test/helpers.dart';
 import 'package:flutter/material.dart';
 import 'package:flutter_test/flutter_test.dart';
 import 'package:vm_service/vm_service.dart';
diff --git a/packages/devtools_app/test/network/network_request_inspector_test.dart b/packages/devtools_app/test/network/network_request_inspector_test.dart
index 2150d41..f3d7a0e 100644
--- a/packages/devtools_app/test/network/network_request_inspector_test.dart
+++ b/packages/devtools_app/test/network/network_request_inspector_test.dart
@@ -10,6 +10,7 @@
 import 'package:devtools_app_shared/ui.dart';
 import 'package:devtools_app_shared/utils.dart';
 import 'package:devtools_test/devtools_test.dart';
+import 'package:devtools_test/helpers.dart';
 import 'package:flutter/material.dart';
 import 'package:flutter_test/flutter_test.dart';
 import 'package:vm_service/vm_service.dart';
diff --git a/packages/devtools_app/test/network/network_screen_test.dart b/packages/devtools_app/test/network/network_screen_test.dart
index cd60bdd..88f64e3 100644
--- a/packages/devtools_app/test/network/network_screen_test.dart
+++ b/packages/devtools_app/test/network/network_screen_test.dart
@@ -6,6 +6,7 @@
 import 'package:devtools_app_shared/ui.dart';
 import 'package:devtools_app_shared/utils.dart';
 import 'package:devtools_test/devtools_test.dart';
+import 'package:devtools_test/helpers.dart';
 import 'package:flutter/material.dart';
 import 'package:flutter_test/flutter_test.dart';
 import 'package:mockito/mockito.dart';
diff --git a/packages/devtools_app/test/performance/controls/enhance_tracing_test.dart b/packages/devtools_app/test/performance/controls/enhance_tracing_test.dart
index afe9963..fb46f6a 100644
--- a/packages/devtools_app/test/performance/controls/enhance_tracing_test.dart
+++ b/packages/devtools_app/test/performance/controls/enhance_tracing_test.dart
@@ -7,6 +7,7 @@
 import 'package:devtools_app_shared/ui.dart';
 import 'package:devtools_app_shared/utils.dart';
 import 'package:devtools_test/devtools_test.dart';
+import 'package:devtools_test/helpers.dart';
 import 'package:flutter/material.dart';
 import 'package:flutter_test/flutter_test.dart';
 import 'package:mockito/mockito.dart';
diff --git a/packages/devtools_app/test/performance/controls/performance_controls_test.dart b/packages/devtools_app/test/performance/controls/performance_controls_test.dart
index ff7b261..2ef5514 100644
--- a/packages/devtools_app/test/performance/controls/performance_controls_test.dart
+++ b/packages/devtools_app/test/performance/controls/performance_controls_test.dart
@@ -8,6 +8,7 @@
 import 'package:devtools_app_shared/ui.dart';
 import 'package:devtools_app_shared/utils.dart';
 import 'package:devtools_test/devtools_test.dart';
+import 'package:devtools_test/helpers.dart';
 import 'package:flutter/material.dart';
 import 'package:flutter_test/flutter_test.dart';
 import 'package:mockito/mockito.dart';
diff --git a/packages/devtools_app/test/performance/flutter_frames/flutter_frames_chart_test.dart b/packages/devtools_app/test/performance/flutter_frames/flutter_frames_chart_test.dart
index 6d81bd0..cc1f1d0 100644
--- a/packages/devtools_app/test/performance/flutter_frames/flutter_frames_chart_test.dart
+++ b/packages/devtools_app/test/performance/flutter_frames/flutter_frames_chart_test.dart
@@ -9,6 +9,7 @@
 import 'package:devtools_app_shared/ui.dart';
 import 'package:devtools_app_shared/utils.dart';
 import 'package:devtools_test/devtools_test.dart';
+import 'package:devtools_test/helpers.dart';
 import 'package:flutter/material.dart';
 import 'package:flutter_test/flutter_test.dart';
 
diff --git a/packages/devtools_app/test/performance/frame_analysis/frame_analysis_test.dart b/packages/devtools_app/test/performance/frame_analysis/frame_analysis_test.dart
index 92e01a0..96638f3 100644
--- a/packages/devtools_app/test/performance/frame_analysis/frame_analysis_test.dart
+++ b/packages/devtools_app/test/performance/frame_analysis/frame_analysis_test.dart
@@ -10,6 +10,7 @@
 import 'package:devtools_app_shared/ui.dart';
 import 'package:devtools_app_shared/utils.dart';
 import 'package:devtools_test/devtools_test.dart';
+import 'package:devtools_test/helpers.dart';
 import 'package:flutter/material.dart';
 import 'package:flutter_test/flutter_test.dart';
 
diff --git a/packages/devtools_app/test/performance/frame_analysis/frame_hints_test.dart b/packages/devtools_app/test/performance/frame_analysis/frame_hints_test.dart
index 0302849..1638135 100644
--- a/packages/devtools_app/test/performance/frame_analysis/frame_hints_test.dart
+++ b/packages/devtools_app/test/performance/frame_analysis/frame_hints_test.dart
@@ -8,6 +8,7 @@
 import 'package:devtools_app_shared/ui.dart';
 import 'package:devtools_app_shared/utils.dart';
 import 'package:devtools_test/devtools_test.dart';
+import 'package:devtools_test/helpers.dart';
 import 'package:flutter/material.dart';
 import 'package:flutter_test/flutter_test.dart';
 import 'package:mockito/mockito.dart';
diff --git a/packages/devtools_app/test/performance/performance_screen_test.dart b/packages/devtools_app/test/performance/performance_screen_test.dart
index a00ef9d..bfe244d 100644
--- a/packages/devtools_app/test/performance/performance_screen_test.dart
+++ b/packages/devtools_app/test/performance/performance_screen_test.dart
@@ -17,6 +17,7 @@
 import 'package:devtools_app_shared/utils.dart';
 import 'package:devtools_shared/devtools_test_utils.dart';
 import 'package:devtools_test/devtools_test.dart';
+import 'package:devtools_test/helpers.dart';
 import 'package:flutter/material.dart';
 import 'package:flutter_markdown/flutter_markdown.dart';
 import 'package:flutter_test/flutter_test.dart';
diff --git a/packages/devtools_app/test/performance/raster_stats/raster_stats_test.dart b/packages/devtools_app/test/performance/raster_stats/raster_stats_test.dart
index 19138c1..9c63920 100644
--- a/packages/devtools_app/test/performance/raster_stats/raster_stats_test.dart
+++ b/packages/devtools_app/test/performance/raster_stats/raster_stats_test.dart
@@ -7,6 +7,7 @@
 import 'package:devtools_app_shared/ui.dart';
 import 'package:devtools_app_shared/utils.dart';
 import 'package:devtools_test/devtools_test.dart';
+import 'package:devtools_test/helpers.dart';
 import 'package:flutter_test/flutter_test.dart';
 import 'package:mockito/mockito.dart';
 import 'package:vm_service/vm_service.dart';
diff --git a/packages/devtools_app/test/performance/tabbed_performance_view_test.dart b/packages/devtools_app/test/performance/tabbed_performance_view_test.dart
index eb99aea..e47992e 100644
--- a/packages/devtools_app/test/performance/tabbed_performance_view_test.dart
+++ b/packages/devtools_app/test/performance/tabbed_performance_view_test.dart
@@ -13,6 +13,7 @@
 import 'package:devtools_app_shared/ui.dart';
 import 'package:devtools_app_shared/utils.dart';
 import 'package:devtools_test/devtools_test.dart';
+import 'package:devtools_test/helpers.dart';
 import 'package:flutter/material.dart';
 import 'package:flutter_test/flutter_test.dart';
 import 'package:mockito/mockito.dart';
diff --git a/packages/devtools_app/test/performance/timeline_events/legacy/event_details_test.dart b/packages/devtools_app/test/performance/timeline_events/legacy/event_details_test.dart
index b8809c0..dd6823d 100644
--- a/packages/devtools_app/test/performance/timeline_events/legacy/event_details_test.dart
+++ b/packages/devtools_app/test/performance/timeline_events/legacy/event_details_test.dart
@@ -6,7 +6,7 @@
 import 'package:devtools_app/src/screens/performance/panes/timeline_events/legacy/event_details.dart';
 import 'package:devtools_app_shared/ui.dart';
 import 'package:devtools_app_shared/utils.dart';
-import 'package:devtools_test/devtools_test.dart';
+import 'package:devtools_test/helpers.dart';
 import 'package:flutter/material.dart';
 import 'package:flutter_test/flutter_test.dart';
 
diff --git a/packages/devtools_app/test/performance/timeline_events/legacy/legacy_events_controller_test.dart b/packages/devtools_app/test/performance/timeline_events/legacy/legacy_events_controller_test.dart
index 67932a3..9d66962 100644
--- a/packages/devtools_app/test/performance/timeline_events/legacy/legacy_events_controller_test.dart
+++ b/packages/devtools_app/test/performance/timeline_events/legacy/legacy_events_controller_test.dart
@@ -8,6 +8,7 @@
 import 'package:devtools_app_shared/ui.dart';
 import 'package:devtools_app_shared/utils.dart';
 import 'package:devtools_test/devtools_test.dart';
+import 'package:devtools_test/helpers.dart';
 import 'package:flutter_test/flutter_test.dart';
 import 'package:mockito/mockito.dart';
 import 'package:vm_service/vm_service.dart' hide TimelineEvent;
diff --git a/packages/devtools_app/test/performance/timeline_events/legacy/timeline_flame_chart_test.dart b/packages/devtools_app/test/performance/timeline_events/legacy/timeline_flame_chart_test.dart
index 44a13a7..54bfb0b 100644
--- a/packages/devtools_app/test/performance/timeline_events/legacy/timeline_flame_chart_test.dart
+++ b/packages/devtools_app/test/performance/timeline_events/legacy/timeline_flame_chart_test.dart
@@ -10,6 +10,7 @@
 import 'package:devtools_app_shared/ui.dart';
 import 'package:devtools_app_shared/utils.dart';
 import 'package:devtools_test/devtools_test.dart';
+import 'package:devtools_test/helpers.dart';
 import 'package:flutter/foundation.dart';
 import 'package:flutter/material.dart';
 import 'package:flutter_test/flutter_test.dart';
diff --git a/packages/devtools_app/test/primitives/utils_test.dart b/packages/devtools_app/test/primitives/utils_test.dart
index b8b320f..06dd79e 100644
--- a/packages/devtools_app/test/primitives/utils_test.dart
+++ b/packages/devtools_app/test/primitives/utils_test.dart
@@ -8,7 +8,7 @@
 import 'package:devtools_app_shared/ui.dart';
 import 'package:devtools_app_shared/utils.dart';
 import 'package:devtools_shared/devtools_test_utils.dart';
-import 'package:devtools_test/devtools_test.dart';
+import 'package:devtools_test/helpers.dart';
 import 'package:flutter/material.dart';
 import 'package:flutter/services.dart';
 import 'package:flutter_test/flutter_test.dart';
diff --git a/packages/devtools_app/test/shared/about_dialog_test.dart b/packages/devtools_app/test/shared/about_dialog_test.dart
index 34dea5d..90d708e 100644
--- a/packages/devtools_app/test/shared/about_dialog_test.dart
+++ b/packages/devtools_app/test/shared/about_dialog_test.dart
@@ -8,6 +8,7 @@
 import 'package:devtools_app_shared/ui.dart';
 import 'package:devtools_app_shared/utils.dart';
 import 'package:devtools_test/devtools_test.dart';
+import 'package:devtools_test/helpers.dart';
 import 'package:flutter_test/flutter_test.dart';
 import 'package:mockito/mockito.dart';
 
diff --git a/packages/devtools_app/test/shared/analytics_prompt_test.dart b/packages/devtools_app/test/shared/analytics_prompt_test.dart
index b4d2f76..bf90d5a 100644
--- a/packages/devtools_app/test/shared/analytics_prompt_test.dart
+++ b/packages/devtools_app/test/shared/analytics_prompt_test.dart
@@ -7,6 +7,7 @@
 import 'package:devtools_app_shared/ui.dart';
 import 'package:devtools_app_shared/utils.dart';
 import 'package:devtools_test/devtools_test.dart';
+import 'package:devtools_test/helpers.dart';
 import 'package:flutter/material.dart';
 import 'package:flutter_test/flutter_test.dart';
 import 'package:provider/provider.dart';
diff --git a/packages/devtools_app/test/shared/ansi_up_test.dart b/packages/devtools_app/test/shared/ansi_up_test.dart
index 395d646..38e68a7 100644
--- a/packages/devtools_app/test/shared/ansi_up_test.dart
+++ b/packages/devtools_app/test/shared/ansi_up_test.dart
@@ -10,6 +10,7 @@
 import 'package:devtools_app/src/shared/console/widgets/console_pane.dart';
 import 'package:devtools_app_shared/utils.dart';
 import 'package:devtools_test/devtools_test.dart';
+import 'package:devtools_test/helpers.dart';
 import 'package:flutter/material.dart';
 import 'package:flutter_test/flutter_test.dart';
 import 'package:mockito/mockito.dart';
diff --git a/packages/devtools_app/test/shared/banner_messages_test.dart b/packages/devtools_app/test/shared/banner_messages_test.dart
index be700f1..a6f70ac 100644
--- a/packages/devtools_app/test/shared/banner_messages_test.dart
+++ b/packages/devtools_app/test/shared/banner_messages_test.dart
@@ -10,6 +10,7 @@
 import 'package:devtools_app_shared/ui.dart';
 import 'package:devtools_app_shared/utils.dart';
 import 'package:devtools_test/devtools_test.dart';
+import 'package:devtools_test/helpers.dart';
 import 'package:flutter/material.dart';
 import 'package:flutter_test/flutter_test.dart';
 
diff --git a/packages/devtools_app/test/shared/common_widgets_test.dart b/packages/devtools_app/test/shared/common_widgets_test.dart
index e8ae955..208398f 100644
--- a/packages/devtools_app/test/shared/common_widgets_test.dart
+++ b/packages/devtools_app/test/shared/common_widgets_test.dart
@@ -6,6 +6,7 @@
 import 'package:devtools_app_shared/ui.dart';
 import 'package:devtools_app_shared/utils.dart';
 import 'package:devtools_test/devtools_test.dart';
+import 'package:devtools_test/helpers.dart';
 import 'package:flutter/material.dart';
 import 'package:flutter_test/flutter_test.dart';
 
diff --git a/packages/devtools_app/test/shared/connection_info_test.dart b/packages/devtools_app/test/shared/connection_info_test.dart
index 49f2f9f..f273519 100644
--- a/packages/devtools_app/test/shared/connection_info_test.dart
+++ b/packages/devtools_app/test/shared/connection_info_test.dart
@@ -7,6 +7,7 @@
 import 'package:devtools_app_shared/ui.dart';
 import 'package:devtools_app_shared/utils.dart';
 import 'package:devtools_test/devtools_test.dart';
+import 'package:devtools_test/helpers.dart';
 import 'package:flutter/material.dart';
 import 'package:flutter_test/flutter_test.dart';
 import 'package:mockito/mockito.dart';
diff --git a/packages/devtools_app/test/shared/editable_list_test.dart b/packages/devtools_app/test/shared/editable_list_test.dart
index 4ff5c43..4d13ee4 100644
--- a/packages/devtools_app/test/shared/editable_list_test.dart
+++ b/packages/devtools_app/test/shared/editable_list_test.dart
@@ -6,7 +6,7 @@
 import 'package:devtools_app/src/shared/editable_list.dart';
 import 'package:devtools_app_shared/ui.dart';
 import 'package:devtools_app_shared/utils.dart';
-import 'package:devtools_test/devtools_test.dart';
+import 'package:devtools_test/helpers.dart';
 import 'package:flutter/material.dart';
 import 'package:flutter_test/flutter_test.dart';
 
diff --git a/packages/devtools_app/test/shared/home_screen_test.dart b/packages/devtools_app/test/shared/home_screen_test.dart
index 52e6af2..0fd42d6 100644
--- a/packages/devtools_app/test/shared/home_screen_test.dart
+++ b/packages/devtools_app/test/shared/home_screen_test.dart
@@ -7,6 +7,7 @@
 import 'package:devtools_app_shared/ui.dart';
 import 'package:devtools_app_shared/utils.dart';
 import 'package:devtools_test/devtools_test.dart';
+import 'package:devtools_test/helpers.dart';
 import 'package:flutter/material.dart';
 import 'package:flutter_test/flutter_test.dart';
 import 'package:mockito/mockito.dart';
diff --git a/packages/devtools_app/test/shared/initializer_test.dart b/packages/devtools_app/test/shared/initializer_test.dart
index 17f39b8..a5e806c 100644
--- a/packages/devtools_app/test/shared/initializer_test.dart
+++ b/packages/devtools_app/test/shared/initializer_test.dart
@@ -9,6 +9,7 @@
 import 'package:devtools_app_shared/ui.dart';
 import 'package:devtools_app_shared/utils.dart';
 import 'package:devtools_test/devtools_test.dart';
+import 'package:devtools_test/helpers.dart';
 import 'package:flutter/material.dart';
 import 'package:flutter_test/flutter_test.dart';
 import 'package:mockito/mockito.dart';
diff --git a/packages/devtools_app/test/shared/instance_viewer_test.dart b/packages/devtools_app/test/shared/instance_viewer_test.dart
index 1f47712..88fe5fb 100644
--- a/packages/devtools_app/test/shared/instance_viewer_test.dart
+++ b/packages/devtools_app/test/shared/instance_viewer_test.dart
@@ -11,6 +11,7 @@
 import 'package:devtools_app_shared/ui.dart';
 import 'package:devtools_app_shared/utils.dart';
 import 'package:devtools_test/devtools_test.dart';
+import 'package:devtools_test/helpers.dart';
 import 'package:flutter/material.dart';
 import 'package:flutter/services.dart';
 import 'package:flutter_riverpod/flutter_riverpod.dart';
diff --git a/packages/devtools_app/test/shared/scaffold_debugger_test.dart b/packages/devtools_app/test/shared/scaffold_debugger_test.dart
index 935f0df..f373826 100644
--- a/packages/devtools_app/test/shared/scaffold_debugger_test.dart
+++ b/packages/devtools_app/test/shared/scaffold_debugger_test.dart
@@ -10,6 +10,7 @@
 import 'package:devtools_app_shared/ui.dart';
 import 'package:devtools_app_shared/utils.dart';
 import 'package:devtools_test/devtools_test.dart';
+import 'package:devtools_test/helpers.dart';
 import 'package:flutter/material.dart';
 import 'package:flutter_test/flutter_test.dart';
 import 'package:mockito/mockito.dart';
diff --git a/packages/devtools_app/test/shared/scaffold_debugging_controls_test.dart b/packages/devtools_app/test/shared/scaffold_debugging_controls_test.dart
index c5394a8..649823f 100644
--- a/packages/devtools_app/test/shared/scaffold_debugging_controls_test.dart
+++ b/packages/devtools_app/test/shared/scaffold_debugging_controls_test.dart
@@ -10,6 +10,7 @@
 import 'package:devtools_app_shared/ui.dart';
 import 'package:devtools_app_shared/utils.dart';
 import 'package:devtools_test/devtools_test.dart';
+import 'package:devtools_test/helpers.dart';
 import 'package:flutter/material.dart';
 import 'package:flutter_test/flutter_test.dart';
 import 'package:mockito/mockito.dart';
diff --git a/packages/devtools_app/test/shared/scaffold_no_app_test.dart b/packages/devtools_app/test/shared/scaffold_no_app_test.dart
index 59317d1..36a6c77 100644
--- a/packages/devtools_app/test/shared/scaffold_no_app_test.dart
+++ b/packages/devtools_app/test/shared/scaffold_no_app_test.dart
@@ -10,6 +10,7 @@
 import 'package:devtools_app_shared/ui.dart';
 import 'package:devtools_app_shared/utils.dart';
 import 'package:devtools_test/devtools_test.dart';
+import 'package:devtools_test/helpers.dart';
 import 'package:flutter/material.dart';
 import 'package:flutter_test/flutter_test.dart';
 import 'package:mockito/mockito.dart';
diff --git a/packages/devtools_app/test/shared/scaffold_profile_test.dart b/packages/devtools_app/test/shared/scaffold_profile_test.dart
index c723165..bbdb4f2 100644
--- a/packages/devtools_app/test/shared/scaffold_profile_test.dart
+++ b/packages/devtools_app/test/shared/scaffold_profile_test.dart
@@ -10,6 +10,7 @@
 import 'package:devtools_app_shared/ui.dart';
 import 'package:devtools_app_shared/utils.dart';
 import 'package:devtools_test/devtools_test.dart';
+import 'package:devtools_test/helpers.dart';
 import 'package:flutter/material.dart';
 import 'package:flutter_test/flutter_test.dart';
 import 'package:mockito/mockito.dart';
diff --git a/packages/devtools_app/test/shared/scaffold_test.dart b/packages/devtools_app/test/shared/scaffold_test.dart
index f5e0a3f..d6838d7 100644
--- a/packages/devtools_app/test/shared/scaffold_test.dart
+++ b/packages/devtools_app/test/shared/scaffold_test.dart
@@ -10,6 +10,7 @@
 import 'package:devtools_app_shared/ui.dart';
 import 'package:devtools_app_shared/utils.dart';
 import 'package:devtools_test/devtools_test.dart';
+import 'package:devtools_test/helpers.dart';
 import 'package:flutter/material.dart';
 import 'package:flutter_test/flutter_test.dart';
 import 'package:mockito/mockito.dart';
diff --git a/packages/devtools_app/test/shared/service_extension_widgets_test.dart b/packages/devtools_app/test/shared/service_extension_widgets_test.dart
index 2f1969b..a5d990b 100644
--- a/packages/devtools_app/test/shared/service_extension_widgets_test.dart
+++ b/packages/devtools_app/test/shared/service_extension_widgets_test.dart
@@ -15,6 +15,7 @@
 import 'package:devtools_app_shared/ui.dart';
 import 'package:devtools_app_shared/utils.dart';
 import 'package:devtools_test/devtools_test.dart';
+import 'package:devtools_test/helpers.dart';
 import 'package:flutter/foundation.dart';
 import 'package:flutter/material.dart';
 import 'package:flutter_test/flutter_test.dart';
diff --git a/packages/devtools_app/test/shared/syntax_highlighter_test.dart b/packages/devtools_app/test/shared/syntax_highlighter_test.dart
index 22d6a13..5e4c0f2 100644
--- a/packages/devtools_app/test/shared/syntax_highlighter_test.dart
+++ b/packages/devtools_app/test/shared/syntax_highlighter_test.dart
@@ -12,7 +12,7 @@
 import 'package:devtools_app/src/shared/ui/colors.dart';
 import 'package:devtools_app_shared/ui.dart';
 import 'package:devtools_app_shared/utils.dart';
-import 'package:devtools_test/devtools_test.dart';
+import 'package:devtools_test/helpers.dart';
 import 'package:flutter/cupertino.dart';
 import 'package:flutter/material.dart';
 import 'package:flutter_test/flutter_test.dart';
diff --git a/packages/devtools_app/test/shared/table_test.dart b/packages/devtools_app/test/shared/table_test.dart
index e047334..1411eea 100644
--- a/packages/devtools_app/test/shared/table_test.dart
+++ b/packages/devtools_app/test/shared/table_test.dart
@@ -10,6 +10,7 @@
 import 'package:devtools_app_shared/ui.dart';
 import 'package:devtools_app_shared/utils.dart';
 import 'package:devtools_test/devtools_test.dart';
+import 'package:devtools_test/helpers.dart';
 import 'package:flutter/material.dart' hide TableRow;
 import 'package:flutter/services.dart';
 import 'package:flutter_test/flutter_test.dart';
diff --git a/packages/devtools_app/test/shared/treemap_test.dart b/packages/devtools_app/test/shared/treemap_test.dart
index 954c65f..dd7164d 100644
--- a/packages/devtools_app/test/shared/treemap_test.dart
+++ b/packages/devtools_app/test/shared/treemap_test.dart
@@ -2,14 +2,18 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
+import 'dart:convert';
+
 import 'package:devtools_app/src/service/service_manager.dart';
 import 'package:devtools_app/src/shared/charts/treemap.dart';
 import 'package:devtools_app_shared/ui.dart';
 import 'package:devtools_app_shared/utils.dart';
 import 'package:devtools_test/devtools_test.dart';
+import 'package:devtools_test/helpers.dart';
 import 'package:flutter/foundation.dart';
 import 'package:flutter/material.dart';
 import 'package:flutter_test/flutter_test.dart';
+import 'package:vm_snapshot_analysis/treemap.dart';
 
 import '../test_infra/matchers/matchers.dart';
 import '../test_infra/test_data/app_size/apk_analysis.dart';
@@ -132,7 +136,7 @@
 
   group('Treemap from small instruction sizes', () {
     setUp(() async {
-      root = await loadSnapshotJsonAsTree(smallInstructionSizes);
+      root = await _loadSnapshotJsonAsTree(smallInstructionSizes);
     });
     testWidgetsWithWindowSize(
       'zooms in down to a node without children',
@@ -167,7 +171,7 @@
 
   group('Treemap from instruction sizes', () {
     setUp(() async {
-      root = await loadSnapshotJsonAsTree(instructionSizes);
+      root = await _loadSnapshotJsonAsTree(instructionSizes);
     });
 
     testWidgetsWithWindowSize(
@@ -190,7 +194,7 @@
 
   group('Treemap from v8 snapshot', () {
     setUp(() async {
-      root = await loadSnapshotJsonAsTree(newV8);
+      root = await _loadSnapshotJsonAsTree(newV8);
     });
 
     testWidgetsWithWindowSize(
@@ -215,7 +219,7 @@
 
   group('Treemap from APK analysis', () {
     setUp(() async {
-      root = await loadSnapshotJsonAsTree(apkAnalysis);
+      root = await _loadSnapshotJsonAsTree(apkAnalysis);
     });
 
     testWidgetsWithWindowSize(
@@ -238,3 +242,44 @@
     );
   });
 }
+
+Future<TreemapNode> _loadSnapshotJsonAsTree(String snapshotJson) async {
+  final treemapTestData = jsonDecode(snapshotJson);
+
+  if (treemapTestData is Map<String, dynamic> &&
+      treemapTestData['type'] == 'apk') {
+    return _generateTree(treemapTestData);
+  } else {
+    final processedTestData = treemapFromJson(treemapTestData);
+    processedTestData['n'] = 'Root';
+    return _generateTree(processedTestData);
+  }
+}
+
+/// Builds a tree with [TreemapNode] from [treeJson] which represents
+/// the hierarchical structure of the tree.
+TreemapNode _generateTree(Map<String, dynamic> treeJson) {
+  var treemapNodeName = treeJson['n'];
+  if (treemapNodeName == '') treemapNodeName = 'Unnamed';
+  final rawChildren = treeJson['children'];
+  final treemapNodeChildren = <TreemapNode>[];
+
+  int treemapNodeSize = 0;
+  if (rawChildren != null) {
+    // If not a leaf node, build all children then take the sum of the
+    // children's sizes as its own size.
+    for (var child in rawChildren) {
+      final childTreemapNode = _generateTree(child);
+      treemapNodeChildren.add(childTreemapNode);
+      treemapNodeSize += childTreemapNode.byteSize;
+    }
+    treemapNodeSize = treemapNodeSize;
+  } else {
+    // If a leaf node, just take its own size.
+    // Defaults to 0 if a leaf node has a size of null.
+    treemapNodeSize = treeJson['value'] ?? 0;
+  }
+
+  return TreemapNode(name: treemapNodeName, byteSize: treemapNodeSize)
+    ..addAllChildren(treemapNodeChildren);
+}
diff --git a/packages/devtools_app/test/shared/ui_utils_test.dart b/packages/devtools_app/test/shared/ui_utils_test.dart
index 18102d6..bdfb31c 100644
--- a/packages/devtools_app/test/shared/ui_utils_test.dart
+++ b/packages/devtools_app/test/shared/ui_utils_test.dart
@@ -7,6 +7,7 @@
 import 'package:devtools_app_shared/ui.dart';
 import 'package:devtools_app_shared/utils.dart';
 import 'package:devtools_test/devtools_test.dart';
+import 'package:devtools_test/helpers.dart';
 import 'package:flutter/material.dart';
 import 'package:flutter_test/flutter_test.dart';
 
diff --git a/packages/devtools_app/test/shared/vm_flag_widgets_test.dart b/packages/devtools_app/test/shared/vm_flag_widgets_test.dart
index 2286c66..25b310e 100644
--- a/packages/devtools_app/test/shared/vm_flag_widgets_test.dart
+++ b/packages/devtools_app/test/shared/vm_flag_widgets_test.dart
@@ -10,6 +10,7 @@
 import 'package:devtools_app_shared/ui.dart';
 import 'package:devtools_app_shared/utils.dart';
 import 'package:devtools_test/devtools_test.dart';
+import 'package:devtools_test/helpers.dart';
 import 'package:flutter/material.dart';
 import 'package:flutter_test/flutter_test.dart';
 import 'package:mockito/mockito.dart';
diff --git a/packages/devtools_app/test/test_infra/scenes/cpu_profiler/default.dart b/packages/devtools_app/test/test_infra/scenes/cpu_profiler/default.dart
index 89e2971..3296b31 100644
--- a/packages/devtools_app/test/test_infra/scenes/cpu_profiler/default.dart
+++ b/packages/devtools_app/test/test_infra/scenes/cpu_profiler/default.dart
@@ -8,6 +8,7 @@
 import 'package:devtools_app_shared/ui.dart';
 import 'package:devtools_app_shared/utils.dart';
 import 'package:devtools_test/devtools_test.dart';
+import 'package:devtools_test/helpers.dart';
 import 'package:flutter/material.dart';
 import 'package:mockito/mockito.dart';
 import 'package:stager/stager.dart';
diff --git a/packages/devtools_app/test/test_infra/scenes/memory/default.dart b/packages/devtools_app/test/test_infra/scenes/memory/default.dart
index 3a46f14..df0e605 100644
--- a/packages/devtools_app/test/test_infra/scenes/memory/default.dart
+++ b/packages/devtools_app/test/test_infra/scenes/memory/default.dart
@@ -14,6 +14,7 @@
 import 'package:devtools_app_shared/utils.dart';
 import 'package:devtools_shared/devtools_shared.dart';
 import 'package:devtools_test/devtools_test.dart';
+import 'package:devtools_test/helpers.dart';
 import 'package:flutter/material.dart';
 import 'package:flutter_test/flutter_test.dart';
 import 'package:mockito/mockito.dart';
diff --git a/packages/devtools_app/test/test_infra/scenes/memory/diff_snapshot.dart b/packages/devtools_app/test/test_infra/scenes/memory/diff_snapshot.dart
index a01489f..ec22f4e 100644
--- a/packages/devtools_app/test/test_infra/scenes/memory/diff_snapshot.dart
+++ b/packages/devtools_app/test/test_infra/scenes/memory/diff_snapshot.dart
@@ -11,6 +11,7 @@
 import 'package:devtools_app_shared/ui.dart';
 import 'package:devtools_app_shared/utils.dart';
 import 'package:devtools_test/devtools_test.dart';
+import 'package:devtools_test/helpers.dart';
 import 'package:flutter/material.dart';
 import 'package:flutter_test/flutter_test.dart';
 import 'package:stager/stager.dart';
diff --git a/packages/devtools_app/test/test_infra/scenes/performance/default.dart b/packages/devtools_app/test/test_infra/scenes/performance/default.dart
index 97a8046..44904ae 100644
--- a/packages/devtools_app/test/test_infra/scenes/performance/default.dart
+++ b/packages/devtools_app/test/test_infra/scenes/performance/default.dart
@@ -11,7 +11,7 @@
 import 'package:devtools_app/src/shared/feature_flags.dart';
 import 'package:devtools_app_shared/ui.dart';
 import 'package:devtools_app_shared/utils.dart';
-import 'package:devtools_test/devtools_test.dart';
+import 'package:devtools_test/helpers.dart';
 import 'package:flutter/material.dart';
 import 'package:stager/stager.dart';
 
diff --git a/packages/devtools_app/test/vm_developer/object_inspector/class_hierarchy_explorer_test.dart b/packages/devtools_app/test/vm_developer/object_inspector/class_hierarchy_explorer_test.dart
index 289f242..92eee37 100644
--- a/packages/devtools_app/test/vm_developer/object_inspector/class_hierarchy_explorer_test.dart
+++ b/packages/devtools_app/test/vm_developer/object_inspector/class_hierarchy_explorer_test.dart
@@ -7,6 +7,7 @@
 import 'package:devtools_app_shared/ui.dart';
 import 'package:devtools_app_shared/utils.dart';
 import 'package:devtools_test/devtools_test.dart';
+import 'package:devtools_test/helpers.dart';
 import 'package:flutter/widgets.dart';
 import 'package:flutter_test/flutter_test.dart';
 import 'package:vm_service/vm_service.dart';
diff --git a/packages/devtools_app/test/vm_developer/object_inspector/object_inspector_view_test.dart b/packages/devtools_app/test/vm_developer/object_inspector/object_inspector_view_test.dart
index ee5d696..fd66817 100644
--- a/packages/devtools_app/test/vm_developer/object_inspector/object_inspector_view_test.dart
+++ b/packages/devtools_app/test/vm_developer/object_inspector/object_inspector_view_test.dart
@@ -9,6 +9,7 @@
 import 'package:devtools_app_shared/ui.dart';
 import 'package:devtools_app_shared/utils.dart';
 import 'package:devtools_test/devtools_test.dart';
+import 'package:devtools_test/helpers.dart';
 import 'package:flutter/material.dart';
 import 'package:flutter_test/flutter_test.dart';
 import 'package:mockito/mockito.dart';
diff --git a/packages/devtools_app/test/vm_developer/object_inspector/object_viewport_test.dart b/packages/devtools_app/test/vm_developer/object_inspector/object_viewport_test.dart
index 4164e75..0df5322 100644
--- a/packages/devtools_app/test/vm_developer/object_inspector/object_viewport_test.dart
+++ b/packages/devtools_app/test/vm_developer/object_inspector/object_viewport_test.dart
@@ -14,6 +14,7 @@
 import 'package:devtools_app_shared/ui.dart';
 import 'package:devtools_app_shared/utils.dart';
 import 'package:devtools_test/devtools_test.dart';
+import 'package:devtools_test/helpers.dart';
 import 'package:flutter/widgets.dart';
 import 'package:flutter_test/flutter_test.dart';
 import 'package:mockito/mockito.dart';
diff --git a/packages/devtools_app/test/vm_developer/object_inspector/vm_class_display_test.dart b/packages/devtools_app/test/vm_developer/object_inspector/vm_class_display_test.dart
index b6872e6..7a5c00f 100644
--- a/packages/devtools_app/test/vm_developer/object_inspector/vm_class_display_test.dart
+++ b/packages/devtools_app/test/vm_developer/object_inspector/vm_class_display_test.dart
@@ -8,6 +8,7 @@
 import 'package:devtools_app_shared/ui.dart';
 import 'package:devtools_app_shared/utils.dart';
 import 'package:devtools_test/devtools_test.dart';
+import 'package:devtools_test/helpers.dart';
 import 'package:flutter/material.dart';
 import 'package:flutter_test/flutter_test.dart';
 import 'package:mockito/mockito.dart';
diff --git a/packages/devtools_app/test/vm_developer/object_inspector/vm_code_display_test.dart b/packages/devtools_app/test/vm_developer/object_inspector/vm_code_display_test.dart
index 371700a..f9c981a 100644
--- a/packages/devtools_app/test/vm_developer/object_inspector/vm_code_display_test.dart
+++ b/packages/devtools_app/test/vm_developer/object_inspector/vm_code_display_test.dart
@@ -11,6 +11,7 @@
 import 'package:devtools_app_shared/ui.dart';
 import 'package:devtools_app_shared/utils.dart';
 import 'package:devtools_test/devtools_test.dart';
+import 'package:devtools_test/helpers.dart';
 import 'package:flutter/material.dart';
 import 'package:flutter_test/flutter_test.dart';
 import 'package:mockito/mockito.dart';
diff --git a/packages/devtools_app/test/vm_developer/object_inspector/vm_developer_common_widgets_test.dart b/packages/devtools_app/test/vm_developer/object_inspector/vm_developer_common_widgets_test.dart
index cc1b93f..acd5608 100644
--- a/packages/devtools_app/test/vm_developer/object_inspector/vm_developer_common_widgets_test.dart
+++ b/packages/devtools_app/test/vm_developer/object_inspector/vm_developer_common_widgets_test.dart
@@ -8,6 +8,7 @@
 import 'package:devtools_app_shared/ui.dart';
 import 'package:devtools_app_shared/utils.dart';
 import 'package:devtools_test/devtools_test.dart';
+import 'package:devtools_test/helpers.dart';
 import 'package:flutter/material.dart';
 import 'package:flutter_test/flutter_test.dart';
 import 'package:mockito/mockito.dart';
diff --git a/packages/devtools_app/test/vm_developer/object_inspector/vm_field_display_test.dart b/packages/devtools_app/test/vm_developer/object_inspector/vm_field_display_test.dart
index 9b3eafe..3333bb6 100644
--- a/packages/devtools_app/test/vm_developer/object_inspector/vm_field_display_test.dart
+++ b/packages/devtools_app/test/vm_developer/object_inspector/vm_field_display_test.dart
@@ -8,6 +8,7 @@
 import 'package:devtools_app_shared/ui.dart';
 import 'package:devtools_app_shared/utils.dart';
 import 'package:devtools_test/devtools_test.dart';
+import 'package:devtools_test/helpers.dart';
 import 'package:flutter/material.dart';
 import 'package:flutter_test/flutter_test.dart';
 import 'package:mockito/mockito.dart';
diff --git a/packages/devtools_app/test/vm_developer/object_inspector/vm_function_display_test.dart b/packages/devtools_app/test/vm_developer/object_inspector/vm_function_display_test.dart
index a84bdc3..d74f46f 100644
--- a/packages/devtools_app/test/vm_developer/object_inspector/vm_function_display_test.dart
+++ b/packages/devtools_app/test/vm_developer/object_inspector/vm_function_display_test.dart
@@ -8,6 +8,7 @@
 import 'package:devtools_app_shared/ui.dart';
 import 'package:devtools_app_shared/utils.dart';
 import 'package:devtools_test/devtools_test.dart';
+import 'package:devtools_test/helpers.dart';
 import 'package:flutter/material.dart';
 import 'package:flutter_test/flutter_test.dart';
 import 'package:mockito/mockito.dart';
diff --git a/packages/devtools_app/test/vm_developer/object_inspector/vm_ic_data_display_test.dart b/packages/devtools_app/test/vm_developer/object_inspector/vm_ic_data_display_test.dart
index 3bf1e9a..6698e7a 100644
--- a/packages/devtools_app/test/vm_developer/object_inspector/vm_ic_data_display_test.dart
+++ b/packages/devtools_app/test/vm_developer/object_inspector/vm_ic_data_display_test.dart
@@ -8,6 +8,7 @@
 import 'package:devtools_app_shared/ui.dart';
 import 'package:devtools_app_shared/utils.dart';
 import 'package:devtools_test/devtools_test.dart';
+import 'package:devtools_test/helpers.dart';
 import 'package:flutter/material.dart';
 import 'package:flutter_test/flutter_test.dart';
 import 'package:mockito/mockito.dart';
diff --git a/packages/devtools_app/test/vm_developer/object_inspector/vm_library_display_test.dart b/packages/devtools_app/test/vm_developer/object_inspector/vm_library_display_test.dart
index cc014a9..971ecf8 100644
--- a/packages/devtools_app/test/vm_developer/object_inspector/vm_library_display_test.dart
+++ b/packages/devtools_app/test/vm_developer/object_inspector/vm_library_display_test.dart
@@ -8,6 +8,7 @@
 import 'package:devtools_app_shared/ui.dart';
 import 'package:devtools_app_shared/utils.dart';
 import 'package:devtools_test/devtools_test.dart';
+import 'package:devtools_test/helpers.dart';
 import 'package:flutter/material.dart';
 import 'package:flutter_test/flutter_test.dart';
 import 'package:mockito/mockito.dart';
diff --git a/packages/devtools_app/test/vm_developer/object_inspector/vm_object_pool_display_test.dart b/packages/devtools_app/test/vm_developer/object_inspector/vm_object_pool_display_test.dart
index 15711cf..6e38879 100644
--- a/packages/devtools_app/test/vm_developer/object_inspector/vm_object_pool_display_test.dart
+++ b/packages/devtools_app/test/vm_developer/object_inspector/vm_object_pool_display_test.dart
@@ -9,6 +9,7 @@
 import 'package:devtools_app_shared/ui.dart';
 import 'package:devtools_app_shared/utils.dart';
 import 'package:devtools_test/devtools_test.dart';
+import 'package:devtools_test/helpers.dart';
 import 'package:flutter/material.dart';
 import 'package:flutter_test/flutter_test.dart';
 import 'package:mockito/mockito.dart';
diff --git a/packages/devtools_app/test/vm_developer/object_inspector/vm_script_display_test.dart b/packages/devtools_app/test/vm_developer/object_inspector/vm_script_display_test.dart
index bf63d38..b572c7f 100644
--- a/packages/devtools_app/test/vm_developer/object_inspector/vm_script_display_test.dart
+++ b/packages/devtools_app/test/vm_developer/object_inspector/vm_script_display_test.dart
@@ -8,6 +8,7 @@
 import 'package:devtools_app_shared/ui.dart';
 import 'package:devtools_app_shared/utils.dart';
 import 'package:devtools_test/devtools_test.dart';
+import 'package:devtools_test/helpers.dart';
 import 'package:flutter/material.dart';
 import 'package:flutter_test/flutter_test.dart';
 import 'package:mockito/mockito.dart';
diff --git a/packages/devtools_app/test/vm_developer/object_inspector/vm_simple_list_display_test.dart b/packages/devtools_app/test/vm_developer/object_inspector/vm_simple_list_display_test.dart
index f377894..84df6f2 100644
--- a/packages/devtools_app/test/vm_developer/object_inspector/vm_simple_list_display_test.dart
+++ b/packages/devtools_app/test/vm_developer/object_inspector/vm_simple_list_display_test.dart
@@ -8,6 +8,7 @@
 import 'package:devtools_app_shared/ui.dart';
 import 'package:devtools_app_shared/utils.dart';
 import 'package:devtools_test/devtools_test.dart';
+import 'package:devtools_test/helpers.dart';
 import 'package:flutter/material.dart';
 import 'package:flutter_test/flutter_test.dart';
 import 'package:mockito/mockito.dart';
diff --git a/packages/devtools_app/test_benchmarks/README.md b/packages/devtools_app/test_benchmarks/README.md
index 641b760..9a41140 100644
--- a/packages/devtools_app/test_benchmarks/README.md
+++ b/packages/devtools_app/test_benchmarks/README.md
@@ -4,7 +4,7 @@
 
 To run a benchmark test locally, run:
 ```sh
-dart run test_benchmarks/<test_name.dart>
+flutter test test_benchmarks/<test_name.dart>
 ```
 
 ## Running a benchmark test on the CI
diff --git a/packages/devtools_app/test_benchmarks/web_bundle_size_test.dart b/packages/devtools_app/test_benchmarks/web_bundle_size_test.dart
index 973e3a7..09ee10a 100644
--- a/packages/devtools_app/test_benchmarks/web_bundle_size_test.dart
+++ b/packages/devtools_app/test_benchmarks/web_bundle_size_test.dart
@@ -1,4 +1,4 @@
-// Copyright 2023 The Flutter team. All rights reserved.
+// Copyright 2023 The Chromium Authors. All rights reserved.
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
diff --git a/packages/devtools_test/lib/devtools_test.dart b/packages/devtools_test/lib/devtools_test.dart
index 19d7932..f6c51e0 100644
--- a/packages/devtools_test/lib/devtools_test.dart
+++ b/packages/devtools_test/lib/devtools_test.dart
@@ -12,5 +12,3 @@
 export 'src/mocks/generated.mocks.dart';
 export 'src/mocks/generated_mocks_factories.dart';
 export 'src/mocks/mocks.dart';
-export 'src/utils.dart';
-export 'src/wrappers.dart';
diff --git a/packages/devtools_test/lib/helpers.dart b/packages/devtools_test/lib/helpers.dart
new file mode 100644
index 0000000..9eca34c
--- /dev/null
+++ b/packages/devtools_test/lib/helpers.dart
@@ -0,0 +1,8 @@
+// Copyright 2023 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+export 'src/helpers/actions.dart';
+export 'src/helpers/finders.dart';
+export 'src/helpers/utils.dart';
+export 'src/helpers/wrappers.dart';
diff --git a/packages/devtools_test/lib/devtools_integration_test.dart b/packages/devtools_test/lib/integration_test.dart
similarity index 100%
rename from packages/devtools_test/lib/devtools_integration_test.dart
rename to packages/devtools_test/lib/integration_test.dart
diff --git a/packages/devtools_test/lib/src/helpers/actions.dart b/packages/devtools_test/lib/src/helpers/actions.dart
new file mode 100644
index 0000000..b82d684
--- /dev/null
+++ b/packages/devtools_test/lib/src/helpers/actions.dart
@@ -0,0 +1,109 @@
+// Copyright 2023 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+import 'package:devtools_app/devtools_app.dart';
+import 'package:flutter/material.dart';
+import 'package:flutter_test/flutter_test.dart';
+
+import 'utils.dart';
+
+/// Navigates to each visible DevTools screen.
+Future<void> navigateThroughDevToolsScreens(
+  WidgetController controller, {
+  bool runWithExpectations = true,
+}) async {
+  final visibleScreenIds = generateVisibleScreenIds();
+  final tabs = controller.widgetList<Tab>(
+    find.descendant(
+      of: find.byType(DevToolsAppBar),
+      matching: find.byType(Tab),
+    ),
+  );
+
+  var numTabs = tabs.length;
+  if (numTabs < visibleScreenIds.length) {
+    final tabOverflowMenuFinder = find.descendant(
+      of: find.byType(TabOverflowButton),
+      matching: find.byType(MenuAnchor),
+    );
+    _maybeExpect(
+      tabOverflowMenuFinder,
+      findsOneWidget,
+      shouldExpect: runWithExpectations,
+    );
+    final menuChildren =
+        controller.widget<MenuAnchor>(tabOverflowMenuFinder).menuChildren;
+    numTabs += menuChildren.length;
+  }
+
+  _maybeExpect(
+    numTabs,
+    visibleScreenIds.length,
+    shouldExpect: runWithExpectations,
+  );
+
+  final screens = (ScreenMetaData.values.toList()
+    ..removeWhere((data) => !visibleScreenIds.contains(data.id)));
+  for (final screen in screens) {
+    await switchToScreen(
+      controller,
+      tabIcon: screen.icon!,
+      screenId: screen.id,
+      runWithExpectations: runWithExpectations,
+    );
+  }
+}
+
+List<String> generateVisibleScreenIds() {
+  final availableScreenIds = <String>[];
+  // ignore: invalid_use_of_visible_for_testing_member, valid use from package:devtools_test
+  for (final screen in devtoolsScreens!) {
+    if (shouldShowScreen(screen.screen)) {
+      availableScreenIds.add(screen.screen.screenId);
+    }
+  }
+  return availableScreenIds;
+}
+
+/// Switches to the DevTools screen with icon [tabIcon] and pumps the tester
+/// to settle the UI.
+Future<void> switchToScreen(
+  WidgetController controller, {
+  required IconData tabIcon,
+  required String screenId,
+  bool warnIfTapMissed = true,
+  bool runWithExpectations = true,
+}) async {
+  logStatus('switching to $screenId screen (icon $tabIcon)');
+  final tabFinder = await findTab(controller, tabIcon);
+  _maybeExpect(
+    tabFinder,
+    findsOneWidget,
+    shouldExpect: runWithExpectations,
+  );
+
+  await controller.tap(tabFinder, warnIfMissed: warnIfTapMissed);
+  // We use pump here instead of pumpAndSettle because pumpAndSettle will
+  // never complete if there is an animation (e.g. a progress indicator).
+  await controller.pump(safePumpDuration);
+}
+
+/// Finds the tab with [icon] either in the top-level DevTools tab bar or in the
+/// tab overflow menu for tabs that don't fit on screen.
+Future<Finder> findTab(WidgetController controller, IconData icon) async {
+  // Open the tab overflow menu before looking for the tab.
+  final tabOverflowButtonFinder = find.byType(TabOverflowButton);
+  if (tabOverflowButtonFinder.evaluate().isNotEmpty) {
+    await controller.tap(tabOverflowButtonFinder);
+    await controller.pump(shortPumpDuration);
+  }
+  return find.widgetWithIcon(Tab, icon);
+}
+
+// ignore: avoid-dynamic, wrapper around `expect`, which uses dynamic types.
+void _maybeExpect(dynamic actual, dynamic matcher, {bool shouldExpect = true}) {
+  if (shouldExpect) {
+    expect(actual, matcher);
+  }
+}
diff --git a/packages/devtools_test/lib/src/helpers/finders.dart b/packages/devtools_test/lib/src/helpers/finders.dart
new file mode 100644
index 0000000..f2b84f6
--- /dev/null
+++ b/packages/devtools_test/lib/src/helpers/finders.dart
@@ -0,0 +1,54 @@
+// Copyright 2020 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+import 'package:flutter/material.dart';
+import 'package:flutter_test/flutter_test.dart';
+
+Finder findSubstring(String text) {
+  return find.byWidgetPredicate((widget) {
+    if (widget is Text) {
+      if (widget.data != null) return widget.data!.contains(text);
+      return widget.textSpan!.toPlainText().contains(text);
+    } else if (widget is RichText) {
+      return widget.text.toPlainText().contains(text);
+    } else if (widget is SelectableText) {
+      if (widget.data != null) return widget.data!.contains(text);
+    }
+    return false;
+  });
+}
+
+extension RichTextChecking on CommonFinders {
+  Finder richText(String text) {
+    return find.byWidgetPredicate(
+      (widget) => widget is RichText && widget.text.toPlainText() == text,
+    );
+  }
+
+  Finder richTextContaining(String text) {
+    return find.byWidgetPredicate(
+      (widget) =>
+          widget is RichText && widget.text.toPlainText().contains(text),
+    );
+  }
+}
+
+extension SelectableTextChecking on CommonFinders {
+  Finder selectableText(String text) {
+    return find.byWidgetPredicate(
+      (widget) =>
+          widget is SelectableText &&
+          (widget.data == text || widget.textSpan?.toPlainText() == text),
+    );
+  }
+
+  Finder selectableTextContaining(String text) {
+    return find.byWidgetPredicate(
+      (widget) =>
+          widget is SelectableText &&
+          ((widget.data?.contains(text) ?? false) ||
+              (widget.textSpan?.toPlainText().contains(text) ?? false)),
+    );
+  }
+}
diff --git a/packages/devtools_test/lib/src/utils.dart b/packages/devtools_test/lib/src/helpers/utils.dart
similarity index 68%
rename from packages/devtools_test/lib/src/utils.dart
rename to packages/devtools_test/lib/src/helpers/utils.dart
index 94fe755..8cb6feb 100644
--- a/packages/devtools_test/lib/src/utils.dart
+++ b/packages/devtools_test/lib/src/helpers/utils.dart
@@ -8,11 +8,14 @@
 
 import 'package:devtools_app/devtools_app.dart';
 import 'package:flutter/foundation.dart';
-import 'package:flutter/material.dart';
 import 'package:flutter/services.dart';
 import 'package:flutter_test/flutter_test.dart';
 import 'package:path/path.dart' as path;
-import 'package:vm_snapshot_analysis/treemap.dart';
+
+const shortPumpDuration = Duration(seconds: 1);
+const safePumpDuration = Duration(seconds: 3);
+const longPumpDuration = Duration(seconds: 6);
+const veryLongPumpDuration = Duration(seconds: 9);
 
 final screenIds = <String>[
   AppSizeScreen.id,
@@ -65,95 +68,6 @@
   return completer.future;
 }
 
-Future<TreemapNode> loadSnapshotJsonAsTree(String snapshotJson) async {
-  final treemapTestData = jsonDecode(snapshotJson);
-
-  if (treemapTestData is Map<String, dynamic> &&
-      treemapTestData['type'] == 'apk') {
-    return generateTree(treemapTestData);
-  } else {
-    final processedTestData = treemapFromJson(treemapTestData);
-    processedTestData['n'] = 'Root';
-    return generateTree(processedTestData);
-  }
-}
-
-/// Builds a tree with [TreemapNode] from [treeJson] which represents
-/// the hierarchical structure of the tree.
-TreemapNode generateTree(Map<String, dynamic> treeJson) {
-  var treemapNodeName = treeJson['n'];
-  if (treemapNodeName == '') treemapNodeName = 'Unnamed';
-  final rawChildren = treeJson['children'];
-  final treemapNodeChildren = <TreemapNode>[];
-
-  int treemapNodeSize = 0;
-  if (rawChildren != null) {
-    // If not a leaf node, build all children then take the sum of the
-    // children's sizes as its own size.
-    for (var child in rawChildren) {
-      final childTreemapNode = generateTree(child);
-      treemapNodeChildren.add(childTreemapNode);
-      treemapNodeSize += childTreemapNode.byteSize;
-    }
-    treemapNodeSize = treemapNodeSize;
-  } else {
-    // If a leaf node, just take its own size.
-    // Defaults to 0 if a leaf node has a size of null.
-    treemapNodeSize = treeJson['value'] ?? 0;
-  }
-
-  return TreemapNode(name: treemapNodeName, byteSize: treemapNodeSize)
-    ..addAllChildren(treemapNodeChildren);
-}
-
-Finder findSubstring(String text) {
-  return find.byWidgetPredicate((widget) {
-    if (widget is Text) {
-      if (widget.data != null) return widget.data!.contains(text);
-      return widget.textSpan!.toPlainText().contains(text);
-    } else if (widget is RichText) {
-      return widget.text.toPlainText().contains(text);
-    } else if (widget is SelectableText) {
-      if (widget.data != null) return widget.data!.contains(text);
-    }
-    return false;
-  });
-}
-
-extension RichTextChecking on CommonFinders {
-  Finder richText(String text) {
-    return find.byWidgetPredicate(
-      (widget) => widget is RichText && widget.text.toPlainText() == text,
-    );
-  }
-
-  Finder richTextContaining(String text) {
-    return find.byWidgetPredicate(
-      (widget) =>
-          widget is RichText && widget.text.toPlainText().contains(text),
-    );
-  }
-}
-
-extension SelectableTextChecking on CommonFinders {
-  Finder selectableText(String text) {
-    return find.byWidgetPredicate(
-      (widget) =>
-          widget is SelectableText &&
-          (widget.data == text || widget.textSpan?.toPlainText() == text),
-    );
-  }
-
-  Finder selectableTextContaining(String text) {
-    return find.byWidgetPredicate(
-      (widget) =>
-          widget is SelectableText &&
-          ((widget.data?.contains(text) ?? false) ||
-              (widget.textSpan?.toPlainText().contains(text) ?? false)),
-    );
-  }
-}
-
 /// Workaround to initialize the live widget binding with assets.
 ///
 /// The [LiveTestWidgetsFlutterBinding] is useful for unit tests that need to
@@ -291,3 +205,8 @@
     );
   }
 }
+
+void logStatus(String log) {
+  // ignore: avoid_print, intentional print for test output
+  print('TEST STATUS: $log');
+}
diff --git a/packages/devtools_test/lib/src/wrappers.dart b/packages/devtools_test/lib/src/helpers/wrappers.dart
similarity index 100%
rename from packages/devtools_test/lib/src/wrappers.dart
rename to packages/devtools_test/lib/src/helpers/wrappers.dart
diff --git a/packages/devtools_test/lib/src/integration_test/integration_test_utils.dart b/packages/devtools_test/lib/src/integration_test/integration_test_utils.dart
index ee36040..50a7b4b 100644
--- a/packages/devtools_test/lib/src/integration_test/integration_test_utils.dart
+++ b/packages/devtools_test/lib/src/integration_test/integration_test_utils.dart
@@ -12,13 +12,9 @@
 import 'package:flutter_test/flutter_test.dart';
 import 'package:integration_test/integration_test.dart';
 
+import '../helpers/utils.dart';
 import 'test_data/performance.dart';
 
-const shortPumpDuration = Duration(seconds: 1);
-const safePumpDuration = Duration(seconds: 3);
-const longPumpDuration = Duration(seconds: 6);
-const veryLongPumpDuration = Duration(seconds: 9);
-
 /// Required to have multiple test cases in a file.
 Future<void> resetHistory() async {
   // ignore: avoid-dynamic, necessary here.
@@ -70,36 +66,6 @@
   );
 }
 
-/// Switches to the DevTools screen with icon [tabIcon] and pumps the tester
-/// to settle the UI.
-Future<void> switchToScreen(
-  WidgetTester tester, {
-  required IconData tabIcon,
-  required String screenId,
-  bool warnIfTapMissed = true,
-}) async {
-  logStatus('switching to $screenId screen (icon $tabIcon)');
-  final tabFinder = await findTab(tester, tabIcon);
-  expect(tabFinder, findsOneWidget);
-
-  await tester.tap(tabFinder, warnIfMissed: warnIfTapMissed);
-  // We use pump here instead of pumpAndSettle because pumpAndSettle will
-  // never complete if there is an animation (e.g. a progress indicator).
-  await tester.pump(safePumpDuration);
-}
-
-/// Finds the tab with [icon] either in the top-level DevTools tab bar or in the
-/// tab overflow menu for tabs that don't fit on screen.
-Future<Finder> findTab(WidgetTester tester, IconData icon) async {
-  // Open the tab overflow menu before looking for the tab.
-  final tabOverflowButtonFinder = find.byType(TabOverflowButton);
-  if (tabOverflowButtonFinder.evaluate().isNotEmpty) {
-    await tester.tap(tabOverflowButtonFinder);
-    await tester.pump(shortPumpDuration);
-  }
-  return find.widgetWithIcon(Tab, icon);
-}
-
 Future<void> pumpDevTools(WidgetTester tester) async {
   // TODO(kenz): how can we share code across integration_test/test and
   // integration_test/test_infra? When trying to import, we get an error:
@@ -144,11 +110,6 @@
   await tester.pump(safePumpDuration);
 }
 
-void logStatus(String log) {
-  // ignore: avoid_print, intentional print for test output
-  print('TEST STATUS: $log');
-}
-
 class TestApp {
   TestApp._({required this.vmServiceUri});
 
diff --git a/packages/devtools_test/lib/src/mocks/fake_service_manager.dart b/packages/devtools_test/lib/src/mocks/fake_service_manager.dart
index aad8d89..5ff4e9d 100644
--- a/packages/devtools_test/lib/src/mocks/fake_service_manager.dart
+++ b/packages/devtools_test/lib/src/mocks/fake_service_manager.dart
@@ -13,7 +13,7 @@
 import 'package:mockito/mockito.dart';
 import 'package:vm_service/vm_service.dart';
 
-import '../utils.dart';
+import '../helpers/utils.dart';
 import 'fake_isolate_manager.dart';
 import 'fake_service_extension_manager.dart';
 import 'fake_vm_service_wrapper.dart';
diff --git a/tool/ci/benchmark_tests.sh b/tool/ci/benchmark_tests.sh
index e0083e9..e41e278 100755
--- a/tool/ci/benchmark_tests.sh
+++ b/tool/ci/benchmark_tests.sh
@@ -10,5 +10,5 @@
 source ./tool/ci/setup.sh
 
 pushd $DEVTOOLS_DIR/packages/devtools_app
-dart run test_benchmarks/web_bundle_size_test.dart
+flutter test test_benchmarks/
 popd