diff --git a/pkg/dartdev/lib/src/commands/fix.dart b/pkg/dartdev/lib/src/commands/fix.dart
index 945b709..7cd14e0 100644
--- a/pkg/dartdev/lib/src/commands/fix.dart
+++ b/pkg/dartdev/lib/src/commands/fix.dart
@@ -12,7 +12,6 @@
 import '../core.dart';
 import '../events.dart';
 import '../sdk.dart';
-import '../utils.dart';
 import 'analyze_impl.dart';
 
 class FixCommand extends DartdevCommand<int> {
@@ -22,6 +21,13 @@
   FixCommand() : super(cmdName, 'Fix Dart source code.', hidden: true);
 
   @override
+  UsageEvent createUsageEvent(int exitCode) => FixUsageEvent(
+        usagePath,
+        exitCode: exitCode,
+        args: argResults.arguments,
+      );
+
+  @override
   FutureOr<int> runImpl() async {
     log.stdout('\n*** The `fix` command is provisional and subject to change '
         'or removal in future releases. ***\n');
@@ -69,27 +75,28 @@
     if (edits.isEmpty) {
       log.stdout('Nothing to fix!');
     } else {
-      // todo (pq): consider a summary if more than `n` fixes are applied
-      //  (look at `dartfmt`)
-      log.stdout('Applying fixes to:');
-      for (var edit in edits) {
-        var file = File(edit.file);
-        log.stdout('  ${relativePath(file.path, dir)}');
-        var code = file.existsSync() ? file.readAsStringSync() : '';
-        code = SourceEdit.applySequence(code, edit.edits);
-        file.writeAsStringSync(code);
+      progress = log.progress('Applying fixes');
+      var fileCount = await _applyFixes(edits);
+      progress.finish(showTiming: true);
+      if (fileCount > 0) {
+        log.stdout('Fixed $fileCount files.');
       }
-      log.stdout('Done.');
     }
     return 0;
   }
 
-  @override
-  UsageEvent createUsageEvent(int exitCode) => FixUsageEvent(
-        usagePath,
-        exitCode: exitCode,
-        args: argResults.arguments,
-      );
+  Future<int> _applyFixes(List<SourceFileEdit> edits) async {
+    var files = <String>{};
+    for (var edit in edits) {
+      var fileName = edit.file;
+      files.add(fileName);
+      var file = File(fileName);
+      var code = await file.exists() ? await file.readAsString() : '';
+      code = SourceEdit.applySequence(code, edit.edits);
+      await file.writeAsString(code);
+    }
+    return files.length;
+  }
 }
 
 /// The [UsageEvent] for the fix command.
diff --git a/runtime/tests/vm/vm.status b/runtime/tests/vm/vm.status
index 7cab004..a80880d 100644
--- a/runtime/tests/vm/vm.status
+++ b/runtime/tests/vm/vm.status
@@ -115,6 +115,7 @@
 dart/minimal_kernel_test: SkipSlow # gen_kernel is too slow in debug mode
 dart/null_safety_autodetection_in_kernel_compiler_test: SkipSlow # gen_kernel is too slow in debug mode
 dart/spawn_shutdown_test: Pass, Slow # VM Shutdown test, It can take some time for all the isolates to shutdown in a Debug build.
+dart/type_casts_with_null_safety_autodetection_test: Pass, Slow # Very slow in debug mode, uses --optimization-counter-threshold=10
 dart_2/appjit_cha_deopt_test: Pass, Slow # Quite slow in debug mode, uses --optimization-counter-threshold=100
 dart_2/b162922506_test: SkipSlow # Generates very large input file
 dart_2/minimal_kernel_bytecode_test: SkipSlow # gen_kernel is too slow in debug mode
diff --git a/tests/lib/isolate/detect_nullsafety_helper.dart b/tests/lib/isolate/detect_nullsafety_helper.dart
index c8c263c..7f66ab8 100644
--- a/tests/lib/isolate/detect_nullsafety_helper.dart
+++ b/tests/lib/isolate/detect_nullsafety_helper.dart
@@ -28,6 +28,8 @@
   args.add("--enable-experiment=non-nullable");
   args.add(sourcePath);
   var result = Process.runSync(exec, args);
+  print('snapshot $type stdout: ${result.stdout}');
+  print('snapshot $type stderr: ${result.stderr}');
 }
 
 void generateKernel(String sourcePath, String outPath) {
@@ -44,6 +46,8 @@
   args.add("--enable-experiment=non-nullable");
   args.add(filePath);
   var result = Process.runSync(exec, args);
+  print('test stdout: ${result.stdout}');
+  print('test stderr: ${result.stderr}');
   expect(result.stdout.contains('$expected'), true);
 }
 
diff --git a/tests/lib/isolate/nnbd_spawn_autodetect_helper.dart b/tests/lib/isolate/nnbd_spawn_autodetect_helper.dart
index e689636..d0eaeac 100644
--- a/tests/lib/isolate/nnbd_spawn_autodetect_helper.dart
+++ b/tests/lib/isolate/nnbd_spawn_autodetect_helper.dart
@@ -54,6 +54,8 @@
   args.add("--enable-experiment=non-nullable");
   args.add(sourcePath);
   var result = Process.runSync(exec, args);
+  print('snapshot $type stdout: ${result.stdout}');
+  print('snapshot $type stderr: ${result.stderr}');
 }
 
 void generateKernel(String sourcePath, String outPath) {
@@ -70,5 +72,7 @@
   args.add("--enable-experiment=non-nullable");
   args.add(filePath);
   var result = Process.runSync(exec, args);
+  print('test stdout: ${result.stdout}');
+  print('test stderr: ${result.stderr}');
   expect(result.stdout.contains('$expected'), true);
 }
diff --git a/tools/VERSION b/tools/VERSION
index ac97587..39715f5 100644
--- a/tools/VERSION
+++ b/tools/VERSION
@@ -27,5 +27,5 @@
 MAJOR 2
 MINOR 11
 PATCH 0
-PRERELEASE 193
+PRERELEASE 194
 PRERELEASE_PATCH 0
\ No newline at end of file
