Split DDC integration tests between AMD and DDC Library Bundle module systems (#2788)

Migrates `integration` tests to `*_amd_test` and `_ddc_library_bundle_test` files.
diff --git a/dwds/CHANGELOG.md b/dwds/CHANGELOG.md
index cf0cb27..3da791e 100644
--- a/dwds/CHANGELOG.md
+++ b/dwds/CHANGELOG.md
@@ -10,6 +10,7 @@
 - Add sourcemap logic fixes to DDC Library Bundle + build_runner execution scheme.
 - Update pathing logic for Windows and the DDC Library Bundle module system.
 - Fix serialization of `HotRestartRequest` in `AppConnection`.
+- Split integration tests across DDC module systems.
 - Split additional tests across DDC module systems.
 
 ## 27.0.0
diff --git a/dwds/test/integration/breakpoint_amd_test.dart b/dwds/test/integration/breakpoint_amd_test.dart
new file mode 100644
index 0000000..d6a5ae4
--- /dev/null
+++ b/dwds/test/integration/breakpoint_amd_test.dart
@@ -0,0 +1,39 @@
+// Copyright (c) 2026, the Dart project authors.  Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+@TestOn('vm')
+@Timeout(Duration(minutes: 2))
+library;
+
+import 'package:dwds/expression_compiler.dart';
+import 'package:test/test.dart';
+import 'package:test_common/test_sdk_configuration.dart';
+
+import 'breakpoint_common.dart';
+import 'fixtures/context.dart';
+
+void main() {
+  // Enable verbose logging for debugging.
+  const debug = false;
+
+  final provider = TestSdkConfigurationProvider(
+    verbose: debug,
+    ddcModuleFormat: ModuleFormat.amd,
+  );
+  tearDownAll(provider.dispose);
+
+  group('Build Daemon |', () {
+    testBreakpoint(
+      provider: provider,
+      compilationMode: CompilationMode.buildDaemon,
+    );
+  });
+
+  group('Frontend Server |', () {
+    testBreakpoint(
+      provider: provider,
+      compilationMode: CompilationMode.frontendServer,
+    );
+  });
+}
diff --git a/dwds/test/integration/build_daemon_breakpoint_test.dart b/dwds/test/integration/breakpoint_common.dart
similarity index 72%
rename from dwds/test/integration/build_daemon_breakpoint_test.dart
rename to dwds/test/integration/breakpoint_common.dart
index 47dc759..230f2f0 100644
--- a/dwds/test/integration/build_daemon_breakpoint_test.dart
+++ b/dwds/test/integration/breakpoint_common.dart
@@ -2,27 +2,34 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
-@TestOn('vm')
-@Timeout(Duration(minutes: 2))
-library;
-
 import 'package:test/test.dart';
+import 'package:test_common/logging.dart';
 import 'package:test_common/test_sdk_configuration.dart';
 import 'package:vm_service/vm_service.dart';
 import 'package:vm_service_interface/vm_service_interface.dart';
 
 import 'fixtures/context.dart';
 import 'fixtures/project.dart';
+import 'fixtures/utilities.dart';
 
-void main() {
-  final provider = TestSdkConfigurationProvider();
-  tearDownAll(provider.dispose);
-
+void testBreakpoint({
+  required TestSdkConfigurationProvider provider,
+  required CompilationMode compilationMode,
+  bool verboseCompiler = false,
+}) {
   final context = TestContext(TestProject.testPackage(), provider);
 
   group('shared context', () {
     setUpAll(() async {
-      await context.setUp();
+      setCurrentLogWriter(debug: provider.verbose);
+      await context.setUp(
+        testSettings: TestSettings(
+          compilationMode: compilationMode,
+          verboseCompiler: verboseCompiler,
+          canaryFeatures: provider.canaryFeatures,
+          moduleFormat: provider.ddcModuleFormat,
+        ),
+      );
     });
 
     tearDownAll(() async {
@@ -41,6 +48,7 @@
 
       setUp(() async {
         service = context.service;
+        setCurrentLogWriter(debug: provider.verbose);
         vm = await service.getVM();
         isolate = await service.getIsolate(vm.isolates!.first.id!);
         isolateId = isolate.id!;
@@ -56,7 +64,13 @@
       });
 
       tearDown(() async {
-        await service.resume(isolateId);
+        // We must resume execution in case a test left the isolate paused, but
+        // error 106 is expected if the isolate is already running.
+        try {
+          await service.resume(isolateId);
+        } on RPCError catch (e) {
+          if (e.code != 106) rethrow;
+        }
       });
 
       test('set breakpoint', () async {
@@ -130,7 +144,7 @@
         var currentIsolate = await service.getIsolate(isolateId);
         expect(currentIsolate.breakpoints, containsAll([bp1]));
 
-        // Remove breakpoints so they don't impact other tests.
+        // Remove breakpoint so it doesn't impact other tests.
         await service.removeBreakpoint(isolateId, bp1.id!);
 
         currentIsolate = await service.getIsolate(isolateId);
@@ -161,7 +175,7 @@
           var currentIsolate = await service.getIsolate(isolateId);
           expect(currentIsolate.breakpoints, containsAll([breakpoints[0]]));
 
-          // Remove breakpoints so they don't impact other tests.
+          // Remove breakpoint so it doesn't impact other tests.
           await service.removeBreakpoint(isolateId, breakpoints[0].id!);
 
           currentIsolate = await service.getIsolate(isolateId);
@@ -188,7 +202,7 @@
         var currentIsolate = await service.getIsolate(isolateId);
         expect(currentIsolate.breakpoints, containsAll([bp]));
 
-        // Remove breakpoints so they don't impact other tests.
+        // Remove breakpoint so it doesn't impact other tests.
         await service.removeBreakpoint(isolateId, bp.id!);
         await expectLater(
           service.removeBreakpoint(isolateId, bp.id!),
@@ -198,6 +212,37 @@
         currentIsolate = await service.getIsolate(isolateId);
         expect(currentIsolate.breakpoints, isEmpty);
       });
+
+      test('set breakpoint inside a JavaScript line succeeds', () async {
+        final line = await context.findBreakpointLine(
+          'printNestedObjectMultiLine',
+          isolateId,
+          mainScript,
+        );
+        final column = 0;
+        final bp = await service.addBreakpointWithScriptUri(
+          isolateId,
+          mainScriptUri,
+          line,
+          column: column,
+        );
+
+        await stream.firstWhere(
+          (Event event) => event.kind == EventKind.kPauseBreakpoint,
+        );
+
+        expect(bp, isNotNull);
+        expect(
+          bp.location,
+          isA<SourceLocation>()
+              .having((loc) => loc.script, 'script', equals(mainScript))
+              .having((loc) => loc.line, 'line', equals(line))
+              .having((loc) => loc.column, 'column', greaterThan(column)),
+        );
+
+        // Remove breakpoint so it doesn't impact other tests.
+        await service.removeBreakpoint(isolateId, bp.id!);
+      });
     });
   });
 }
diff --git a/dwds/test/integration/breakpoint_ddc_library_bundle_test.dart b/dwds/test/integration/breakpoint_ddc_library_bundle_test.dart
new file mode 100644
index 0000000..15d1f38
--- /dev/null
+++ b/dwds/test/integration/breakpoint_ddc_library_bundle_test.dart
@@ -0,0 +1,40 @@
+// Copyright (c) 2026, the Dart project authors.  Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+@TestOn('vm')
+@Timeout(Duration(minutes: 2))
+library;
+
+import 'package:dwds/expression_compiler.dart';
+import 'package:test/test.dart';
+import 'package:test_common/test_sdk_configuration.dart';
+
+import 'breakpoint_common.dart';
+import 'fixtures/context.dart';
+
+void main() {
+  // Enable verbose logging for debugging.
+  const debug = false;
+
+  final provider = TestSdkConfigurationProvider(
+    verbose: debug,
+    ddcModuleFormat: ModuleFormat.ddc,
+    canaryFeatures: true,
+  );
+  tearDownAll(provider.dispose);
+
+  group('Build Daemon |', () {
+    testBreakpoint(
+      provider: provider,
+      compilationMode: CompilationMode.buildDaemon,
+    );
+  });
+
+  group('Frontend Server |', () {
+    testBreakpoint(
+      provider: provider,
+      compilationMode: CompilationMode.frontendServer,
+    );
+  });
+}
diff --git a/dwds/test/integration/build_daemon_callstack_test.dart b/dwds/test/integration/build_daemon_callstack_test.dart
deleted file mode 100644
index c93b58f..0000000
--- a/dwds/test/integration/build_daemon_callstack_test.dart
+++ /dev/null
@@ -1,330 +0,0 @@
-// Copyright (c) 2019, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-@TestOn('vm')
-@Timeout(Duration(minutes: 2))
-library;
-
-import 'package:test/test.dart';
-import 'package:test_common/logging.dart';
-import 'package:test_common/test_sdk_configuration.dart';
-import 'package:vm_service/vm_service.dart';
-import 'package:vm_service_interface/vm_service_interface.dart';
-
-import 'fixtures/context.dart';
-import 'fixtures/project.dart';
-import 'fixtures/utilities.dart';
-
-void main() {
-  final provider = TestSdkConfigurationProvider();
-  tearDownAll(provider.dispose);
-
-  group('shared context |', () {
-    // Enable verbose logging for debugging.
-    const debug = false;
-
-    final project = TestProject.testPackage();
-    final context = TestContext(project, provider);
-
-    setUpAll(() async {
-      setCurrentLogWriter(debug: debug);
-      await context.setUp(
-        testSettings: TestSettings(
-          compilationMode: CompilationMode.buildDaemon,
-          enableExpressionEvaluation: true,
-          verboseCompiler: debug,
-        ),
-      );
-    });
-
-    tearDownAll(() async {
-      await context.tearDown();
-    });
-
-    group('callStack |', () {
-      late VmServiceInterface service;
-      VM vm;
-      late Isolate isolate;
-      ScriptList scripts;
-      late ScriptRef mainScript;
-      late ScriptRef testLibraryScript;
-      late Stream<Event> stream;
-
-      setUp(() async {
-        setCurrentLogWriter(debug: debug);
-        service = context.service;
-        vm = await service.getVM();
-        isolate = await service.getIsolate(vm.isolates!.first.id!);
-        scripts = await service.getScripts(isolate.id!);
-
-        await service.streamListen('Debug');
-        stream = service.onEvent('Debug');
-
-        final testPackage = context.project.packageName;
-        mainScript = scripts.scripts!.firstWhere(
-          (each) => each.uri!.contains('main.dart'),
-        );
-        testLibraryScript = scripts.scripts!.firstWhere(
-          (each) =>
-              each.uri!.contains('package:$testPackage/test_library.dart'),
-        );
-      });
-
-      tearDown(() async {
-        await service.resume(isolate.id!);
-      });
-
-      Future<void> onBreakPoint(
-        BreakpointTestData breakpoint,
-        Future<void> Function() body,
-      ) async {
-        Breakpoint? bp;
-        try {
-          final bpId = breakpoint.bpId;
-          final script = breakpoint.script;
-          final line = await context.findBreakpointLine(
-            bpId,
-            isolate.id!,
-            script,
-          );
-          bp = await service.addBreakpointWithScriptUri(
-            isolate.id!,
-            script.uri!,
-            line,
-          );
-
-          expect(bp, isNotNull);
-          expect(bp.location, _matchBpLocation(script, line, 0));
-
-          await stream.firstWhere(
-            (Event event) => event.kind == EventKind.kPauseBreakpoint,
-          );
-
-          await body();
-        } finally {
-          // Remove breakpoint so it doesn't impact other tests or retries.
-          if (bp != null) {
-            await service.removeBreakpoint(isolate.id!, bp.id!);
-          }
-        }
-      }
-
-      Future<void> testCallStack(
-        List<BreakpointTestData> breakpoints, {
-        int frameIndex = 1,
-      }) async {
-        // Find lines the breakpoints are located on.
-        final lines = await Future.wait(
-          breakpoints.map(
-            (frame) => context.findBreakpointLine(
-              frame.bpId,
-              isolate.id!,
-              frame.script,
-            ),
-          ),
-        );
-
-        // Get current stack.
-        final stack = await service.getStack(isolate.id!);
-
-        // Verify the stack is correct.
-        expect(stack.frames!.length, greaterThanOrEqualTo(lines.length));
-        final expected = [
-          for (var i = 0; i < lines.length; i++)
-            _matchFrame(
-              breakpoints[i].script,
-              breakpoints[i].function,
-              lines[i],
-            ),
-        ];
-        expect(stack.frames, containsAll(expected));
-
-        // Verify that expression evaluation is not failing.
-        final instance = await service.evaluateInFrame(
-          isolate.id!,
-          frameIndex,
-          'true',
-        );
-        expect(instance, isA<InstanceRef>());
-      }
-
-      test('breakpoint succeeds with correct callstack', () async {
-        // Expected breakpoints on the stack
-        final breakpoints = [
-          BreakpointTestData(
-            'printEnclosingObject',
-            'printEnclosingObject',
-            mainScript,
-          ),
-          BreakpointTestData(
-            'printEnclosingFunctionMultiLine',
-            'printNestedObjectsMultiLine',
-            mainScript,
-          ),
-          BreakpointTestData(
-            'callPrintEnclosingFunctionMultiLine',
-            '<closure>',
-            mainScript,
-          ),
-        ];
-        await onBreakPoint(breakpoints[0], () => testCallStack(breakpoints));
-      });
-
-      test('expression evaluation succeeds on parent frame', () async {
-        // Expected breakpoints on the stack
-        final breakpoints = [
-          BreakpointTestData(
-            'testLibraryClassConstructor',
-            'new',
-            testLibraryScript,
-          ),
-          BreakpointTestData(
-            'createLibraryObject',
-            'printFieldFromLibraryClass',
-            mainScript,
-          ),
-          BreakpointTestData(
-            'callPrintFieldFromLibraryClass',
-            '<closure>',
-            mainScript,
-          ),
-        ];
-        await onBreakPoint(
-          breakpoints[0],
-          () => testCallStack(breakpoints, frameIndex: 2),
-        );
-      });
-
-      test('breakpoint inside a line gives correct callstack', () async {
-        // Expected breakpoints on the stack
-        final breakpoints = [
-          BreakpointTestData('newEnclosedClass', 'new', mainScript),
-          BreakpointTestData(
-            'printNestedObjectMultiLine',
-            'printNestedObjectsMultiLine',
-            mainScript,
-          ),
-          BreakpointTestData(
-            'callPrintEnclosingFunctionMultiLine',
-            '<closure>',
-            mainScript,
-          ),
-        ];
-        await onBreakPoint(breakpoints[0], () => testCallStack(breakpoints));
-      });
-
-      test('breakpoint gives correct callstack after step out', () async {
-        // Expected breakpoints on the stack
-        final breakpoints = [
-          BreakpointTestData('newEnclosedClass', 'new', mainScript),
-          BreakpointTestData(
-            'printEnclosingObjectMultiLine',
-            'printNestedObjectsMultiLine',
-            mainScript,
-          ),
-          BreakpointTestData(
-            'callPrintEnclosingFunctionMultiLine',
-            '<closure>',
-            mainScript,
-          ),
-        ];
-        await onBreakPoint(breakpoints[0], () async {
-          await service.resume(isolate.id!, step: 'Out');
-          await stream.firstWhere(
-            (Event event) => event.kind == EventKind.kPauseInterrupted,
-          );
-          return testCallStack([breakpoints[1], breakpoints[2]]);
-        });
-      });
-
-      test('breakpoint gives correct callstack after step in', () async {
-        // Expected breakpoints on the stack
-        final breakpoints = [
-          BreakpointTestData('newEnclosedClass', 'new', mainScript),
-          BreakpointTestData(
-            'printNestedObjectMultiLine',
-            'printNestedObjectsMultiLine',
-            mainScript,
-          ),
-          BreakpointTestData(
-            'callPrintEnclosingFunctionMultiLine',
-            '<closure>',
-            mainScript,
-          ),
-        ];
-        await onBreakPoint(breakpoints[1], () async {
-          await service.resume(isolate.id!, step: 'Into');
-          await stream.firstWhere(
-            (Event event) => event.kind == EventKind.kPauseInterrupted,
-          );
-          return testCallStack(breakpoints);
-        });
-      });
-
-      test(
-        'breakpoint gives correct callstack after step into chain calls',
-        () async {
-          // Expected breakpoints on the stack
-          final breakpoints = [
-            BreakpointTestData(
-              'createObjectWithMethod',
-              'createObject',
-              mainScript,
-            ),
-            BreakpointTestData(
-              // This is currently incorrect, should be printObjectMultiLine.
-              // See issue: https://github.com/dart-lang/sdk/issues/48874
-              'printMultiLine',
-              'printObjectMultiLine',
-              mainScript,
-            ),
-            BreakpointTestData(
-              'callPrintObjectMultiLine',
-              '<closure>',
-              mainScript,
-            ),
-          ];
-          final bp = BreakpointTestData(
-            'printMultiLine',
-            'printObjectMultiLine',
-            mainScript,
-          );
-          await onBreakPoint(bp, () async {
-            await service.resume(isolate.id!, step: 'Into');
-            await stream.firstWhere(
-              (Event event) => event.kind == EventKind.kPauseInterrupted,
-            );
-            return testCallStack(breakpoints);
-          });
-        },
-      );
-    });
-  });
-}
-
-Matcher _matchFrame(ScriptRef script, String function, int line) => isA<Frame>()
-    .having((frame) => frame.code!.name, 'function', function)
-    .having(
-      (frame) => frame.location,
-      'location',
-      _matchFrameLocation(script, line),
-    );
-
-Matcher _matchBpLocation(ScriptRef script, int line, int column) =>
-    isA<SourceLocation>()
-        .having((loc) => loc.script, 'script', equals(script))
-        .having((loc) => loc.line, 'line', equals(line))
-        .having((loc) => loc.column, 'column', greaterThanOrEqualTo(column));
-
-Matcher _matchFrameLocation(ScriptRef script, int line) => isA<SourceLocation>()
-    .having((loc) => loc.script, 'script', equals(script))
-    .having((loc) => loc.line, 'line', equals(line));
-
-class BreakpointTestData {
-  String bpId;
-  String function;
-  ScriptRef script;
-
-  BreakpointTestData(this.bpId, this.function, this.script);
-}
diff --git a/dwds/test/integration/build_daemon_circular_evaluate_test.dart b/dwds/test/integration/build_daemon_circular_evaluate_test.dart
deleted file mode 100644
index 7e8823e..0000000
--- a/dwds/test/integration/build_daemon_circular_evaluate_test.dart
+++ /dev/null
@@ -1,23 +0,0 @@
-// Copyright (c) 2022, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-@TestOn('vm')
-@Timeout(Duration(minutes: 2))
-library;
-
-import 'package:test/test.dart';
-import 'package:test_common/test_sdk_configuration.dart';
-
-import 'evaluate_circular_common.dart';
-import 'fixtures/context.dart';
-
-void main() async {
-  // Enable verbose logging for debugging.
-  const debug = false;
-
-  final provider = TestSdkConfigurationProvider(verbose: debug);
-  tearDownAll(provider.dispose);
-
-  testAll(provider: provider, compilationMode: CompilationMode.buildDaemon);
-}
diff --git a/dwds/test/integration/build_daemon_evaluate_test.dart b/dwds/test/integration/build_daemon_evaluate_test.dart
deleted file mode 100644
index ec756c4..0000000
--- a/dwds/test/integration/build_daemon_evaluate_test.dart
+++ /dev/null
@@ -1,24 +0,0 @@
-// Copyright (c) 2020, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-@Tags(['daily'])
-@TestOn('vm')
-@Timeout(Duration(minutes: 2))
-library;
-
-import 'package:test/test.dart';
-import 'package:test_common/test_sdk_configuration.dart';
-
-import 'evaluate_common.dart';
-import 'fixtures/context.dart';
-
-void main() async {
-  // Enable verbose logging for debugging.
-  const debug = false;
-
-  final provider = TestSdkConfigurationProvider(verbose: debug);
-  tearDownAll(provider.dispose);
-
-  testAll(provider: provider, compilationMode: CompilationMode.buildDaemon);
-}
diff --git a/dwds/test/integration/build_daemon_parts_evaluate_test.dart b/dwds/test/integration/build_daemon_parts_evaluate_test.dart
deleted file mode 100644
index bafb960..0000000
--- a/dwds/test/integration/build_daemon_parts_evaluate_test.dart
+++ /dev/null
@@ -1,23 +0,0 @@
-// Copyright (c) 2025, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-@TestOn('vm')
-@Timeout(Duration(minutes: 2))
-library;
-
-import 'package:test/test.dart';
-import 'package:test_common/test_sdk_configuration.dart';
-
-import 'evaluate_parts_common.dart';
-import 'fixtures/context.dart';
-
-void main() async {
-  // Enable verbose logging for debugging.
-  const debug = false;
-
-  final provider = TestSdkConfigurationProvider(verbose: debug);
-  tearDownAll(provider.dispose);
-
-  testAll(provider: provider, compilationMode: CompilationMode.buildDaemon);
-}
diff --git a/dwds/test/integration/callstack_amd_test.dart b/dwds/test/integration/callstack_amd_test.dart
new file mode 100644
index 0000000..9deda58
--- /dev/null
+++ b/dwds/test/integration/callstack_amd_test.dart
@@ -0,0 +1,39 @@
+// Copyright (c) 2026, the Dart project authors.  Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+@TestOn('vm')
+@Timeout(Duration(minutes: 2))
+library;
+
+import 'package:dwds/expression_compiler.dart';
+import 'package:test/test.dart';
+import 'package:test_common/test_sdk_configuration.dart';
+
+import 'callstack_common.dart';
+import 'fixtures/context.dart';
+
+void main() {
+  // Enable verbose logging for debugging.
+  const debug = false;
+
+  final provider = TestSdkConfigurationProvider(
+    verbose: debug,
+    ddcModuleFormat: ModuleFormat.amd,
+  );
+  tearDownAll(provider.dispose);
+
+  group('Build Daemon |', () {
+    testCallStack(
+      provider: provider,
+      compilationMode: CompilationMode.buildDaemon,
+    );
+  });
+
+  group('Frontend Server |', () {
+    testCallStack(
+      provider: provider,
+      compilationMode: CompilationMode.frontendServer,
+    );
+  });
+}
diff --git a/dwds/test/integration/frontend_server_callstack_test.dart b/dwds/test/integration/callstack_common.dart
similarity index 93%
rename from dwds/test/integration/frontend_server_callstack_test.dart
rename to dwds/test/integration/callstack_common.dart
index 64ff9e3..5f7c652 100644
--- a/dwds/test/integration/frontend_server_callstack_test.dart
+++ b/dwds/test/integration/callstack_common.dart
@@ -2,10 +2,6 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
-@TestOn('vm')
-@Timeout(Duration(minutes: 2))
-library;
-
 import 'package:test/test.dart';
 import 'package:test_common/logging.dart';
 import 'package:test_common/test_sdk_configuration.dart';
@@ -16,24 +12,24 @@
 import 'fixtures/project.dart';
 import 'fixtures/utilities.dart';
 
-void main() {
-  // Enable verbose logging for debugging.
-  const debug = false;
-
-  final provider = TestSdkConfigurationProvider(verbose: debug);
-  tearDownAll(provider.dispose);
+void testCallStack({
+  required TestSdkConfigurationProvider provider,
+  required CompilationMode compilationMode,
+  bool verboseCompiler = false,
+}) {
+  final project = TestProject.testPackage();
+  final context = TestContext(project, provider);
 
   group('shared context |', () {
-    final project = TestProject.testPackage();
-    final context = TestContext(project, provider);
-
     setUpAll(() async {
-      setCurrentLogWriter(debug: debug);
+      setCurrentLogWriter(debug: provider.verbose);
       await context.setUp(
         testSettings: TestSettings(
-          compilationMode: CompilationMode.frontendServer,
+          compilationMode: compilationMode,
           enableExpressionEvaluation: true,
-          verboseCompiler: debug,
+          verboseCompiler: verboseCompiler,
+          moduleFormat: provider.ddcModuleFormat,
+          canaryFeatures: provider.canaryFeatures,
         ),
       );
     });
@@ -53,7 +49,7 @@
       late Stream<Event> stream;
 
       setUp(() async {
-        setCurrentLogWriter(debug: debug);
+        setCurrentLogWriter(debug: provider.verbose);
         service = context.service;
         vm = await service.getVM();
         isolate = await service.getIsolate(vm.isolates!.first.id!);
@@ -74,7 +70,9 @@
       });
 
       tearDown(() async {
-        await service.resume(isolateId);
+        try {
+          await service.resume(isolateId);
+        } catch (_) {}
       });
 
       Future<void> onBreakPoint(
diff --git a/dwds/test/integration/callstack_ddc_library_bundle_test.dart b/dwds/test/integration/callstack_ddc_library_bundle_test.dart
new file mode 100644
index 0000000..35e067c
--- /dev/null
+++ b/dwds/test/integration/callstack_ddc_library_bundle_test.dart
@@ -0,0 +1,40 @@
+// Copyright (c) 2026, the Dart project authors.  Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+@TestOn('vm')
+@Timeout(Duration(minutes: 2))
+library;
+
+import 'package:dwds/expression_compiler.dart';
+import 'package:test/test.dart';
+import 'package:test_common/test_sdk_configuration.dart';
+
+import 'callstack_common.dart';
+import 'fixtures/context.dart';
+
+void main() {
+  // Enable verbose logging for debugging.
+  const debug = false;
+
+  final provider = TestSdkConfigurationProvider(
+    verbose: debug,
+    ddcModuleFormat: ModuleFormat.ddc,
+    canaryFeatures: true,
+  );
+  tearDownAll(provider.dispose);
+
+  group('Build Daemon |', () {
+    testCallStack(
+      provider: provider,
+      compilationMode: CompilationMode.buildDaemon,
+    );
+  });
+
+  group('Frontend Server |', () {
+    testCallStack(
+      provider: provider,
+      compilationMode: CompilationMode.frontendServer,
+    );
+  });
+}
diff --git a/dwds/test/integration/circular_evaluate_amd_test.dart b/dwds/test/integration/circular_evaluate_amd_test.dart
new file mode 100644
index 0000000..a577469
--- /dev/null
+++ b/dwds/test/integration/circular_evaluate_amd_test.dart
@@ -0,0 +1,54 @@
+// Copyright (c) 2026, the Dart project authors.  Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+@Tags(['daily'])
+@TestOn('vm')
+@Timeout(Duration(minutes: 5))
+library;
+
+import 'dart:io';
+
+import 'package:dwds/expression_compiler.dart';
+import 'package:test/test.dart';
+import 'package:test_common/test_sdk_configuration.dart';
+
+import 'evaluate_circular_common.dart';
+import 'fixtures/context.dart';
+import 'fixtures/project.dart';
+
+void main() async {
+  // Enable verbose logging for debugging.
+  const debug = false;
+
+  final provider = TestSdkConfigurationProvider(
+    verbose: debug,
+    ddcModuleFormat: ModuleFormat.amd,
+  );
+  tearDownAll(provider.dispose);
+
+  group('Build Daemon |', () {
+    testAll(provider: provider, compilationMode: CompilationMode.buildDaemon);
+  });
+
+  group('Frontend Server |', () {
+    group('Context with circular dependencies |', () {
+      for (final indexBaseMode in IndexBaseMode.values) {
+        group(
+          'with ${indexBaseMode.name} |',
+          () {
+            testAll(
+              provider: provider,
+              compilationMode: CompilationMode.frontendServer,
+              indexBaseMode: indexBaseMode,
+              useDebuggerModuleNames: true,
+            );
+          },
+          skip:
+              // https://github.com/dart-lang/sdk/issues/49277
+              indexBaseMode == IndexBaseMode.base && Platform.isWindows,
+        );
+      }
+    });
+  });
+}
diff --git a/dwds/test/integration/circular_evaluate_ddc_library_bundle_test.dart b/dwds/test/integration/circular_evaluate_ddc_library_bundle_test.dart
new file mode 100644
index 0000000..4eff848
--- /dev/null
+++ b/dwds/test/integration/circular_evaluate_ddc_library_bundle_test.dart
@@ -0,0 +1,55 @@
+// Copyright (c) 2026, the Dart project authors.  Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+@Tags(['daily'])
+@TestOn('vm')
+@Timeout(Duration(minutes: 5))
+library;
+
+import 'dart:io';
+
+import 'package:dwds/expression_compiler.dart';
+import 'package:test/test.dart';
+import 'package:test_common/test_sdk_configuration.dart';
+
+import 'evaluate_circular_common.dart';
+import 'fixtures/context.dart';
+import 'fixtures/project.dart';
+
+void main() async {
+  // Enable verbose logging for debugging.
+  const debug = false;
+
+  final provider = TestSdkConfigurationProvider(
+    verbose: debug,
+    ddcModuleFormat: ModuleFormat.ddc,
+    canaryFeatures: true,
+  );
+  tearDownAll(provider.dispose);
+
+  group('Build Daemon |', () {
+    testAll(provider: provider, compilationMode: CompilationMode.buildDaemon);
+  });
+
+  group('Frontend Server |', () {
+    group('Context with circular dependencies |', () {
+      for (final indexBaseMode in IndexBaseMode.values) {
+        group(
+          'with ${indexBaseMode.name} |',
+          () {
+            testAll(
+              provider: provider,
+              compilationMode: CompilationMode.frontendServer,
+              indexBaseMode: indexBaseMode,
+              useDebuggerModuleNames: true,
+            );
+          },
+          skip:
+              // https://github.com/dart-lang/sdk/issues/49277
+              indexBaseMode == IndexBaseMode.base && Platform.isWindows,
+        );
+      }
+    });
+  });
+}
diff --git a/dwds/test/integration/frontend_server_ddc_evaluate_test.dart b/dwds/test/integration/evaluate_amd_test.dart
similarity index 79%
rename from dwds/test/integration/frontend_server_ddc_evaluate_test.dart
rename to dwds/test/integration/evaluate_amd_test.dart
index dc58202..821118c 100644
--- a/dwds/test/integration/frontend_server_ddc_evaluate_test.dart
+++ b/dwds/test/integration/evaluate_amd_test.dart
@@ -23,13 +23,17 @@
 
   final provider = TestSdkConfigurationProvider(
     verbose: debug,
-    ddcModuleFormat: ModuleFormat.ddc,
+    ddcModuleFormat: ModuleFormat.amd,
   );
   tearDownAll(provider.dispose);
 
-  for (final useDebuggerModuleNames in [false, true]) {
-    group('Debugger module names: $useDebuggerModuleNames |', () {
-      group('DDC module system |', () {
+  group('Build Daemon |', () {
+    testAll(provider: provider, compilationMode: CompilationMode.buildDaemon);
+  });
+
+  group('Frontend Server |', () {
+    for (final useDebuggerModuleNames in [false, true]) {
+      group('Debugger module names: $useDebuggerModuleNames |', () {
         for (final indexBaseMode in IndexBaseMode.values) {
           group(
             'with ${indexBaseMode.name} |',
@@ -46,6 +50,6 @@
           );
         }
       });
-    });
-  }
+    }
+  });
 }
diff --git a/dwds/test/integration/evaluate_circular_common.dart b/dwds/test/integration/evaluate_circular_common.dart
index c5a0287..8c1477b 100644
--- a/dwds/test/integration/evaluate_circular_common.dart
+++ b/dwds/test/integration/evaluate_circular_common.dart
@@ -70,6 +70,8 @@
           enableExpressionEvaluation: true,
           useDebuggerModuleNames: useDebuggerModuleNames,
           verboseCompiler: provider.verbose,
+          canaryFeatures: provider.canaryFeatures,
+          moduleFormat: provider.ddcModuleFormat,
         ),
       );
     });
diff --git a/dwds/test/integration/evaluate_ddc_library_bundle_test.dart b/dwds/test/integration/evaluate_ddc_library_bundle_test.dart
new file mode 100644
index 0000000..c0193eb
--- /dev/null
+++ b/dwds/test/integration/evaluate_ddc_library_bundle_test.dart
@@ -0,0 +1,60 @@
+// Copyright (c) 2026, the Dart project authors.  Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+@Tags(['daily'])
+@TestOn('vm')
+@Timeout(Duration(minutes: 5))
+library;
+
+import 'dart:io';
+
+import 'package:dwds/expression_compiler.dart';
+import 'package:test/test.dart';
+import 'package:test_common/test_sdk_configuration.dart';
+
+import 'evaluate_common.dart';
+import 'fixtures/context.dart';
+import 'fixtures/project.dart';
+
+void main() async {
+  // Enable verbose logging for debugging.
+  const debug = false;
+
+  group('Canary: true |', () {
+    final provider = TestSdkConfigurationProvider(
+      verbose: debug,
+      ddcModuleFormat: ModuleFormat.ddc,
+      canaryFeatures: true,
+    );
+    tearDownAll(provider.dispose);
+
+    group('Build Daemon |', () {
+      testAll(provider: provider, compilationMode: CompilationMode.buildDaemon);
+    });
+
+    group('Frontend Server |', () {
+      for (final useDebuggerModuleNames in [false, true]) {
+        group('Debugger module names: $useDebuggerModuleNames |', () {
+          for (final indexBaseMode in IndexBaseMode.values) {
+            group(
+              'with ${indexBaseMode.name} |',
+              () {
+                testAll(
+                  provider: provider,
+                  compilationMode: CompilationMode.frontendServer,
+                  indexBaseMode: indexBaseMode,
+                  useDebuggerModuleNames: useDebuggerModuleNames,
+                );
+              },
+              // https://github.com/dart-lang/sdk/issues/49277
+              skip: indexBaseMode == IndexBaseMode.base && Platform.isWindows
+                  ? 'Skipped on Windows when indexBaseMode is base. See issue: https://github.com/dart-lang/sdk/issues/49277'
+                  : null,
+            );
+          }
+        });
+      }
+    });
+  });
+}
diff --git a/dwds/test/integration/evaluate_parts_common.dart b/dwds/test/integration/evaluate_parts_common.dart
index 7282b89..0d9bfef 100644
--- a/dwds/test/integration/evaluate_parts_common.dart
+++ b/dwds/test/integration/evaluate_parts_common.dart
@@ -75,8 +75,8 @@
           enableExpressionEvaluation: true,
           useDebuggerModuleNames: useDebuggerModuleNames,
           verboseCompiler: provider.verbose,
-          moduleFormat: provider.ddcModuleFormat,
           canaryFeatures: provider.canaryFeatures,
+          moduleFormat: provider.ddcModuleFormat,
         ),
       );
 
diff --git a/dwds/test/integration/events_common.dart b/dwds/test/integration/events_common.dart
index ce534f3..0350ee4 100644
--- a/dwds/test/integration/events_common.dart
+++ b/dwds/test/integration/events_common.dart
@@ -435,8 +435,13 @@
         });
 
         tearDown(() async {
-          // Resume execution to not impact other tests.
-          await service.resume(isolateId);
+          // We must resume execution in case a test left the isolate paused, but
+          // error 106 is expected if the isolate is already running.
+          try {
+            await service.resume(isolateId);
+          } on RPCError catch (e) {
+            if (e.code != 106) rethrow;
+          }
         });
 
         test('emits RESUME events', () async {
diff --git a/dwds/test/integration/expression_compiler_service_test.dart b/dwds/test/integration/expression_compiler_service_amd_test.dart
similarity index 100%
rename from dwds/test/integration/expression_compiler_service_test.dart
rename to dwds/test/integration/expression_compiler_service_amd_test.dart
diff --git a/dwds/test/integration/expression_compiler_service_ddc_and_canary_test.dart b/dwds/test/integration/expression_compiler_service_ddc_library_bundle_test.dart
similarity index 100%
rename from dwds/test/integration/expression_compiler_service_ddc_and_canary_test.dart
rename to dwds/test/integration/expression_compiler_service_ddc_library_bundle_test.dart
diff --git a/dwds/test/integration/frontend_server_breakpoint_test.dart b/dwds/test/integration/frontend_server_breakpoint_test.dart
deleted file mode 100644
index 24b2414..0000000
--- a/dwds/test/integration/frontend_server_breakpoint_test.dart
+++ /dev/null
@@ -1,157 +0,0 @@
-// Copyright (c) 2019, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-@TestOn('vm')
-@Timeout(Duration(minutes: 2))
-library;
-
-import 'package:test/test.dart';
-import 'package:test_common/logging.dart';
-import 'package:test_common/test_sdk_configuration.dart';
-import 'package:vm_service/vm_service.dart';
-import 'package:vm_service_interface/vm_service_interface.dart';
-
-import 'fixtures/context.dart';
-import 'fixtures/project.dart';
-import 'fixtures/utilities.dart';
-
-void main() {
-  // Enable verbose logging for debugging.
-  const debug = false;
-
-  final provider = TestSdkConfigurationProvider(verbose: debug);
-  tearDownAll(provider.dispose);
-
-  final context = TestContext(TestProject.testPackage(), provider);
-
-  // Change to 'true' to print expression compiler messages to console.
-  //
-  // Note: expression compiler runs in an isolate, so its output is not
-  // currently redirected to a logger. As a result, it will be printed
-  // regardless of the logger settings.
-  final verboseCompiler = false;
-  group('shared context', () {
-    setUpAll(() async {
-      setCurrentLogWriter(debug: debug);
-      await context.setUp(
-        testSettings: TestSettings(
-          compilationMode: CompilationMode.frontendServer,
-          verboseCompiler: verboseCompiler,
-          canaryFeatures: provider.canaryFeatures,
-        ),
-      );
-    });
-
-    tearDownAll(() async {
-      await context.tearDown();
-    });
-
-    group('breakpoint', () {
-      late VmServiceInterface service;
-      VM vm;
-      late Isolate isolate;
-      late String isolateId;
-      ScriptList scripts;
-      late ScriptRef mainScript;
-      late String mainScriptUri;
-      late Stream<Event> stream;
-
-      setUp(() async {
-        service = context.service;
-        setCurrentLogWriter(debug: debug);
-        vm = await service.getVM();
-        isolate = await service.getIsolate(vm.isolates!.first.id!);
-        isolateId = isolate.id!;
-        scripts = await service.getScripts(isolateId);
-
-        await service.streamListen('Debug');
-        stream = service.onEvent('Debug');
-
-        mainScript = scripts.scripts!.firstWhere(
-          (each) => each.uri!.contains('main.dart'),
-        );
-        mainScriptUri = mainScript.uri!;
-      });
-
-      tearDown(() async {
-        await service.resume(isolateId);
-      });
-
-      test('set breakpoint', () async {
-        final line = await context.findBreakpointLine(
-          'printLocal',
-          isolateId,
-          mainScript,
-        );
-        final bp = await service.addBreakpointWithScriptUri(
-          isolateId,
-          mainScriptUri,
-          line,
-        );
-
-        await stream.firstWhere(
-          (Event event) => event.kind == EventKind.kPauseBreakpoint,
-        );
-
-        expect(bp, isNotNull);
-
-        // Remove breakpoint so it doesn't impact other tests.
-        await service.removeBreakpoint(isolateId, bp.id!);
-      });
-
-      test('set breakpoint again', () async {
-        final line = await context.findBreakpointLine(
-          'printLocal',
-          isolateId,
-          mainScript,
-        );
-        final bp = await service.addBreakpointWithScriptUri(
-          isolateId,
-          mainScriptUri,
-          line,
-        );
-
-        await stream.firstWhere(
-          (Event event) => event.kind == EventKind.kPauseBreakpoint,
-        );
-
-        expect(bp, isNotNull);
-
-        // Remove breakpoint so it doesn't impact other tests.
-        await service.removeBreakpoint(isolateId, bp.id!);
-      });
-
-      test('set breakpoint inside a JavaScript line succeeds', () async {
-        final line = await context.findBreakpointLine(
-          'printNestedObjectMultiLine',
-          isolateId,
-          mainScript,
-        );
-        final column = 0;
-        final bp = await service.addBreakpointWithScriptUri(
-          isolateId,
-          mainScriptUri,
-          line,
-          column: column,
-        );
-
-        await stream.firstWhere(
-          (Event event) => event.kind == EventKind.kPauseBreakpoint,
-        );
-
-        expect(bp, isNotNull);
-        expect(
-          bp.location,
-          isA<SourceLocation>()
-              .having((loc) => loc.script, 'script', equals(mainScript))
-              .having((loc) => loc.line, 'line', equals(line))
-              .having((loc) => loc.column, 'column', greaterThan(column)),
-        );
-
-        // Remove breakpoint so it doesn't impact other tests.
-        await service.removeBreakpoint(isolateId, bp.id!);
-      });
-    });
-  });
-}
diff --git a/dwds/test/integration/frontend_server_circular_evaluate_test.dart b/dwds/test/integration/frontend_server_circular_evaluate_test.dart
deleted file mode 100644
index 2e8e921..0000000
--- a/dwds/test/integration/frontend_server_circular_evaluate_test.dart
+++ /dev/null
@@ -1,43 +0,0 @@
-// Copyright (c) 2022, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-@TestOn('vm')
-@Timeout(Duration(minutes: 2))
-library;
-
-import 'dart:io';
-
-import 'package:test/test.dart';
-import 'package:test_common/test_sdk_configuration.dart';
-
-import 'evaluate_circular_common.dart';
-import 'fixtures/context.dart';
-import 'fixtures/project.dart';
-
-void main() async {
-  // Enable verbose logging for debugging.
-  const debug = false;
-
-  final provider = TestSdkConfigurationProvider(verbose: debug);
-  tearDownAll(provider.dispose);
-
-  group('Context with circular dependencies |', () {
-    for (final indexBaseMode in IndexBaseMode.values) {
-      group(
-        'with ${indexBaseMode.name} |',
-        () {
-          testAll(
-            provider: provider,
-            compilationMode: CompilationMode.frontendServer,
-            indexBaseMode: indexBaseMode,
-            useDebuggerModuleNames: true,
-          );
-        },
-        skip:
-            // https://github.com/dart-lang/sdk/issues/49277
-            indexBaseMode == IndexBaseMode.base && Platform.isWindows,
-      );
-    }
-  });
-}
diff --git a/dwds/test/integration/frontend_server_ddc_library_bundle_evaluate_test.dart b/dwds/test/integration/frontend_server_ddc_library_bundle_evaluate_test.dart
deleted file mode 100644
index 4a27968..0000000
--- a/dwds/test/integration/frontend_server_ddc_library_bundle_evaluate_test.dart
+++ /dev/null
@@ -1,53 +0,0 @@
-// Copyright (c) 2024, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-@Tags(['daily'])
-@TestOn('vm')
-@Timeout(Duration(minutes: 5))
-library;
-
-import 'dart:io';
-
-import 'package:dwds/expression_compiler.dart';
-import 'package:test/test.dart';
-import 'package:test_common/test_sdk_configuration.dart';
-
-import 'evaluate_common.dart';
-import 'fixtures/context.dart';
-import 'fixtures/project.dart';
-
-void main() async {
-  // Enable verbose logging for debugging.
-  const debug = false;
-
-  final provider = TestSdkConfigurationProvider(
-    verbose: debug,
-    ddcModuleFormat: ModuleFormat.ddc,
-    canaryFeatures: true,
-  );
-  tearDownAll(provider.dispose);
-
-  for (final useDebuggerModuleNames in [false, true]) {
-    group('Debugger module names: $useDebuggerModuleNames |', () {
-      group('DDC module system and canary |', () {
-        for (final indexBaseMode in IndexBaseMode.values) {
-          group(
-            'with ${indexBaseMode.name} |',
-            () {
-              testAll(
-                provider: provider,
-                compilationMode: CompilationMode.frontendServer,
-                indexBaseMode: indexBaseMode,
-                useDebuggerModuleNames: useDebuggerModuleNames,
-              );
-            },
-            skip: indexBaseMode == IndexBaseMode.base && Platform.isWindows
-                ? 'Skipped on Windows when indexBaseMode is base. See issue: https://github.com/dart-lang/sdk/issues/49277'
-                : null,
-          );
-        }
-      });
-    });
-  }
-}
diff --git a/dwds/test/integration/frontend_server_parts_evaluate_test.dart b/dwds/test/integration/frontend_server_parts_evaluate_test.dart
deleted file mode 100644
index e64b799..0000000
--- a/dwds/test/integration/frontend_server_parts_evaluate_test.dart
+++ /dev/null
@@ -1,43 +0,0 @@
-// Copyright (c) 2025, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-@TestOn('vm')
-@Timeout(Duration(minutes: 2))
-library;
-
-import 'dart:io';
-
-import 'package:test/test.dart';
-import 'package:test_common/test_sdk_configuration.dart';
-
-import 'evaluate_parts_common.dart';
-import 'fixtures/context.dart';
-import 'fixtures/project.dart';
-
-void main() async {
-  // Enable verbose logging for debugging.
-  const debug = false;
-
-  final provider = TestSdkConfigurationProvider(verbose: debug);
-  tearDownAll(provider.dispose);
-
-  group('Context with parts |', () {
-    for (final indexBaseMode in IndexBaseMode.values) {
-      group(
-        'with ${indexBaseMode.name} |',
-        () {
-          testAll(
-            provider: provider,
-            compilationMode: CompilationMode.frontendServer,
-            indexBaseMode: indexBaseMode,
-            useDebuggerModuleNames: true,
-          );
-        },
-        skip:
-            // https://github.com/dart-lang/sdk/issues/49277
-            indexBaseMode == IndexBaseMode.base && Platform.isWindows,
-      );
-    }
-  });
-}
diff --git a/dwds/test/integration/hot_reload_breakpoints_test.dart b/dwds/test/integration/hot_reload_breakpoints_common.dart
similarity index 95%
rename from dwds/test/integration/hot_reload_breakpoints_test.dart
rename to dwds/test/integration/hot_reload_breakpoints_common.dart
index 608b47e..9a22a7e 100644
--- a/dwds/test/integration/hot_reload_breakpoints_test.dart
+++ b/dwds/test/integration/hot_reload_breakpoints_common.dart
@@ -2,14 +2,8 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
-@Tags(['daily'])
-@TestOn('vm')
-@Timeout(Duration(minutes: 5))
-library;
-
 import 'dart:async';
 
-import 'package:dwds/expression_compiler.dart';
 import 'package:test/test.dart';
 import 'package:test_common/logging.dart';
 import 'package:test_common/test_sdk_configuration.dart';
@@ -19,22 +13,16 @@
 import 'fixtures/project.dart';
 import 'fixtures/utilities.dart';
 
-void main() {
-  // Enable verbose logging for debugging.
-  const debug = false;
-  final provider = TestSdkConfigurationProvider(
-    verbose: debug,
-    canaryFeatures: true,
-    ddcModuleFormat: ModuleFormat.ddc,
-  );
+void runTests({
+  required TestSdkConfigurationProvider provider,
+  required CompilationMode compilationMode,
+}) {
   final project = TestProject.testHotReloadBreakpoints;
   final context = TestContext(project, provider);
   final mainFile = project.dartEntryFileName;
   final callLogMarker = 'callLog';
   final capturedStringMarker = 'capturedString';
 
-  tearDownAll(provider.dispose);
-
   Future<void> makeEditsAndRecompile(List<Edit> edits) async {
     await context.makeEdits(edits);
     await context.recompile(fullRestart: true);
@@ -45,13 +33,13 @@
     late Stream<Event> stream;
 
     setUp(() async {
-      setCurrentLogWriter(debug: debug);
+      setCurrentLogWriter(debug: provider.verbose);
       await context.setUp(
         testSettings: TestSettings(
           enableExpressionEvaluation: true,
-          compilationMode: CompilationMode.frontendServer,
-          moduleFormat: ModuleFormat.ddc,
-          canaryFeatures: true,
+          compilationMode: compilationMode,
+          moduleFormat: provider.ddcModuleFormat,
+          canaryFeatures: provider.canaryFeatures,
         ),
       );
       client = await context.connectFakeClient();
@@ -529,13 +517,13 @@
     late VmService client;
 
     setUp(() async {
-      setCurrentLogWriter(debug: debug);
+      setCurrentLogWriter(debug: provider.verbose);
       await context.setUp(
         testSettings: TestSettings(
           enableExpressionEvaluation: true,
-          compilationMode: CompilationMode.frontendServer,
-          moduleFormat: ModuleFormat.ddc,
-          canaryFeatures: true,
+          compilationMode: compilationMode,
+          moduleFormat: provider.ddcModuleFormat,
+          canaryFeatures: provider.canaryFeatures,
         ),
       );
       client = await context.connectFakeClient();
diff --git a/dwds/test/integration/hot_reload_breakpoints_ddc_library_bundle_test.dart b/dwds/test/integration/hot_reload_breakpoints_ddc_library_bundle_test.dart
new file mode 100644
index 0000000..93cd95c
--- /dev/null
+++ b/dwds/test/integration/hot_reload_breakpoints_ddc_library_bundle_test.dart
@@ -0,0 +1,34 @@
+// Copyright (c) 2026, the Dart project authors.  Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+@Tags(['daily'])
+@TestOn('vm')
+@Timeout(Duration(minutes: 5))
+library;
+
+import 'package:dwds/expression_compiler.dart';
+import 'package:test/test.dart';
+import 'package:test_common/test_sdk_configuration.dart';
+
+import 'fixtures/context.dart';
+import 'hot_reload_breakpoints_common.dart';
+
+void main() {
+  // Enable verbose logging for debugging.
+  const debug = false;
+  final provider = TestSdkConfigurationProvider(
+    verbose: debug,
+    canaryFeatures: true,
+    ddcModuleFormat: ModuleFormat.ddc,
+  );
+
+  tearDownAll(provider.dispose);
+
+  group('Frontend Server', () {
+    runTests(
+      provider: provider,
+      compilationMode: CompilationMode.frontendServer,
+    );
+  });
+}
diff --git a/dwds/test/integration/hot_reload_test.dart b/dwds/test/integration/hot_reload_common.dart
similarity index 86%
rename from dwds/test/integration/hot_reload_test.dart
rename to dwds/test/integration/hot_reload_common.dart
index 41080f7..65a1944 100644
--- a/dwds/test/integration/hot_reload_test.dart
+++ b/dwds/test/integration/hot_reload_common.dart
@@ -2,14 +2,8 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
-@Tags(['daily'])
-@TestOn('vm')
-@Timeout(Duration(minutes: 5))
-library;
-
 import 'dart:async';
 
-import 'package:dwds/expression_compiler.dart';
 import 'package:test/test.dart';
 import 'package:test_common/logging.dart';
 import 'package:test_common/test_sdk_configuration.dart';
@@ -22,19 +16,13 @@
 const originalString = 'Hello World!';
 const newString = 'Bonjour le monde!';
 
-void main() {
-  // Enable verbose logging for debugging.
-  const debug = false;
-  final provider = TestSdkConfigurationProvider(
-    verbose: debug,
-    canaryFeatures: true,
-    ddcModuleFormat: ModuleFormat.ddc,
-  );
+void runTests({
+  required TestSdkConfigurationProvider provider,
+  required CompilationMode compilationMode,
+}) {
   final project = TestProject.testHotReload;
   final context = TestContext(project, provider);
 
-  tearDownAll(provider.dispose);
-
   Future<void> recompile() async {
     await context.recompile(fullRestart: false);
   }
@@ -79,13 +67,13 @@
     late VmService fakeClient;
 
     setUp(() async {
-      setCurrentLogWriter(debug: debug);
+      setCurrentLogWriter(debug: provider.verbose);
       await context.setUp(
         testSettings: TestSettings(
           enableExpressionEvaluation: true,
-          compilationMode: CompilationMode.frontendServer,
-          moduleFormat: ModuleFormat.ddc,
-          canaryFeatures: true,
+          compilationMode: compilationMode,
+          moduleFormat: provider.ddcModuleFormat,
+          canaryFeatures: provider.canaryFeatures,
         ),
       );
       fakeClient = await context.connectFakeClient();
diff --git a/dwds/test/integration/hot_reload_ddc_library_bundle_test.dart b/dwds/test/integration/hot_reload_ddc_library_bundle_test.dart
new file mode 100644
index 0000000..a01690e
--- /dev/null
+++ b/dwds/test/integration/hot_reload_ddc_library_bundle_test.dart
@@ -0,0 +1,34 @@
+// Copyright (c) 2025, the Dart project authors.  Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+@Tags(['daily'])
+@TestOn('vm')
+@Timeout(Duration(minutes: 5))
+library;
+
+import 'package:dwds/expression_compiler.dart';
+import 'package:test/test.dart';
+import 'package:test_common/test_sdk_configuration.dart';
+
+import 'fixtures/context.dart';
+import 'hot_reload_common.dart';
+
+void main() {
+  // Enable verbose logging for debugging.
+  const debug = false;
+  final provider = TestSdkConfigurationProvider(
+    verbose: debug,
+    canaryFeatures: true,
+    ddcModuleFormat: ModuleFormat.ddc,
+  );
+
+  tearDownAll(provider.dispose);
+
+  group('Frontend Server', () {
+    runTests(
+      provider: provider,
+      compilationMode: CompilationMode.frontendServer,
+    );
+  });
+}
diff --git a/dwds/test/integration/hot_restart_breakpoints_test.dart b/dwds/test/integration/hot_restart_breakpoints_common.dart
similarity index 99%
rename from dwds/test/integration/hot_restart_breakpoints_test.dart
rename to dwds/test/integration/hot_restart_breakpoints_common.dart
index c0a34fe..289af8e 100644
--- a/dwds/test/integration/hot_restart_breakpoints_test.dart
+++ b/dwds/test/integration/hot_restart_breakpoints_common.dart
@@ -2,11 +2,6 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
-@Tags(['daily'])
-@TestOn('vm')
-@Timeout(Duration(minutes: 5))
-library;
-
 import 'dart:async';
 
 import 'package:dwds/expression_compiler.dart';
diff --git a/dwds/test/integration/hot_restart_breakpoints_ddc_library_bundle_test.dart b/dwds/test/integration/hot_restart_breakpoints_ddc_library_bundle_test.dart
new file mode 100644
index 0000000..cd7c5ad
--- /dev/null
+++ b/dwds/test/integration/hot_restart_breakpoints_ddc_library_bundle_test.dart
@@ -0,0 +1,38 @@
+// Copyright (c) 2026, the Dart project authors.  Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+@Tags(['daily'])
+@TestOn('vm')
+@Timeout(Duration(minutes: 5))
+library;
+
+import 'package:dwds/expression_compiler.dart';
+import 'package:test/test.dart';
+import 'package:test_common/test_sdk_configuration.dart';
+
+import 'fixtures/context.dart';
+import 'hot_restart_breakpoints_common.dart';
+
+void main() {
+  // Enable verbose logging for debugging.
+  const debug = false;
+  final provider = TestSdkConfigurationProvider(
+    verbose: debug,
+    canaryFeatures: true,
+    ddcModuleFormat: ModuleFormat.ddc,
+  );
+
+  tearDownAll(provider.dispose);
+
+  group('Frontend Server', () {
+    runTests(
+      provider: provider,
+      compilationMode: CompilationMode.frontendServer,
+    );
+  });
+
+  group('Build Daemon', () {
+    runTests(provider: provider, compilationMode: CompilationMode.buildDaemon);
+  });
+}
diff --git a/dwds/test/integration/instances/common/instance_inspection_common.dart b/dwds/test/integration/instances/common/instance_inspection_common.dart
index c3ac0f1..64821ac 100644
--- a/dwds/test/integration/instances/common/instance_inspection_common.dart
+++ b/dwds/test/integration/instances/common/instance_inspection_common.dart
@@ -82,9 +82,13 @@
 
     setUp(() => setCurrentLogWriter(debug: provider.verbose));
     tearDown(() async {
+      // We must resume execution in case a test left the isolate paused, but
+      // error 106 is expected if the isolate is already running.
       try {
         await service.resume(isolateId);
-      } catch (_) {}
+      } on RPCError catch (e) {
+        if (e.code != 106) rethrow;
+      }
     });
 
     group('Library |', () {
diff --git a/dwds/test/integration/frontend_server_evaluate_test.dart b/dwds/test/integration/parts_evaluate_amd_test.dart
similarity index 61%
rename from dwds/test/integration/frontend_server_evaluate_test.dart
rename to dwds/test/integration/parts_evaluate_amd_test.dart
index 71495fe..a8e0af4 100644
--- a/dwds/test/integration/frontend_server_evaluate_test.dart
+++ b/dwds/test/integration/parts_evaluate_amd_test.dart
@@ -9,10 +9,11 @@
 
 import 'dart:io';
 
+import 'package:dwds/expression_compiler.dart';
 import 'package:test/test.dart';
 import 'package:test_common/test_sdk_configuration.dart';
 
-import 'evaluate_common.dart';
+import 'evaluate_parts_common.dart';
 import 'fixtures/context.dart';
 import 'fixtures/project.dart';
 
@@ -20,11 +21,18 @@
   // Enable verbose logging for debugging.
   const debug = false;
 
-  final provider = TestSdkConfigurationProvider(verbose: debug);
+  final provider = TestSdkConfigurationProvider(
+    verbose: debug,
+    ddcModuleFormat: ModuleFormat.amd,
+  );
   tearDownAll(provider.dispose);
 
-  for (final useDebuggerModuleNames in [false, true]) {
-    group('Debugger module names: $useDebuggerModuleNames |', () {
+  group('Build Daemon |', () {
+    testAll(provider: provider, compilationMode: CompilationMode.buildDaemon);
+  });
+
+  group('Frontend Server |', () {
+    group('Context with parts |', () {
       for (final indexBaseMode in IndexBaseMode.values) {
         group(
           'with ${indexBaseMode.name} |',
@@ -33,13 +41,14 @@
               provider: provider,
               compilationMode: CompilationMode.frontendServer,
               indexBaseMode: indexBaseMode,
-              useDebuggerModuleNames: useDebuggerModuleNames,
+              useDebuggerModuleNames: true,
             );
           },
-          // https://github.com/dart-lang/sdk/issues/49277
-          skip: indexBaseMode == IndexBaseMode.base && Platform.isWindows,
+          skip:
+              // https://github.com/dart-lang/sdk/issues/49277
+              indexBaseMode == IndexBaseMode.base && Platform.isWindows,
         );
       }
     });
-  }
+  });
 }
diff --git a/dwds/test/integration/parts_evaluate_ddc_library_bundle_test.dart b/dwds/test/integration/parts_evaluate_ddc_library_bundle_test.dart
new file mode 100644
index 0000000..4a8ea14
--- /dev/null
+++ b/dwds/test/integration/parts_evaluate_ddc_library_bundle_test.dart
@@ -0,0 +1,55 @@
+// Copyright (c) 2026, the Dart project authors.  Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+@Tags(['daily'])
+@TestOn('vm')
+@Timeout(Duration(minutes: 5))
+library;
+
+import 'dart:io';
+
+import 'package:dwds/expression_compiler.dart';
+import 'package:test/test.dart';
+import 'package:test_common/test_sdk_configuration.dart';
+
+import 'evaluate_parts_common.dart';
+import 'fixtures/context.dart';
+import 'fixtures/project.dart';
+
+void main() async {
+  // Enable verbose logging for debugging.
+  const debug = false;
+
+  final provider = TestSdkConfigurationProvider(
+    verbose: debug,
+    ddcModuleFormat: ModuleFormat.ddc,
+    canaryFeatures: true,
+  );
+  tearDownAll(provider.dispose);
+
+  group('Build Daemon |', () {
+    testAll(provider: provider, compilationMode: CompilationMode.buildDaemon);
+  });
+
+  group('Frontend Server |', () {
+    group('Context with parts |', () {
+      for (final indexBaseMode in IndexBaseMode.values) {
+        group(
+          'with ${indexBaseMode.name} |',
+          () {
+            testAll(
+              provider: provider,
+              compilationMode: CompilationMode.frontendServer,
+              indexBaseMode: indexBaseMode,
+              useDebuggerModuleNames: true,
+            );
+          },
+          skip:
+              // https://github.com/dart-lang/sdk/issues/49277
+              indexBaseMode == IndexBaseMode.base && Platform.isWindows,
+        );
+      }
+    });
+  });
+}
diff --git a/dwds/test/integration/run_request_test.dart b/dwds/test/integration/run_request_test.dart
index d5e00cb..badb377 100644
--- a/dwds/test/integration/run_request_test.dart
+++ b/dwds/test/integration/run_request_test.dart
@@ -29,9 +29,12 @@
   group('while debugger is attached', () {
     late VmServiceInterface service;
     setUp(() async {
-      setCurrentLogWriter(debug: debug);
+      setCurrentLogWriter(debug: provider.verbose);
       await context.setUp(
-        testSettings: TestSettings(autoRun: false, verboseCompiler: debug),
+        testSettings: TestSettings(
+          autoRun: false,
+          verboseCompiler: provider.verbose,
+        ),
       );
       service = context.service;
     });
@@ -71,7 +74,7 @@
 
   group('while debugger is not attached', () {
     setUp(() async {
-      setCurrentLogWriter(debug: debug);
+      setCurrentLogWriter(debug: provider.verbose);
       await context.setUp(
         testSettings: TestSettings(autoRun: false, waitToDebug: true),
       );