Bump to language version 3.10 (#2624)

Closes #2623
diff --git a/.github/workflows/dart.yml b/.github/workflows/dart.yml
index 9e18685..b6b15fd 100644
--- a/.github/workflows/dart.yml
+++ b/.github/workflows/dart.yml
@@ -40,23 +40,23 @@
       - name: mono_repo self validate
         run: dart pub global run mono_repo generate --validate
   job_002:
-    name: "analyze_and_format; linux; Dart 3.7.0; PKGS: integration_tests/regression, integration_tests/wasm; `dart format --output=none --set-exit-if-changed .`, `dart analyze --fatal-infos`"
+    name: "analyze_and_format; linux; Dart 3.10.0; PKGS: integration_tests/regression, integration_tests/wasm; `dart format --output=none --set-exit-if-changed .`, `dart analyze --fatal-infos`"
     runs-on: ubuntu-latest
     steps:
       - name: Cache Pub hosted dependencies
         uses: actions/cache@668228422ae6a00e4ad889ee87cd7109ec5666a7
         with:
           path: "~/.pub-cache/hosted"
-          key: "os:ubuntu-latest;pub-cache-hosted;sdk:3.7.0;packages:integration_tests/regression-integration_tests/wasm;commands:format-analyze_0"
+          key: "os:ubuntu-latest;pub-cache-hosted;sdk:3.10.0;packages:integration_tests/regression-integration_tests/wasm;commands:format-analyze_0"
           restore-keys: |
-            os:ubuntu-latest;pub-cache-hosted;sdk:3.7.0;packages:integration_tests/regression-integration_tests/wasm
-            os:ubuntu-latest;pub-cache-hosted;sdk:3.7.0
+            os:ubuntu-latest;pub-cache-hosted;sdk:3.10.0;packages:integration_tests/regression-integration_tests/wasm
+            os:ubuntu-latest;pub-cache-hosted;sdk:3.10.0
             os:ubuntu-latest;pub-cache-hosted
             os:ubuntu-latest
       - name: Setup Dart SDK
         uses: dart-lang/setup-dart@65eb853c7ba17dde3be364c3d2858773e7144260
         with:
-          sdk: "3.7.0"
+          sdk: "3.10.0"
       - id: checkout
         name: Checkout repository
         uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd
@@ -87,23 +87,23 @@
         if: "always() && steps.integration_tests_wasm_pub_upgrade.conclusion == 'success'"
         working-directory: integration_tests/wasm
   job_003:
-    name: "analyze_and_format; linux; Dart 3.7.0; PKGS: pkgs/checks, pkgs/matcher, pkgs/test_core; `dart analyze`"
+    name: "analyze_and_format; linux; Dart 3.10.0; PKGS: pkgs/checks, pkgs/matcher, pkgs/test_core; `dart analyze`"
     runs-on: ubuntu-latest
     steps:
       - name: Cache Pub hosted dependencies
         uses: actions/cache@668228422ae6a00e4ad889ee87cd7109ec5666a7
         with:
           path: "~/.pub-cache/hosted"
-          key: "os:ubuntu-latest;pub-cache-hosted;sdk:3.7.0;packages:pkgs/checks-pkgs/matcher-pkgs/test_core;commands:analyze_1"
+          key: "os:ubuntu-latest;pub-cache-hosted;sdk:3.10.0;packages:pkgs/checks-pkgs/matcher-pkgs/test_core;commands:analyze_1"
           restore-keys: |
-            os:ubuntu-latest;pub-cache-hosted;sdk:3.7.0;packages:pkgs/checks-pkgs/matcher-pkgs/test_core
-            os:ubuntu-latest;pub-cache-hosted;sdk:3.7.0
+            os:ubuntu-latest;pub-cache-hosted;sdk:3.10.0;packages:pkgs/checks-pkgs/matcher-pkgs/test_core
+            os:ubuntu-latest;pub-cache-hosted;sdk:3.10.0
             os:ubuntu-latest;pub-cache-hosted
             os:ubuntu-latest
       - name: Setup Dart SDK
         uses: dart-lang/setup-dart@65eb853c7ba17dde3be364c3d2858773e7144260
         with:
-          sdk: "3.7.0"
+          sdk: "3.10.0"
       - id: checkout
         name: Checkout repository
         uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd
@@ -260,13 +260,13 @@
         if: "always() && steps.pkgs_test_core_pub_upgrade.conclusion == 'success'"
         working-directory: pkgs/test_core
   job_005:
-    name: "analyze_and_format; windows; Dart 3.7.0; PKG: integration_tests/wasm; `dart format --output=none --set-exit-if-changed .`, `dart analyze --fatal-infos`"
+    name: "analyze_and_format; windows; Dart 3.10.0; PKG: integration_tests/wasm; `dart format --output=none --set-exit-if-changed .`, `dart analyze --fatal-infos`"
     runs-on: windows-latest
     steps:
       - name: Setup Dart SDK
         uses: dart-lang/setup-dart@65eb853c7ba17dde3be364c3d2858773e7144260
         with:
-          sdk: "3.7.0"
+          sdk: "3.10.0"
       - id: checkout
         name: Checkout repository
         uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd
@@ -308,23 +308,23 @@
         if: "always() && steps.integration_tests_wasm_pub_upgrade.conclusion == 'success'"
         working-directory: integration_tests/wasm
   job_007:
-    name: "unit_test; linux; Dart 3.7.0; PKG: integration_tests/regression; `dart test`"
+    name: "unit_test; linux; Dart 3.10.0; PKG: integration_tests/regression; `dart test`"
     runs-on: ubuntu-latest
     steps:
       - name: Cache Pub hosted dependencies
         uses: actions/cache@668228422ae6a00e4ad889ee87cd7109ec5666a7
         with:
           path: "~/.pub-cache/hosted"
-          key: "os:ubuntu-latest;pub-cache-hosted;sdk:3.7.0;packages:integration_tests/regression;commands:command_00"
+          key: "os:ubuntu-latest;pub-cache-hosted;sdk:3.10.0;packages:integration_tests/regression;commands:command_00"
           restore-keys: |
-            os:ubuntu-latest;pub-cache-hosted;sdk:3.7.0;packages:integration_tests/regression
-            os:ubuntu-latest;pub-cache-hosted;sdk:3.7.0
+            os:ubuntu-latest;pub-cache-hosted;sdk:3.10.0;packages:integration_tests/regression
+            os:ubuntu-latest;pub-cache-hosted;sdk:3.10.0
             os:ubuntu-latest;pub-cache-hosted
             os:ubuntu-latest
       - name: Setup Dart SDK
         uses: dart-lang/setup-dart@65eb853c7ba17dde3be364c3d2858773e7144260
         with:
-          sdk: "3.7.0"
+          sdk: "3.10.0"
       - id: checkout
         name: Checkout repository
         uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd
@@ -345,23 +345,23 @@
       - job_005
       - job_006
   job_008:
-    name: "unit_test; linux; Dart 3.7.0; PKG: pkgs/checks; `dart test`"
+    name: "unit_test; linux; Dart 3.10.0; PKG: pkgs/checks; `dart test`"
     runs-on: ubuntu-latest
     steps:
       - name: Cache Pub hosted dependencies
         uses: actions/cache@668228422ae6a00e4ad889ee87cd7109ec5666a7
         with:
           path: "~/.pub-cache/hosted"
-          key: "os:ubuntu-latest;pub-cache-hosted;sdk:3.7.0;packages:pkgs/checks;commands:command_00"
+          key: "os:ubuntu-latest;pub-cache-hosted;sdk:3.10.0;packages:pkgs/checks;commands:command_00"
           restore-keys: |
-            os:ubuntu-latest;pub-cache-hosted;sdk:3.7.0;packages:pkgs/checks
-            os:ubuntu-latest;pub-cache-hosted;sdk:3.7.0
+            os:ubuntu-latest;pub-cache-hosted;sdk:3.10.0;packages:pkgs/checks
+            os:ubuntu-latest;pub-cache-hosted;sdk:3.10.0
             os:ubuntu-latest;pub-cache-hosted
             os:ubuntu-latest
       - name: Setup Dart SDK
         uses: dart-lang/setup-dart@65eb853c7ba17dde3be364c3d2858773e7144260
         with:
-          sdk: "3.7.0"
+          sdk: "3.10.0"
       - id: checkout
         name: Checkout repository
         uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd
@@ -382,23 +382,23 @@
       - job_005
       - job_006
   job_009:
-    name: "unit_test; linux; Dart 3.7.0; PKG: pkgs/matcher; `dart test`"
+    name: "unit_test; linux; Dart 3.10.0; PKG: pkgs/matcher; `dart test`"
     runs-on: ubuntu-latest
     steps:
       - name: Cache Pub hosted dependencies
         uses: actions/cache@668228422ae6a00e4ad889ee87cd7109ec5666a7
         with:
           path: "~/.pub-cache/hosted"
-          key: "os:ubuntu-latest;pub-cache-hosted;sdk:3.7.0;packages:pkgs/matcher;commands:command_00"
+          key: "os:ubuntu-latest;pub-cache-hosted;sdk:3.10.0;packages:pkgs/matcher;commands:command_00"
           restore-keys: |
-            os:ubuntu-latest;pub-cache-hosted;sdk:3.7.0;packages:pkgs/matcher
-            os:ubuntu-latest;pub-cache-hosted;sdk:3.7.0
+            os:ubuntu-latest;pub-cache-hosted;sdk:3.10.0;packages:pkgs/matcher
+            os:ubuntu-latest;pub-cache-hosted;sdk:3.10.0
             os:ubuntu-latest;pub-cache-hosted
             os:ubuntu-latest
       - name: Setup Dart SDK
         uses: dart-lang/setup-dart@65eb853c7ba17dde3be364c3d2858773e7144260
         with:
-          sdk: "3.7.0"
+          sdk: "3.10.0"
       - id: checkout
         name: Checkout repository
         uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd
@@ -419,23 +419,23 @@
       - job_005
       - job_006
   job_010:
-    name: "unit_test; linux; Dart 3.7.0; PKG: pkgs/test_core; `dart test`"
+    name: "unit_test; linux; Dart 3.10.0; PKG: pkgs/test_core; `dart test`"
     runs-on: ubuntu-latest
     steps:
       - name: Cache Pub hosted dependencies
         uses: actions/cache@668228422ae6a00e4ad889ee87cd7109ec5666a7
         with:
           path: "~/.pub-cache/hosted"
-          key: "os:ubuntu-latest;pub-cache-hosted;sdk:3.7.0;packages:pkgs/test_core;commands:command_00"
+          key: "os:ubuntu-latest;pub-cache-hosted;sdk:3.10.0;packages:pkgs/test_core;commands:command_00"
           restore-keys: |
-            os:ubuntu-latest;pub-cache-hosted;sdk:3.7.0;packages:pkgs/test_core
-            os:ubuntu-latest;pub-cache-hosted;sdk:3.7.0
+            os:ubuntu-latest;pub-cache-hosted;sdk:3.10.0;packages:pkgs/test_core
+            os:ubuntu-latest;pub-cache-hosted;sdk:3.10.0
             os:ubuntu-latest;pub-cache-hosted
             os:ubuntu-latest
       - name: Setup Dart SDK
         uses: dart-lang/setup-dart@65eb853c7ba17dde3be364c3d2858773e7144260
         with:
-          sdk: "3.7.0"
+          sdk: "3.10.0"
       - id: checkout
         name: Checkout repository
         uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd
@@ -456,23 +456,23 @@
       - job_005
       - job_006
   job_011:
-    name: "unit_test; linux; Dart 3.7.0; PKG: integration_tests/spawn_hybrid; `dart test -p chrome,vm,node`"
+    name: "unit_test; linux; Dart 3.10.0; PKG: integration_tests/spawn_hybrid; `dart test -p chrome,vm,node`"
     runs-on: ubuntu-latest
     steps:
       - name: Cache Pub hosted dependencies
         uses: actions/cache@668228422ae6a00e4ad889ee87cd7109ec5666a7
         with:
           path: "~/.pub-cache/hosted"
-          key: "os:ubuntu-latest;pub-cache-hosted;sdk:3.7.0;packages:integration_tests/spawn_hybrid;commands:test_1"
+          key: "os:ubuntu-latest;pub-cache-hosted;sdk:3.10.0;packages:integration_tests/spawn_hybrid;commands:test_1"
           restore-keys: |
-            os:ubuntu-latest;pub-cache-hosted;sdk:3.7.0;packages:integration_tests/spawn_hybrid
-            os:ubuntu-latest;pub-cache-hosted;sdk:3.7.0
+            os:ubuntu-latest;pub-cache-hosted;sdk:3.10.0;packages:integration_tests/spawn_hybrid
+            os:ubuntu-latest;pub-cache-hosted;sdk:3.10.0
             os:ubuntu-latest;pub-cache-hosted
             os:ubuntu-latest
       - name: Setup Dart SDK
         uses: dart-lang/setup-dart@65eb853c7ba17dde3be364c3d2858773e7144260
         with:
-          sdk: "3.7.0"
+          sdk: "3.10.0"
       - id: checkout
         name: Checkout repository
         uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd
@@ -493,23 +493,23 @@
       - job_005
       - job_006
   job_012:
-    name: "unit_test; linux; Dart 3.7.0; PKG: integration_tests/wasm; `dart test --timeout=60s`"
+    name: "unit_test; linux; Dart 3.10.0; PKG: integration_tests/wasm; `dart test --timeout=60s`"
     runs-on: ubuntu-latest
     steps:
       - name: Cache Pub hosted dependencies
         uses: actions/cache@668228422ae6a00e4ad889ee87cd7109ec5666a7
         with:
           path: "~/.pub-cache/hosted"
-          key: "os:ubuntu-latest;pub-cache-hosted;sdk:3.7.0;packages:integration_tests/wasm;commands:test_2"
+          key: "os:ubuntu-latest;pub-cache-hosted;sdk:3.10.0;packages:integration_tests/wasm;commands:test_2"
           restore-keys: |
-            os:ubuntu-latest;pub-cache-hosted;sdk:3.7.0;packages:integration_tests/wasm
-            os:ubuntu-latest;pub-cache-hosted;sdk:3.7.0
+            os:ubuntu-latest;pub-cache-hosted;sdk:3.10.0;packages:integration_tests/wasm
+            os:ubuntu-latest;pub-cache-hosted;sdk:3.10.0
             os:ubuntu-latest;pub-cache-hosted
             os:ubuntu-latest
       - name: Setup Dart SDK
         uses: dart-lang/setup-dart@65eb853c7ba17dde3be364c3d2858773e7144260
         with:
-          sdk: "3.7.0"
+          sdk: "3.10.0"
       - id: checkout
         name: Checkout repository
         uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd
@@ -530,23 +530,23 @@
       - job_005
       - job_006
   job_013:
-    name: "unit_test; linux; Dart 3.7.0; PKG: pkgs/test; `xvfb-run -s \"-screen 0 1024x768x24\" dart test --preset travis --total-shards 5 --shard-index 0`"
+    name: "unit_test; linux; Dart 3.10.0; PKG: pkgs/test; `xvfb-run -s \"-screen 0 1024x768x24\" dart test --preset travis --total-shards 5 --shard-index 0`"
     runs-on: ubuntu-latest
     steps:
       - name: Cache Pub hosted dependencies
         uses: actions/cache@668228422ae6a00e4ad889ee87cd7109ec5666a7
         with:
           path: "~/.pub-cache/hosted"
-          key: "os:ubuntu-latest;pub-cache-hosted;sdk:3.7.0;packages:pkgs/test;commands:command_01"
+          key: "os:ubuntu-latest;pub-cache-hosted;sdk:3.10.0;packages:pkgs/test;commands:command_01"
           restore-keys: |
-            os:ubuntu-latest;pub-cache-hosted;sdk:3.7.0;packages:pkgs/test
-            os:ubuntu-latest;pub-cache-hosted;sdk:3.7.0
+            os:ubuntu-latest;pub-cache-hosted;sdk:3.10.0;packages:pkgs/test
+            os:ubuntu-latest;pub-cache-hosted;sdk:3.10.0
             os:ubuntu-latest;pub-cache-hosted
             os:ubuntu-latest
       - name: Setup Dart SDK
         uses: dart-lang/setup-dart@65eb853c7ba17dde3be364c3d2858773e7144260
         with:
-          sdk: "3.7.0"
+          sdk: "3.10.0"
       - id: checkout
         name: Checkout repository
         uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd
@@ -567,23 +567,23 @@
       - job_005
       - job_006
   job_014:
-    name: "unit_test; linux; Dart 3.7.0; PKG: pkgs/test; `xvfb-run -s \"-screen 0 1024x768x24\" dart test --preset travis --total-shards 5 --shard-index 1`"
+    name: "unit_test; linux; Dart 3.10.0; PKG: pkgs/test; `xvfb-run -s \"-screen 0 1024x768x24\" dart test --preset travis --total-shards 5 --shard-index 1`"
     runs-on: ubuntu-latest
     steps:
       - name: Cache Pub hosted dependencies
         uses: actions/cache@668228422ae6a00e4ad889ee87cd7109ec5666a7
         with:
           path: "~/.pub-cache/hosted"
-          key: "os:ubuntu-latest;pub-cache-hosted;sdk:3.7.0;packages:pkgs/test;commands:command_02"
+          key: "os:ubuntu-latest;pub-cache-hosted;sdk:3.10.0;packages:pkgs/test;commands:command_02"
           restore-keys: |
-            os:ubuntu-latest;pub-cache-hosted;sdk:3.7.0;packages:pkgs/test
-            os:ubuntu-latest;pub-cache-hosted;sdk:3.7.0
+            os:ubuntu-latest;pub-cache-hosted;sdk:3.10.0;packages:pkgs/test
+            os:ubuntu-latest;pub-cache-hosted;sdk:3.10.0
             os:ubuntu-latest;pub-cache-hosted
             os:ubuntu-latest
       - name: Setup Dart SDK
         uses: dart-lang/setup-dart@65eb853c7ba17dde3be364c3d2858773e7144260
         with:
-          sdk: "3.7.0"
+          sdk: "3.10.0"
       - id: checkout
         name: Checkout repository
         uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd
@@ -604,23 +604,23 @@
       - job_005
       - job_006
   job_015:
-    name: "unit_test; linux; Dart 3.7.0; PKG: pkgs/test; `xvfb-run -s \"-screen 0 1024x768x24\" dart test --preset travis --total-shards 5 --shard-index 2`"
+    name: "unit_test; linux; Dart 3.10.0; PKG: pkgs/test; `xvfb-run -s \"-screen 0 1024x768x24\" dart test --preset travis --total-shards 5 --shard-index 2`"
     runs-on: ubuntu-latest
     steps:
       - name: Cache Pub hosted dependencies
         uses: actions/cache@668228422ae6a00e4ad889ee87cd7109ec5666a7
         with:
           path: "~/.pub-cache/hosted"
-          key: "os:ubuntu-latest;pub-cache-hosted;sdk:3.7.0;packages:pkgs/test;commands:command_03"
+          key: "os:ubuntu-latest;pub-cache-hosted;sdk:3.10.0;packages:pkgs/test;commands:command_03"
           restore-keys: |
-            os:ubuntu-latest;pub-cache-hosted;sdk:3.7.0;packages:pkgs/test
-            os:ubuntu-latest;pub-cache-hosted;sdk:3.7.0
+            os:ubuntu-latest;pub-cache-hosted;sdk:3.10.0;packages:pkgs/test
+            os:ubuntu-latest;pub-cache-hosted;sdk:3.10.0
             os:ubuntu-latest;pub-cache-hosted
             os:ubuntu-latest
       - name: Setup Dart SDK
         uses: dart-lang/setup-dart@65eb853c7ba17dde3be364c3d2858773e7144260
         with:
-          sdk: "3.7.0"
+          sdk: "3.10.0"
       - id: checkout
         name: Checkout repository
         uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd
@@ -641,23 +641,23 @@
       - job_005
       - job_006
   job_016:
-    name: "unit_test; linux; Dart 3.7.0; PKG: pkgs/test; `xvfb-run -s \"-screen 0 1024x768x24\" dart test --preset travis --total-shards 5 --shard-index 3`"
+    name: "unit_test; linux; Dart 3.10.0; PKG: pkgs/test; `xvfb-run -s \"-screen 0 1024x768x24\" dart test --preset travis --total-shards 5 --shard-index 3`"
     runs-on: ubuntu-latest
     steps:
       - name: Cache Pub hosted dependencies
         uses: actions/cache@668228422ae6a00e4ad889ee87cd7109ec5666a7
         with:
           path: "~/.pub-cache/hosted"
-          key: "os:ubuntu-latest;pub-cache-hosted;sdk:3.7.0;packages:pkgs/test;commands:command_04"
+          key: "os:ubuntu-latest;pub-cache-hosted;sdk:3.10.0;packages:pkgs/test;commands:command_04"
           restore-keys: |
-            os:ubuntu-latest;pub-cache-hosted;sdk:3.7.0;packages:pkgs/test
-            os:ubuntu-latest;pub-cache-hosted;sdk:3.7.0
+            os:ubuntu-latest;pub-cache-hosted;sdk:3.10.0;packages:pkgs/test
+            os:ubuntu-latest;pub-cache-hosted;sdk:3.10.0
             os:ubuntu-latest;pub-cache-hosted
             os:ubuntu-latest
       - name: Setup Dart SDK
         uses: dart-lang/setup-dart@65eb853c7ba17dde3be364c3d2858773e7144260
         with:
-          sdk: "3.7.0"
+          sdk: "3.10.0"
       - id: checkout
         name: Checkout repository
         uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd
@@ -678,23 +678,23 @@
       - job_005
       - job_006
   job_017:
-    name: "unit_test; linux; Dart 3.7.0; PKG: pkgs/test; `xvfb-run -s \"-screen 0 1024x768x24\" dart test --preset travis --total-shards 5 --shard-index 4`"
+    name: "unit_test; linux; Dart 3.10.0; PKG: pkgs/test; `xvfb-run -s \"-screen 0 1024x768x24\" dart test --preset travis --total-shards 5 --shard-index 4`"
     runs-on: ubuntu-latest
     steps:
       - name: Cache Pub hosted dependencies
         uses: actions/cache@668228422ae6a00e4ad889ee87cd7109ec5666a7
         with:
           path: "~/.pub-cache/hosted"
-          key: "os:ubuntu-latest;pub-cache-hosted;sdk:3.7.0;packages:pkgs/test;commands:command_05"
+          key: "os:ubuntu-latest;pub-cache-hosted;sdk:3.10.0;packages:pkgs/test;commands:command_05"
           restore-keys: |
-            os:ubuntu-latest;pub-cache-hosted;sdk:3.7.0;packages:pkgs/test
-            os:ubuntu-latest;pub-cache-hosted;sdk:3.7.0
+            os:ubuntu-latest;pub-cache-hosted;sdk:3.10.0;packages:pkgs/test
+            os:ubuntu-latest;pub-cache-hosted;sdk:3.10.0
             os:ubuntu-latest;pub-cache-hosted
             os:ubuntu-latest
       - name: Setup Dart SDK
         uses: dart-lang/setup-dart@65eb853c7ba17dde3be364c3d2858773e7144260
         with:
-          sdk: "3.7.0"
+          sdk: "3.10.0"
       - id: checkout
         name: Checkout repository
         uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd
@@ -715,23 +715,23 @@
       - job_005
       - job_006
   job_018:
-    name: "unit_test; linux; Dart 3.7.0; PKG: pkgs/test_api; `dart test --preset travis -x browser -c kernel,exe`"
+    name: "unit_test; linux; Dart 3.10.0; PKG: pkgs/test_api; `dart test --preset travis -x browser -c kernel,exe`"
     runs-on: ubuntu-latest
     steps:
       - name: Cache Pub hosted dependencies
         uses: actions/cache@668228422ae6a00e4ad889ee87cd7109ec5666a7
         with:
           path: "~/.pub-cache/hosted"
-          key: "os:ubuntu-latest;pub-cache-hosted;sdk:3.7.0;packages:pkgs/test_api;commands:command_11"
+          key: "os:ubuntu-latest;pub-cache-hosted;sdk:3.10.0;packages:pkgs/test_api;commands:command_11"
           restore-keys: |
-            os:ubuntu-latest;pub-cache-hosted;sdk:3.7.0;packages:pkgs/test_api
-            os:ubuntu-latest;pub-cache-hosted;sdk:3.7.0
+            os:ubuntu-latest;pub-cache-hosted;sdk:3.10.0;packages:pkgs/test_api
+            os:ubuntu-latest;pub-cache-hosted;sdk:3.10.0
             os:ubuntu-latest;pub-cache-hosted
             os:ubuntu-latest
       - name: Setup Dart SDK
         uses: dart-lang/setup-dart@65eb853c7ba17dde3be364c3d2858773e7144260
         with:
-          sdk: "3.7.0"
+          sdk: "3.10.0"
       - id: checkout
         name: Checkout repository
         uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd
@@ -1196,23 +1196,23 @@
       - job_005
       - job_006
   job_031:
-    name: "unit_test; osx; Dart 3.7.0; PKG: pkgs/test; `dart test --preset travis --total-shards 5 --shard-index 0`"
+    name: "unit_test; osx; Dart 3.10.0; PKG: pkgs/test; `dart test --preset travis --total-shards 5 --shard-index 0`"
     runs-on: macos-latest
     steps:
       - name: Cache Pub hosted dependencies
         uses: actions/cache@668228422ae6a00e4ad889ee87cd7109ec5666a7
         with:
           path: "~/.pub-cache/hosted"
-          key: "os:macos-latest;pub-cache-hosted;sdk:3.7.0;packages:pkgs/test;commands:command_06"
+          key: "os:macos-latest;pub-cache-hosted;sdk:3.10.0;packages:pkgs/test;commands:command_06"
           restore-keys: |
-            os:macos-latest;pub-cache-hosted;sdk:3.7.0;packages:pkgs/test
-            os:macos-latest;pub-cache-hosted;sdk:3.7.0
+            os:macos-latest;pub-cache-hosted;sdk:3.10.0;packages:pkgs/test
+            os:macos-latest;pub-cache-hosted;sdk:3.10.0
             os:macos-latest;pub-cache-hosted
             os:macos-latest
       - name: Setup Dart SDK
         uses: dart-lang/setup-dart@65eb853c7ba17dde3be364c3d2858773e7144260
         with:
-          sdk: "3.7.0"
+          sdk: "3.10.0"
       - id: checkout
         name: Checkout repository
         uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd
@@ -1233,23 +1233,23 @@
       - job_005
       - job_006
   job_032:
-    name: "unit_test; osx; Dart 3.7.0; PKG: pkgs/test; `dart test --preset travis --total-shards 5 --shard-index 1`"
+    name: "unit_test; osx; Dart 3.10.0; PKG: pkgs/test; `dart test --preset travis --total-shards 5 --shard-index 1`"
     runs-on: macos-latest
     steps:
       - name: Cache Pub hosted dependencies
         uses: actions/cache@668228422ae6a00e4ad889ee87cd7109ec5666a7
         with:
           path: "~/.pub-cache/hosted"
-          key: "os:macos-latest;pub-cache-hosted;sdk:3.7.0;packages:pkgs/test;commands:command_07"
+          key: "os:macos-latest;pub-cache-hosted;sdk:3.10.0;packages:pkgs/test;commands:command_07"
           restore-keys: |
-            os:macos-latest;pub-cache-hosted;sdk:3.7.0;packages:pkgs/test
-            os:macos-latest;pub-cache-hosted;sdk:3.7.0
+            os:macos-latest;pub-cache-hosted;sdk:3.10.0;packages:pkgs/test
+            os:macos-latest;pub-cache-hosted;sdk:3.10.0
             os:macos-latest;pub-cache-hosted
             os:macos-latest
       - name: Setup Dart SDK
         uses: dart-lang/setup-dart@65eb853c7ba17dde3be364c3d2858773e7144260
         with:
-          sdk: "3.7.0"
+          sdk: "3.10.0"
       - id: checkout
         name: Checkout repository
         uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd
@@ -1270,23 +1270,23 @@
       - job_005
       - job_006
   job_033:
-    name: "unit_test; osx; Dart 3.7.0; PKG: pkgs/test; `dart test --preset travis --total-shards 5 --shard-index 2`"
+    name: "unit_test; osx; Dart 3.10.0; PKG: pkgs/test; `dart test --preset travis --total-shards 5 --shard-index 2`"
     runs-on: macos-latest
     steps:
       - name: Cache Pub hosted dependencies
         uses: actions/cache@668228422ae6a00e4ad889ee87cd7109ec5666a7
         with:
           path: "~/.pub-cache/hosted"
-          key: "os:macos-latest;pub-cache-hosted;sdk:3.7.0;packages:pkgs/test;commands:command_08"
+          key: "os:macos-latest;pub-cache-hosted;sdk:3.10.0;packages:pkgs/test;commands:command_08"
           restore-keys: |
-            os:macos-latest;pub-cache-hosted;sdk:3.7.0;packages:pkgs/test
-            os:macos-latest;pub-cache-hosted;sdk:3.7.0
+            os:macos-latest;pub-cache-hosted;sdk:3.10.0;packages:pkgs/test
+            os:macos-latest;pub-cache-hosted;sdk:3.10.0
             os:macos-latest;pub-cache-hosted
             os:macos-latest
       - name: Setup Dart SDK
         uses: dart-lang/setup-dart@65eb853c7ba17dde3be364c3d2858773e7144260
         with:
-          sdk: "3.7.0"
+          sdk: "3.10.0"
       - id: checkout
         name: Checkout repository
         uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd
@@ -1307,23 +1307,23 @@
       - job_005
       - job_006
   job_034:
-    name: "unit_test; osx; Dart 3.7.0; PKG: pkgs/test; `dart test --preset travis --total-shards 5 --shard-index 3`"
+    name: "unit_test; osx; Dart 3.10.0; PKG: pkgs/test; `dart test --preset travis --total-shards 5 --shard-index 3`"
     runs-on: macos-latest
     steps:
       - name: Cache Pub hosted dependencies
         uses: actions/cache@668228422ae6a00e4ad889ee87cd7109ec5666a7
         with:
           path: "~/.pub-cache/hosted"
-          key: "os:macos-latest;pub-cache-hosted;sdk:3.7.0;packages:pkgs/test;commands:command_09"
+          key: "os:macos-latest;pub-cache-hosted;sdk:3.10.0;packages:pkgs/test;commands:command_09"
           restore-keys: |
-            os:macos-latest;pub-cache-hosted;sdk:3.7.0;packages:pkgs/test
-            os:macos-latest;pub-cache-hosted;sdk:3.7.0
+            os:macos-latest;pub-cache-hosted;sdk:3.10.0;packages:pkgs/test
+            os:macos-latest;pub-cache-hosted;sdk:3.10.0
             os:macos-latest;pub-cache-hosted
             os:macos-latest
       - name: Setup Dart SDK
         uses: dart-lang/setup-dart@65eb853c7ba17dde3be364c3d2858773e7144260
         with:
-          sdk: "3.7.0"
+          sdk: "3.10.0"
       - id: checkout
         name: Checkout repository
         uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd
@@ -1344,23 +1344,23 @@
       - job_005
       - job_006
   job_035:
-    name: "unit_test; osx; Dart 3.7.0; PKG: pkgs/test; `dart test --preset travis --total-shards 5 --shard-index 4`"
+    name: "unit_test; osx; Dart 3.10.0; PKG: pkgs/test; `dart test --preset travis --total-shards 5 --shard-index 4`"
     runs-on: macos-latest
     steps:
       - name: Cache Pub hosted dependencies
         uses: actions/cache@668228422ae6a00e4ad889ee87cd7109ec5666a7
         with:
           path: "~/.pub-cache/hosted"
-          key: "os:macos-latest;pub-cache-hosted;sdk:3.7.0;packages:pkgs/test;commands:command_10"
+          key: "os:macos-latest;pub-cache-hosted;sdk:3.10.0;packages:pkgs/test;commands:command_10"
           restore-keys: |
-            os:macos-latest;pub-cache-hosted;sdk:3.7.0;packages:pkgs/test
-            os:macos-latest;pub-cache-hosted;sdk:3.7.0
+            os:macos-latest;pub-cache-hosted;sdk:3.10.0;packages:pkgs/test
+            os:macos-latest;pub-cache-hosted;sdk:3.10.0
             os:macos-latest;pub-cache-hosted
             os:macos-latest
       - name: Setup Dart SDK
         uses: dart-lang/setup-dart@65eb853c7ba17dde3be364c3d2858773e7144260
         with:
-          sdk: "3.7.0"
+          sdk: "3.10.0"
       - id: checkout
         name: Checkout repository
         uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd
@@ -1381,13 +1381,13 @@
       - job_005
       - job_006
   job_036:
-    name: "unit_test; windows; Dart 3.7.0; PKG: integration_tests/spawn_hybrid; `dart test -p chrome,vm,node`"
+    name: "unit_test; windows; Dart 3.10.0; PKG: integration_tests/spawn_hybrid; `dart test -p chrome,vm,node`"
     runs-on: windows-latest
     steps:
       - name: Setup Dart SDK
         uses: dart-lang/setup-dart@65eb853c7ba17dde3be364c3d2858773e7144260
         with:
-          sdk: "3.7.0"
+          sdk: "3.10.0"
       - id: checkout
         name: Checkout repository
         uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd
@@ -1408,13 +1408,13 @@
       - job_005
       - job_006
   job_037:
-    name: "unit_test; windows; Dart 3.7.0; PKG: integration_tests/wasm; `dart test --timeout=60s`"
+    name: "unit_test; windows; Dart 3.10.0; PKG: integration_tests/wasm; `dart test --timeout=60s`"
     runs-on: windows-latest
     steps:
       - name: Setup Dart SDK
         uses: dart-lang/setup-dart@65eb853c7ba17dde3be364c3d2858773e7144260
         with:
-          sdk: "3.7.0"
+          sdk: "3.10.0"
       - id: checkout
         name: Checkout repository
         uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd
@@ -1435,13 +1435,13 @@
       - job_005
       - job_006
   job_038:
-    name: "unit_test; windows; Dart 3.7.0; PKG: pkgs/test; `dart test --preset travis --total-shards 5 --shard-index 0`"
+    name: "unit_test; windows; Dart 3.10.0; PKG: pkgs/test; `dart test --preset travis --total-shards 5 --shard-index 0`"
     runs-on: windows-latest
     steps:
       - name: Setup Dart SDK
         uses: dart-lang/setup-dart@65eb853c7ba17dde3be364c3d2858773e7144260
         with:
-          sdk: "3.7.0"
+          sdk: "3.10.0"
       - id: checkout
         name: Checkout repository
         uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd
@@ -1462,13 +1462,13 @@
       - job_005
       - job_006
   job_039:
-    name: "unit_test; windows; Dart 3.7.0; PKG: pkgs/test; `dart test --preset travis --total-shards 5 --shard-index 1`"
+    name: "unit_test; windows; Dart 3.10.0; PKG: pkgs/test; `dart test --preset travis --total-shards 5 --shard-index 1`"
     runs-on: windows-latest
     steps:
       - name: Setup Dart SDK
         uses: dart-lang/setup-dart@65eb853c7ba17dde3be364c3d2858773e7144260
         with:
-          sdk: "3.7.0"
+          sdk: "3.10.0"
       - id: checkout
         name: Checkout repository
         uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd
@@ -1489,13 +1489,13 @@
       - job_005
       - job_006
   job_040:
-    name: "unit_test; windows; Dart 3.7.0; PKG: pkgs/test; `dart test --preset travis --total-shards 5 --shard-index 2`"
+    name: "unit_test; windows; Dart 3.10.0; PKG: pkgs/test; `dart test --preset travis --total-shards 5 --shard-index 2`"
     runs-on: windows-latest
     steps:
       - name: Setup Dart SDK
         uses: dart-lang/setup-dart@65eb853c7ba17dde3be364c3d2858773e7144260
         with:
-          sdk: "3.7.0"
+          sdk: "3.10.0"
       - id: checkout
         name: Checkout repository
         uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd
@@ -1516,13 +1516,13 @@
       - job_005
       - job_006
   job_041:
-    name: "unit_test; windows; Dart 3.7.0; PKG: pkgs/test; `dart test --preset travis --total-shards 5 --shard-index 3`"
+    name: "unit_test; windows; Dart 3.10.0; PKG: pkgs/test; `dart test --preset travis --total-shards 5 --shard-index 3`"
     runs-on: windows-latest
     steps:
       - name: Setup Dart SDK
         uses: dart-lang/setup-dart@65eb853c7ba17dde3be364c3d2858773e7144260
         with:
-          sdk: "3.7.0"
+          sdk: "3.10.0"
       - id: checkout
         name: Checkout repository
         uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd
@@ -1543,13 +1543,13 @@
       - job_005
       - job_006
   job_042:
-    name: "unit_test; windows; Dart 3.7.0; PKG: pkgs/test; `dart test --preset travis --total-shards 5 --shard-index 4`"
+    name: "unit_test; windows; Dart 3.10.0; PKG: pkgs/test; `dart test --preset travis --total-shards 5 --shard-index 4`"
     runs-on: windows-latest
     steps:
       - name: Setup Dart SDK
         uses: dart-lang/setup-dart@65eb853c7ba17dde3be364c3d2858773e7144260
         with:
-          sdk: "3.7.0"
+          sdk: "3.10.0"
       - id: checkout
         name: Checkout repository
         uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd
diff --git a/integration_tests/regression/pubspec.yaml b/integration_tests/regression/pubspec.yaml
index 69b240c..2b19d15 100644
--- a/integration_tests/regression/pubspec.yaml
+++ b/integration_tests/regression/pubspec.yaml
@@ -1,7 +1,7 @@
 name: regression_tests
 publish_to: none
 environment:
-  sdk: ^3.7.0
+  sdk: ^3.10.0
 resolution: workspace
 dependencies:
   test: any
diff --git a/integration_tests/spawn_hybrid/pubspec.yaml b/integration_tests/spawn_hybrid/pubspec.yaml
index 4a3499f..4b1e6be 100644
--- a/integration_tests/spawn_hybrid/pubspec.yaml
+++ b/integration_tests/spawn_hybrid/pubspec.yaml
@@ -1,7 +1,7 @@
 name: spawn_hybrid
 publish_to: none
 environment:
-  sdk: ^3.7.0
+  sdk: ^3.10.0
 resolution: workspace
 dependencies:
   async: ^2.9.0
diff --git a/integration_tests/wasm/pubspec.yaml b/integration_tests/wasm/pubspec.yaml
index 53f7f7c..aa89a70 100644
--- a/integration_tests/wasm/pubspec.yaml
+++ b/integration_tests/wasm/pubspec.yaml
@@ -1,7 +1,7 @@
 name: wasm_tests
 publish_to: none
 environment:
-  sdk: ^3.7.0
+  sdk: ^3.10.0
 resolution: workspace
 dev_dependencies:
   test: any
diff --git a/pkgs/checks/lib/src/checks.dart b/pkgs/checks/lib/src/checks.dart
index cc8359f..3a6818e 100644
--- a/pkgs/checks/lib/src/checks.dart
+++ b/pkgs/checks/lib/src/checks.dart
@@ -597,11 +597,8 @@
 
   Extracted<T> _fillActual(Object? actual) =>
       _rejection == null || _rejection.actual.isNotEmpty
-          ? this
-          : Extracted.rejection(
-            actual: literal(actual),
-            which: _rejection.which,
-          );
+      ? this
+      : Extracted.rejection(actual: literal(actual), which: _rejection.which);
 }
 
 abstract interface class _Optional<T> {
@@ -1051,10 +1048,9 @@
   /// the output for the failure message.
   final Iterable<String>? which;
 
-  Rejection _fillActual(Object? value) =>
-      actual.isNotEmpty
-          ? this
-          : Rejection(actual: literal(value), which: which);
+  Rejection _fillActual(Object? value) => actual.isNotEmpty
+      ? this
+      : Rejection(actual: literal(value), which: which);
 
   Rejection({this.actual = const [], this.which});
 }
diff --git a/pkgs/checks/lib/src/describe.dart b/pkgs/checks/lib/src/describe.dart
index 4f74e43..88b46d9 100644
--- a/pkgs/checks/lib/src/describe.dart
+++ b/pkgs/checks/lib/src/describe.dart
@@ -67,12 +67,11 @@
     );
   } else if (object is String) {
     if (object.isEmpty) return ["''"];
-    final escaped =
-        const LineSplitter()
-            .convert(object)
-            .map(escape)
-            .map((line) => line.replaceAll("'", r"\'"))
-            .toList();
+    final escaped = const LineSplitter()
+        .convert(object)
+        .map(escape)
+        .map((line) => line.replaceAll("'", r"\'"))
+        .toList();
     return prefixFirst("'", postfixLast("'", escaped));
   } else if (object is Condition<Never>) {
     return ['<A value that:', ...postfixLast('>', describe(object))];
diff --git a/pkgs/checks/lib/src/extensions/async.dart b/pkgs/checks/lib/src/extensions/async.dart
index 0a56295..34a768b 100644
--- a/pkgs/checks/lib/src/extensions/async.dart
+++ b/pkgs/checks/lib/src/extensions/async.dart
@@ -275,10 +275,9 @@
     conditions = conditions.toList();
     final descriptions = <String>[];
     await _expectAsync(
-      () =>
-          descriptions.isEmpty
-              ? ['satisfies ${conditions.length} conditions in order']
-              : descriptions,
+      () => descriptions.isEmpty
+          ? ['satisfies ${conditions.length} conditions in order']
+          : descriptions,
       (actual) async {
         var satisfiedCount = 0;
         for (var condition in conditions) {
@@ -337,16 +336,15 @@
     }
     final descriptions = <Iterable<String>>[];
     await context.expectAsync(
-      () =>
-          descriptions.isEmpty
-              ? ['satisfies any of ${conditions.length} conditions']
-              : [
-                'satisfies one of:',
-                for (var i = 0; i < descriptions.length; i++) ...[
-                  ...descriptions[i],
-                  if (i < descriptions.length - 1) 'or,',
-                ],
+      () => descriptions.isEmpty
+          ? ['satisfies any of ${conditions.length} conditions']
+          : [
+              'satisfies one of:',
+              for (var i = 0; i < descriptions.length; i++) ...[
+                ...descriptions[i],
+                if (i < descriptions.length - 1) 'or,',
               ],
+            ],
       (actual) async {
         final transaction = actual.startTransaction();
         StreamQueue<T>? longestAccepted;
diff --git a/pkgs/checks/lib/src/extensions/core.dart b/pkgs/checks/lib/src/extensions/core.dart
index d1fa647..5875e8d 100644
--- a/pkgs/checks/lib/src/extensions/core.dart
+++ b/pkgs/checks/lib/src/extensions/core.dart
@@ -111,20 +111,18 @@
   void isTrue() {
     context.expect(
       () => ['is true'],
-      (actual) =>
-          actual
-              ? null // force coverage
-              : Rejection(),
+      (actual) => actual
+          ? null // force coverage
+          : Rejection(),
     );
   }
 
   void isFalse() {
     context.expect(
       () => ['is false'],
-      (actual) =>
-          !actual
-              ? null // force coverage
-              : Rejection(),
+      (actual) => !actual
+          ? null // force coverage
+          : Rejection(),
     );
   }
 }
diff --git a/pkgs/checks/lib/src/extensions/iterable.dart b/pkgs/checks/lib/src/extensions/iterable.dart
index e868f16..803cae3 100644
--- a/pkgs/checks/lib/src/extensions/iterable.dart
+++ b/pkgs/checks/lib/src/extensions/iterable.dart
@@ -108,12 +108,11 @@
         var expectedIndex = 0;
         for (final element in actual) {
           final currentExpected = expected[expectedIndex];
-          final matches =
-              currentExpected is Condition<T>
-                  ? softCheck(element, currentExpected) == null
-                  : currentExpected is Condition<dynamic>
-                  ? softCheck(element, currentExpected) == null
-                  : currentExpected == element;
+          final matches = currentExpected is Condition<T>
+              ? softCheck(element, currentExpected) == null
+              : currentExpected is Condition<dynamic>
+              ? softCheck(element, currentExpected) == null
+              : currentExpected == element;
           if (matches && ++expectedIndex >= expected.length) return null;
         }
         return Rejection(
diff --git a/pkgs/checks/lib/src/extensions/string.dart b/pkgs/checks/lib/src/extensions/string.dart
index d449c0b..f41fe0b 100644
--- a/pkgs/checks/lib/src/extensions/string.dart
+++ b/pkgs/checks/lib/src/extensions/string.dart
@@ -166,10 +166,12 @@
   if (actual == expected) return null;
   final escapedActual = escape(actual);
   final escapedExpected = escape(expected);
-  final escapedActualDisplay =
-      actualDisplay != null ? escape(actualDisplay) : escapedActual;
-  final escapedExpectedDisplay =
-      expectedDisplay != null ? escape(expectedDisplay) : escapedExpected;
+  final escapedActualDisplay = actualDisplay != null
+      ? escape(actualDisplay)
+      : escapedActual;
+  final escapedExpectedDisplay = expectedDisplay != null
+      ? escape(expectedDisplay)
+      : escapedExpected;
   final minLength = math.min(escapedActual.length, escapedExpected.length);
   var i = 0;
   for (; i < minLength; i++) {
@@ -225,10 +227,9 @@
     (end > 10) ? '... ${s.substring(end - 10, end)}' : s.substring(0, end);
 
 /// The truncated remainder of [s] starting at the [start] character.
-String _trailing(String s, int start) =>
-    (start + 10 > s.length)
-        ? s.substring(start)
-        : '${s.substring(start, start + 10)} ...';
+String _trailing(String s, int start) => (start + 10 > s.length)
+    ? s.substring(start)
+    : '${s.substring(start, start + 10)} ...';
 
 /// Utility function to collapse whitespace runs to single spaces
 /// and strip leading/trailing whitespace.
diff --git a/pkgs/checks/pubspec.yaml b/pkgs/checks/pubspec.yaml
index 092c802..4ed2cdd 100644
--- a/pkgs/checks/pubspec.yaml
+++ b/pkgs/checks/pubspec.yaml
@@ -9,7 +9,7 @@
 resolution: workspace
 
 environment:
-  sdk: ^3.7.0
+  sdk: ^3.10.0
 
 dependencies:
   async: ^2.8.0
diff --git a/pkgs/checks/test/context_test.dart b/pkgs/checks/test/context_test.dart
index a136ce1..d7c5567 100644
--- a/pkgs/checks/test/context_test.dart
+++ b/pkgs/checks/test/context_test.dart
@@ -112,11 +112,10 @@
       late void Function() callback;
       final monitor = await TestCaseMonitor.run(() {
         check(null).context.expectUnawaited(() => [''], (actual, reject) {
-          final completer =
-              Completer<void>()
-                ..future.then((_) {
-                  reject(Rejection(which: ['foo']));
-                });
+          final completer = Completer<void>()
+            ..future.then((_) {
+              reject(Rejection(which: ['foo']));
+            });
           callback = completer.complete;
         });
       });
diff --git a/pkgs/checks/test/extensions/async_test.dart b/pkgs/checks/test/extensions/async_test.dart
index 85b68f8..e632bc4 100644
--- a/pkgs/checks/test/extensions/async_test.dart
+++ b/pkgs/checks/test/extensions/async_test.dart
@@ -230,10 +230,10 @@
           (it) => it.deepEquals(['  emits an error of type StateError']),
         );
         await check(
-          (Subject<StreamQueue<void>> it) =>
-              it..emitsError<StateError>(
-                (it) => it.has((e) => e.message, 'message').equals('foo'),
-              ),
+          (Subject<StreamQueue<void>> it) => it
+            ..emitsError<StateError>(
+              (it) => it.has((e) => e.message, 'message').equals('foo'),
+            ),
         ).hasAsyncDescriptionWhich(
           (it) => it.deepEquals([
             '  emits an error of type StateError that:',
diff --git a/pkgs/checks/test/extensions/collection_equality_test.dart b/pkgs/checks/test/extensions/collection_equality_test.dart
index 71e7faf..29a993c 100644
--- a/pkgs/checks/test/extensions/collection_equality_test.dart
+++ b/pkgs/checks/test/extensions/collection_equality_test.dart
@@ -67,10 +67,9 @@
           ['a', 'b'],
           [
             (Subject<dynamic> it) => it.isA<String>().which(
-              (it) =>
-                  it
-                    ..startsWith('a')
-                    ..length.isLessThan(2),
+              (it) => it
+                ..startsWith('a')
+                ..length.isLessThan(2),
             ),
             (Subject<dynamic> it) => it.isA<String>().startsWith('b'),
           ],
diff --git a/pkgs/checks/test/extensions/core_test.dart b/pkgs/checks/test/extensions/core_test.dart
index 33833d5..cbcca7b 100644
--- a/pkgs/checks/test/extensions/core_test.dart
+++ b/pkgs/checks/test/extensions/core_test.dart
@@ -20,13 +20,12 @@
       check(1).has((v) => v.isOdd, 'isOdd').isTrue();
 
       check(null).isRejectedBy(
-        (it) =>
-            it.has((v) {
-              Error.throwWithStackTrace(
-                UnimplementedError(),
-                StackTrace.fromString('fake trace'),
-              );
-            }, 'foo').isNotNull(),
+        (it) => it.has((v) {
+          Error.throwWithStackTrace(
+            UnimplementedError(),
+            StackTrace.fromString('fake trace'),
+          );
+        }, 'foo').isNotNull(),
         which: [
           'threw while trying to read foo: <UnimplementedError>',
           'fake trace',
diff --git a/pkgs/checks/test/extensions/iterable_test.dart b/pkgs/checks/test/extensions/iterable_test.dart
index 672c5b4..468c63d 100644
--- a/pkgs/checks/test/extensions/iterable_test.dart
+++ b/pkgs/checks/test/extensions/iterable_test.dart
@@ -243,14 +243,22 @@
   group('unorderedMatches', () {
     test('success for happy case', () {
       check(_testIterable).unorderedMatches(
-        _testIterable.toList().reversed.map((i) => (it) => it.equals(i)),
+        _testIterable.toList().reversed.map(
+          (i) =>
+              (it) => it.equals(i),
+        ),
       );
     });
 
     test('reports unmatched elements', () {
       check(_testIterable).isRejectedBy(
         (it) => it.unorderedMatches(
-          _testIterable.followedBy([42, 100]).map((i) => (it) => it.equals(i)),
+          _testIterable
+              .followedBy([42, 100])
+              .map(
+                (i) =>
+                    (it) => it.equals(i),
+              ),
         ),
         which: [
           'has no element matching the condition at index 2:',
@@ -262,8 +270,12 @@
 
     test('reports unexpected elements', () {
       check(_testIterable.followedBy([42, 100])).isRejectedBy(
-        (it) =>
-            it.unorderedMatches(_testIterable.map((i) => (it) => it.equals(i))),
+        (it) => it.unorderedMatches(
+          _testIterable.map(
+            (i) =>
+                (it) => it.equals(i),
+          ),
+        ),
         which: [
           'has an unmatched element at index 2: <42>',
           'and 1 other unmatched elements',
@@ -276,7 +288,8 @@
     test('succeeds for the happy path', () {
       check(_testIterable).pairwiseMatches(
         [1, 2],
-        (expected) => (it) => it.isLessThan(expected),
+        (expected) =>
+            (it) => it.isLessThan(expected),
         'is less than',
       );
     });
@@ -284,7 +297,8 @@
       check(_testIterable).isRejectedBy(
         (it) => it.pairwiseMatches(
           [1, 1],
-          (expected) => (it) => it.isLessThan(expected),
+          (expected) =>
+              (it) => it.isLessThan(expected),
           'is less than',
         ),
         which: [
@@ -299,7 +313,8 @@
       check(_testIterable).isRejectedBy(
         (it) => it.pairwiseMatches(
           [1, 2, 3],
-          (expected) => (it) => it.isLessThan(expected),
+          (expected) =>
+              (it) => it.isLessThan(expected),
           'is less than',
         ),
         which: [
@@ -311,7 +326,8 @@
       check(_testIterable).isRejectedBy(
         (it) => it.pairwiseMatches(
           [1],
-          (expected) => (it) => it.isLessThan(expected),
+          (expected) =>
+              (it) => it.isLessThan(expected),
           'is less than',
         ),
         which: ['has too many elements, expected exactly 1'],
diff --git a/pkgs/checks/test/extensions/map_test.dart b/pkgs/checks/test/extensions/map_test.dart
index 69c87bf..67f12a8 100644
--- a/pkgs/checks/test/extensions/map_test.dart
+++ b/pkgs/checks/test/extensions/map_test.dart
@@ -15,10 +15,9 @@
   });
   test('entries', () {
     check(_testMap).entries.any(
-      (it) =>
-          it
-            ..has((p0) => p0.key, 'key').equals('a')
-            ..has((p0) => p0.value, 'value').equals(1),
+      (it) => it
+        ..has((p0) => p0.key, 'key').equals('a')
+        ..has((p0) => p0.value, 'value').equals(1),
     );
   });
   test('keys', () {
diff --git a/pkgs/checks/test/soft_check_test.dart b/pkgs/checks/test/soft_check_test.dart
index ad6bf01..e635a30 100644
--- a/pkgs/checks/test/soft_check_test.dart
+++ b/pkgs/checks/test/soft_check_test.dart
@@ -11,10 +11,9 @@
   group('softCheck', () {
     test('returns the first failure', () {
       check(0).isRejectedBy(
-        (it) =>
-            it
-              ..isGreaterThan(1)
-              ..isGreaterThan(2),
+        (it) => it
+          ..isGreaterThan(1)
+          ..isGreaterThan(2),
         which: ['is not greater than <1>'],
       );
     });
@@ -22,10 +21,9 @@
   group('softCheckAsync', () {
     test('returns the first failure', () async {
       await check(Future.value(0)).isRejectedByAsync(
-        (it) =>
-            it
-              ..completes((it) => it.isGreaterThan(1))
-              ..completes((it) => it.isGreaterThan(2)),
+        (it) => it
+          ..completes((it) => it.isGreaterThan(1))
+          ..completes((it) => it.isGreaterThan(2)),
         actual: ['<0>'],
         which: ['is not greater than <1>'],
       );
diff --git a/pkgs/matcher/lib/src/custom_matcher.dart b/pkgs/matcher/lib/src/custom_matcher.dart
index 28f9461..f7920db 100644
--- a/pkgs/matcher/lib/src/custom_matcher.dart
+++ b/pkgs/matcher/lib/src/custom_matcher.dart
@@ -55,16 +55,15 @@
     } catch (exception, stack) {
       addStateInfo(matchState, {
         'custom.exception': exception.toString(),
-        'custom.stack':
-            Chain.forTrace(stack)
-                .foldFrames(
-                  (frame) =>
-                      frame.package == 'test' ||
-                      frame.package == 'stream_channel' ||
-                      frame.package == 'matcher',
-                  terse: true,
-                )
-                .toString(),
+        'custom.stack': Chain.forTrace(stack)
+            .foldFrames(
+              (frame) =>
+                  frame.package == 'test' ||
+                  frame.package == 'stream_channel' ||
+                  frame.package == 'matcher',
+              terse: true,
+            )
+            .toString(),
       });
     }
     return false;
diff --git a/pkgs/matcher/lib/src/equals_matcher.dart b/pkgs/matcher/lib/src/equals_matcher.dart
index 695b13d..7cb08e1 100644
--- a/pkgs/matcher/lib/src/equals_matcher.dart
+++ b/pkgs/matcher/lib/src/equals_matcher.dart
@@ -15,10 +15,9 @@
 /// For [Iterable]s and [Map]s, this will recursively match the elements. To
 /// handle cyclic structures a recursion depth [limit] can be provided. The
 /// default limit is 100. [Set]s will be compared order-independently.
-Matcher equals(Object? expected, [int limit = 100]) =>
-    expected is String
-        ? _StringEqualsMatcher(expected)
-        : _DeepMatcher(expected, limit);
+Matcher equals(Object? expected, [int limit = 100]) => expected is String
+    ? _StringEqualsMatcher(expected)
+    : _DeepMatcher(expected, limit);
 
 typedef _RecursiveMatcher = _Mismatch? Function(Object?, Object?, String, int);
 
@@ -46,10 +45,9 @@
     buff.write('is different.');
     var escapedItem = escape(item);
     var escapedValue = escape(_value);
-    var minLength =
-        escapedItem.length < escapedValue.length
-            ? escapedItem.length
-            : escapedValue.length;
+    var minLength = escapedItem.length < escapedValue.length
+        ? escapedItem.length
+        : escapedValue.length;
     var start = 0;
     for (; start < minLength; start++) {
       if (escapedValue.codeUnitAt(start) != escapedItem.codeUnitAt(start)) {
@@ -249,10 +247,9 @@
         if (actual is! Map) {
           return _Mismatch.simple(location, actual, 'expected a map');
         }
-        var err =
-            (expected.length == actual.length)
-                ? ''
-                : 'has different length and ';
+        var err = (expected.length == actual.length)
+            ? ''
+            : 'has different length and ';
         for (var key in expected.keys) {
           if (!actual.containsKey(key)) {
             return _Mismatch(
diff --git a/pkgs/matcher/lib/src/expect/expect_async.dart b/pkgs/matcher/lib/src/expect/expect_async.dart
index 0b633a5..57def17 100644
--- a/pkgs/matcher/lib/src/expect/expect_async.dart
+++ b/pkgs/matcher/lib/src/expect/expect_async.dart
@@ -82,8 +82,9 @@
     bool Function()? isDone,
   }) : _callback = callback,
        _minExpectedCalls = minExpected,
-       _maxExpectedCalls =
-           (maxExpected == 0 && minExpected > 0) ? minExpected : maxExpected,
+       _maxExpectedCalls = (maxExpected == 0 && minExpected > 0)
+           ? minExpected
+           : maxExpected,
        _isDone = isDone,
        _reason = reason == null ? '' : '\n$reason',
        _id = _makeCallbackId(id, callback) {
@@ -236,14 +237,13 @@
   int max = 0,
   String? id,
   String? reason,
-}) =>
-    _ExpectedFunction<Object?>(
-      callback,
-      count,
-      max,
-      id: id,
-      reason: reason,
-    ).func;
+}) => _ExpectedFunction<Object?>(
+  callback,
+  count,
+  max,
+  id: id,
+  reason: reason,
+).func;
 
 /// Informs the framework that the given [callback] of arity 0 is expected to be
 /// called [count] number of times (by default 1).
@@ -458,15 +458,14 @@
   bool Function() isDone, {
   String? id,
   String? reason,
-}) =>
-    _ExpectedFunction<Object?>(
-      callback,
-      0,
-      -1,
-      id: id,
-      reason: reason,
-      isDone: isDone,
-    ).func;
+}) => _ExpectedFunction<Object?>(
+  callback,
+  0,
+  -1,
+  id: id,
+  reason: reason,
+  isDone: isDone,
+).func;
 
 /// Informs the framework that the given [callback] of arity 0 is expected to be
 /// called until [isDone] returns true.
@@ -490,15 +489,14 @@
   bool Function() isDone, {
   String? id,
   String? reason,
-}) =>
-    _ExpectedFunction<T>(
-      callback,
-      0,
-      -1,
-      id: id,
-      reason: reason,
-      isDone: isDone,
-    ).max0;
+}) => _ExpectedFunction<T>(
+  callback,
+  0,
+  -1,
+  id: id,
+  reason: reason,
+  isDone: isDone,
+).max0;
 
 /// Informs the framework that the given [callback] of arity 1 is expected to be
 /// called until [isDone] returns true.
@@ -522,15 +520,14 @@
   bool Function() isDone, {
   String? id,
   String? reason,
-}) =>
-    _ExpectedFunction<T>(
-      callback,
-      0,
-      -1,
-      id: id,
-      reason: reason,
-      isDone: isDone,
-    ).max1;
+}) => _ExpectedFunction<T>(
+  callback,
+  0,
+  -1,
+  id: id,
+  reason: reason,
+  isDone: isDone,
+).max1;
 
 /// Informs the framework that the given [callback] of arity 2 is expected to be
 /// called until [isDone] returns true.
@@ -554,15 +551,14 @@
   bool Function() isDone, {
   String? id,
   String? reason,
-}) =>
-    _ExpectedFunction<T>(
-      callback,
-      0,
-      -1,
-      id: id,
-      reason: reason,
-      isDone: isDone,
-    ).max2;
+}) => _ExpectedFunction<T>(
+  callback,
+  0,
+  -1,
+  id: id,
+  reason: reason,
+  isDone: isDone,
+).max2;
 
 /// Informs the framework that the given [callback] of arity 3 is expected to be
 /// called until [isDone] returns true.
@@ -586,15 +582,14 @@
   bool Function() isDone, {
   String? id,
   String? reason,
-}) =>
-    _ExpectedFunction<T>(
-      callback,
-      0,
-      -1,
-      id: id,
-      reason: reason,
-      isDone: isDone,
-    ).max3;
+}) => _ExpectedFunction<T>(
+  callback,
+  0,
+  -1,
+  id: id,
+  reason: reason,
+  isDone: isDone,
+).max3;
 
 /// Informs the framework that the given [callback] of arity 4 is expected to be
 /// called until [isDone] returns true.
@@ -618,15 +613,14 @@
   bool Function() isDone, {
   String? id,
   String? reason,
-}) =>
-    _ExpectedFunction<T>(
-      callback,
-      0,
-      -1,
-      id: id,
-      reason: reason,
-      isDone: isDone,
-    ).max4;
+}) => _ExpectedFunction<T>(
+  callback,
+  0,
+  -1,
+  id: id,
+  reason: reason,
+  isDone: isDone,
+).max4;
 
 /// Informs the framework that the given [callback] of arity 5 is expected to be
 /// called until [isDone] returns true.
@@ -650,15 +644,14 @@
   bool Function() isDone, {
   String? id,
   String? reason,
-}) =>
-    _ExpectedFunction<T>(
-      callback,
-      0,
-      -1,
-      id: id,
-      reason: reason,
-      isDone: isDone,
-    ).max5;
+}) => _ExpectedFunction<T>(
+  callback,
+  0,
+  -1,
+  id: id,
+  reason: reason,
+  isDone: isDone,
+).max5;
 
 /// Informs the framework that the given [callback] of arity 6 is expected to be
 /// called until [isDone] returns true.
@@ -682,12 +675,11 @@
   bool Function() isDone, {
   String? id,
   String? reason,
-}) =>
-    _ExpectedFunction<T>(
-      callback,
-      0,
-      -1,
-      id: id,
-      reason: reason,
-      isDone: isDone,
-    ).max6;
+}) => _ExpectedFunction<T>(
+  callback,
+  0,
+  -1,
+  id: id,
+  reason: reason,
+  isDone: isDone,
+).max6;
diff --git a/pkgs/matcher/lib/src/expect/future_matchers.dart b/pkgs/matcher/lib/src/expect/future_matchers.dart
index e069782..b22ab37 100644
--- a/pkgs/matcher/lib/src/expect/future_matchers.dart
+++ b/pkgs/matcher/lib/src/expect/future_matchers.dart
@@ -61,10 +61,9 @@
       } else {
         var matchState = <Object?, Object?>{};
         if (_matcher.matches(value, matchState)) return null;
-        result =
-            _matcher
-                .describeMismatch(value, StringDescription(), matchState, false)
-                .toString();
+        result = _matcher
+            .describeMismatch(value, StringDescription(), matchState, false)
+            .toString();
       }
 
       var buffer = StringBuffer();
diff --git a/pkgs/matcher/lib/src/expect/never_called.dart b/pkgs/matcher/lib/src/expect/never_called.dart
index 8e970c6..4da7c53 100644
--- a/pkgs/matcher/lib/src/expect/never_called.dart
+++ b/pkgs/matcher/lib/src/expect/never_called.dart
@@ -54,24 +54,22 @@
     a9 = placeholder,
     a10 = placeholder,
   ]) {
-    var arguments =
-        [
-          a1,
-          a2,
-          a3,
-          a4,
-          a5,
-          a6,
-          a7,
-          a8,
-          a9,
-          a10,
-        ].where((argument) => argument != placeholder).toList();
+    var arguments = [
+      a1,
+      a2,
+      a3,
+      a4,
+      a5,
+      a6,
+      a7,
+      a8,
+      a9,
+      a10,
+    ].where((argument) => argument != placeholder).toList();
 
-    var argsText =
-        arguments.isEmpty
-            ? ' no arguments.'
-            : ':\n${bullet(arguments.map(prettyPrint))}';
+    var argsText = arguments.isEmpty
+        ? ' no arguments.'
+        : ':\n${bullet(arguments.map(prettyPrint))}';
     zone.handleUncaughtError(
       TestFailure(
         'Callback should never have been called, but it was called with'
diff --git a/pkgs/matcher/lib/src/expect/prints_matcher.dart b/pkgs/matcher/lib/src/expect/prints_matcher.dart
index 2ffbeb2..09600cd 100644
--- a/pkgs/matcher/lib/src/expect/prints_matcher.dart
+++ b/pkgs/matcher/lib/src/expect/prints_matcher.dart
@@ -60,10 +60,9 @@
     var matchState = <Object?, Object?>{};
     if (_matcher.matches(actual, matchState)) return null;
 
-    var result =
-        _matcher
-            .describeMismatch(actual, StringDescription(), matchState, false)
-            .toString();
+    var result = _matcher
+        .describeMismatch(actual, StringDescription(), matchState, false)
+        .toString();
 
     var buffer = StringBuffer();
     if (actual.isEmpty) {
diff --git a/pkgs/matcher/lib/src/expect/throws_matcher.dart b/pkgs/matcher/lib/src/expect/throws_matcher.dart
index 022f9fd..f35e1a6 100644
--- a/pkgs/matcher/lib/src/expect/throws_matcher.dart
+++ b/pkgs/matcher/lib/src/expect/throws_matcher.dart
@@ -124,10 +124,9 @@
     var matchState = <Object?, Object?>{};
     if (_matcher.matches(error, matchState)) return null;
 
-    var result =
-        _matcher
-            .describeMismatch(error, StringDescription(), matchState, false)
-            .toString();
+    var result = _matcher
+        .describeMismatch(error, StringDescription(), matchState, false)
+        .toString();
 
     var buffer = StringBuffer();
     buffer.writeln(indent(prettyPrint(error), first: 'threw '));
diff --git a/pkgs/matcher/lib/src/iterable_matchers.dart b/pkgs/matcher/lib/src/iterable_matchers.dart
index 21bf73c..087bbd2 100644
--- a/pkgs/matcher/lib/src/iterable_matchers.dart
+++ b/pkgs/matcher/lib/src/iterable_matchers.dart
@@ -203,13 +203,15 @@
             .add('has no match for ')
             .addDescriptionOf(_expected[matcherIndex])
             .add(' at index $matcherIndex');
-        final remainingUnmatched =
-            matched.sublist(matcherIndex + 1).where((m) => m == null).length;
+        final remainingUnmatched = matched
+            .sublist(matcherIndex + 1)
+            .where((m) => m == null)
+            .length;
         return remainingUnmatched == 0
             ? description.toString()
             : description
-                .add(' along with $remainingUnmatched other unmatched')
-                .toString();
+                  .add(' along with $remainingUnmatched other unmatched')
+                  .toString();
       }
     }
     return null;
diff --git a/pkgs/matcher/lib/src/string_matchers.dart b/pkgs/matcher/lib/src/string_matchers.dart
index 0097733..3d52252 100644
--- a/pkgs/matcher/lib/src/string_matchers.dart
+++ b/pkgs/matcher/lib/src/string_matchers.dart
@@ -153,12 +153,11 @@
   final RegExp _regexp;
 
   _MatchesRegExp(Pattern re)
-    : _regexp =
-          (re is String)
-              ? RegExp(re)
-              : (re is RegExp)
-              ? re
-              : throw ArgumentError('matches requires a regexp or string');
+    : _regexp = (re is String)
+          ? RegExp(re)
+          : (re is RegExp)
+          ? re
+          : throw ArgumentError('matches requires a regexp or string');
 
   @override
   bool typedMatches(String item, Map matchState) => _regexp.hasMatch(item);
diff --git a/pkgs/matcher/pubspec.yaml b/pkgs/matcher/pubspec.yaml
index 16b444b..d007e2f 100644
--- a/pkgs/matcher/pubspec.yaml
+++ b/pkgs/matcher/pubspec.yaml
@@ -7,7 +7,7 @@
 issue_tracker: https://github.com/dart-lang/test/issues?q=is%3Aissue+is%3Aopen+label%3Apackage%3Amatcher
 
 environment:
-  sdk: ^3.7.0
+  sdk: ^3.10.0
 
 dependencies:
   async: ^2.10.0
diff --git a/pkgs/test/CHANGELOG.md b/pkgs/test/CHANGELOG.md
index 3399fcb..a2aefbb 100644
--- a/pkgs/test/CHANGELOG.md
+++ b/pkgs/test/CHANGELOG.md
@@ -4,6 +4,7 @@
   `resolvedExecutable` is unexpectedly `null`.
 * Fix a bug where `-c exe` tests would hang on exit on windows.
 * Allow `analyzer` version  `13.x.x`.
+* Increase SDK constraint to ^3.10.0.
 
 ## 1.31.0
 
diff --git a/pkgs/test/lib/src/runner/browser/browser_manager.dart b/pkgs/test/lib/src/runner/browser/browser_manager.dart
index 4b31650..b48280c 100644
--- a/pkgs/test/lib/src/runner/browser/browser_manager.dart
+++ b/pkgs/test/lib/src/runner/browser/browser_manager.dart
@@ -122,10 +122,9 @@
     // tests complete.
     browser.onExit
         .then<void>(
-          (_) =>
-              throw ApplicationException(
-                '${runtime.name} exited before connecting.',
-              ),
+          (_) => throw ApplicationException(
+            '${runtime.name} exited before connecting.',
+          ),
         )
         .onError<Object>((error, stackTrace) {
           if (!completer.isCompleted) {
@@ -322,13 +321,12 @@
   CancelableOperation<void> _displayPause() {
     if (_pauseCompleter != null) return _pauseCompleter!.operation;
 
-    final pauseCompleter =
-        _pauseCompleter = CancelableCompleter(
-          onCancel: () {
-            _channel.sink.add({'command': 'resume'});
-            _pauseCompleter = null;
-          },
-        );
+    final pauseCompleter = _pauseCompleter = CancelableCompleter(
+      onCancel: () {
+        _channel.sink.add({'command': 'resume'});
+        _pauseCompleter = null;
+      },
+    );
 
     pauseCompleter.operation.value.whenComplete(() {
       _pauseCompleter = null;
diff --git a/pkgs/test/lib/src/runner/browser/chrome.dart b/pkgs/test/lib/src/runner/browser/chrome.dart
index 8b9937b..f23d553 100644
--- a/pkgs/test/lib/src/runner/browser/chrome.dart
+++ b/pkgs/test/lib/src/runner/browser/chrome.dart
@@ -95,8 +95,8 @@
       'Profiler.takePreciseCoverage',
       {},
     );
-    var result =
-        (response.result!['result'] as List).cast<Map<String, dynamic>>();
+    var result = (response.result!['result'] as List)
+        .cast<Map<String, dynamic>>();
     var httpClient = HttpClient();
     var coverage = await parseChromeCoverage(
       result,
diff --git a/pkgs/test/lib/src/runner/browser/compilers/dart2js.dart b/pkgs/test/lib/src/runner/browser/compilers/dart2js.dart
index f43b70b..f1f7194 100644
--- a/pkgs/test/lib/src/runner/browser/compilers/dart2js.dart
+++ b/pkgs/test/lib/src/runner/browser/compilers/dart2js.dart
@@ -122,7 +122,8 @@
     return _compileFutures.putIfAbsent(dartPath, () async {
       var dir = Directory(_compiledDir).createTempSync('test_').path;
       var jsPath = p.join(dir, '${p.basename(dartPath)}.browser_test.dart.js');
-      var bootstrapContent = '''
+      var bootstrapContent =
+          '''
         ${suiteConfig.metadata.languageVersionComment ?? await rootPackageLanguageVersionComment}
         import 'dart:js_interop';
         import 'package:test/src/bootstrap/browser.dart';
diff --git a/pkgs/test/lib/src/runner/browser/compilers/dart2wasm.dart b/pkgs/test/lib/src/runner/browser/compilers/dart2wasm.dart
index 8e8832a..bcc5793 100644
--- a/pkgs/test/lib/src/runner/browser/compilers/dart2wasm.dart
+++ b/pkgs/test/lib/src/runner/browser/compilers/dart2wasm.dart
@@ -139,7 +139,8 @@
       var jsRuntimeUrl = '$baseUrl.mjs';
       var htmlUrl = '$baseUrl.html';
 
-      var bootstrapContent = '''
+      var bootstrapContent =
+          '''
         ${suiteConfig.metadata.languageVersionComment ?? await rootPackageLanguageVersionComment}
         import 'package:test/src/bootstrap/browser.dart';
 
diff --git a/pkgs/test/lib/src/runner/browser/compilers/precompiled.dart b/pkgs/test/lib/src/runner/browser/compilers/precompiled.dart
index 71b95e5..f5d2d78 100644
--- a/pkgs/test/lib/src/runner/browser/compilers/precompiled.dart
+++ b/pkgs/test/lib/src/runner/browser/compilers/precompiled.dart
@@ -111,10 +111,11 @@
         root,
         faviconPath,
       ),
-      Compiler.exe || Compiler.kernel || Compiler.source =>
-        throw UnsupportedError(
-          'The browser platform does not support $compiler',
-        ),
+      Compiler.exe ||
+      Compiler.kernel ||
+      Compiler.source => throw UnsupportedError(
+        'The browser platform does not support $compiler',
+      ),
     };
   }
 
diff --git a/pkgs/test/lib/src/runner/node/platform.dart b/pkgs/test/lib/src/runner/node/platform.dart
index 587516e..e38deba 100644
--- a/pkgs/test/lib/src/runner/node/platform.dart
+++ b/pkgs/test/lib/src/runner/node/platform.dart
@@ -337,10 +337,9 @@
         await File(mapPath).readAsString(),
         mapUrl: p.toUri(mapPath),
         sdkRoot: Uri.parse('org-dartlang-sdk:///sdk'),
-        packageMap:
-            (await findPackageConfig(
-              Directory(precompiledPath),
-            ))!.toPackageMap(),
+        packageMap: (await findPackageConfig(
+          Directory(precompiledPath),
+        ))!.toPackageMap(),
       );
     }
 
diff --git a/pkgs/test/pubspec.yaml b/pkgs/test/pubspec.yaml
index d9fab8b..5d93cb4 100644
--- a/pkgs/test/pubspec.yaml
+++ b/pkgs/test/pubspec.yaml
@@ -7,7 +7,7 @@
 resolution: workspace
 
 environment:
-  sdk: ^3.7.0
+  sdk: ^3.10.0
 
 dependencies:
   analyzer: '>=8.0.0 <14.0.0'
diff --git a/pkgs/test/test/io.dart b/pkgs/test/test/io.dart
index 886843c..ef7eb96 100644
--- a/pkgs/test/test/io.dart
+++ b/pkgs/test/test/io.dart
@@ -12,23 +12,23 @@
 import 'package:test_process/test_process.dart';
 
 /// The path to the root directory of the `test` package.
-final Future<String> packageDir = Isolate.resolvePackageUri(
-  Uri(scheme: 'package', path: 'test/'),
-).then((uri) {
-  var dir = p.dirname(uri!.path);
-  // If it starts with a `/C:` or other drive letter, remove the leading `/`.
-  if (dir[0] == '/' && dir[2] == ':') dir = dir.substring(1);
-  return dir;
-});
+final Future<String> packageDir =
+    Isolate.resolvePackageUri(Uri(scheme: 'package', path: 'test/')).then((
+      uri,
+    ) {
+      var dir = p.dirname(uri!.path);
+      // If it starts with a `/C:` or other drive letter, remove the leading `/`.
+      if (dir[0] == '/' && dir[2] == ':') dir = dir.substring(1);
+      return dir;
+    });
 
 /// The root directory of the Dart SDK.
 final String sdkDir = p.dirname(p.dirname(Platform.resolvedExecutable));
 
 /// The platform-specific message emitted when a nonexistent file is loaded.
-final String noSuchFileMessage =
-    Platform.isWindows
-        ? 'The system cannot find the file specified.'
-        : 'No such file or directory';
+final String noSuchFileMessage = Platform.isWindows
+    ? 'The system cannot find the file specified.'
+    : 'No such file or directory';
 
 /// An operating system name that's different than the current operating system.
 final otherOS = Platform.isWindows ? 'mac-os' : 'windows';
diff --git a/pkgs/test/test/runner/browser/loader_test.dart b/pkgs/test/test/runner/browser/loader_test.dart
index def0070..d149895 100644
--- a/pkgs/test/test/runner/browser/loader_test.dart
+++ b/pkgs/test/test/runner/browser/loader_test.dart
@@ -58,10 +58,9 @@
   group('.loadFile()', () {
     late RunnerSuite suite;
     setUp(() async {
-      var suites =
-          await _loader
-              .loadFile(p.join(d.sandbox, 'a_test.dart'), _chrome)
-              .toList();
+      var suites = await _loader
+          .loadFile(p.join(d.sandbox, 'a_test.dart'), _chrome)
+          .toList();
 
       expect(suites, hasLength(1));
       var loadSuite = suites.first;
@@ -121,10 +120,9 @@
 }
 ''');
 
-    var suites =
-        await _loader
-            .loadFile(p.join(d.sandbox, 'a_test.dart'), _chrome)
-            .toList();
+    var suites = await _loader
+        .loadFile(p.join(d.sandbox, 'a_test.dart'), _chrome)
+        .toList();
     expect(suites, hasLength(1));
     var loadSuite = suites.first;
     var suite = (await loadSuite.getSuite())!;
@@ -137,18 +135,17 @@
   test('loads a suite both in the browser and the VM', () async {
     var path = p.join(d.sandbox, 'a_test.dart');
 
-    var suites =
-        await _loader
-            .loadFile(
-              path,
-              SuiteConfiguration.runtimes([
-                RuntimeSelection(Runtime.vm.identifier),
-                RuntimeSelection(Runtime.chrome.identifier),
-              ]),
-            )
-            .asyncMap((loadSuite) => loadSuite.getSuite())
-            .cast<RunnerSuite>()
-            .toList();
+    var suites = await _loader
+        .loadFile(
+          path,
+          SuiteConfiguration.runtimes([
+            RuntimeSelection(Runtime.vm.identifier),
+            RuntimeSelection(Runtime.chrome.identifier),
+          ]),
+        )
+        .asyncMap((loadSuite) => loadSuite.getSuite())
+        .cast<RunnerSuite>()
+        .toList();
     expect(suites[0].platform.runtime, equals(Runtime.vm));
     expect(suites[0].platform.compiler, equals(Runtime.vm.defaultCompiler));
     expect(suites[0].path, equals(path));
@@ -170,10 +167,9 @@
   print('print within test');
 }
 ''');
-    var suites =
-        await _loader
-            .loadFile(p.join(d.sandbox, 'a_test.dart'), _chrome)
-            .toList();
+    var suites = await _loader
+        .loadFile(p.join(d.sandbox, 'a_test.dart'), _chrome)
+        .toList();
     expect(suites, hasLength(1));
     var loadSuite = suites.first;
 
diff --git a/pkgs/test/test/runner/compiler_runtime_matrix_test.dart b/pkgs/test/test/runner/compiler_runtime_matrix_test.dart
index 5920701..6d90a2d 100644
--- a/pkgs/test/test/runner/compiler_runtime_matrix_test.dart
+++ b/pkgs/test/test/runner/compiler_runtime_matrix_test.dart
@@ -142,10 +142,9 @@
                 expect(test.stderr, emits('world'));
                 await test.shouldExit(0);
               },
-              skip:
-                  Platform.isWindows && compiler == Compiler.exe
-                      ? 'https://github.com/dart-lang/test/issues/2150'
-                      : null,
+              skip: Platform.isWindows && compiler == Compiler.exe
+                  ? 'https://github.com/dart-lang/test/issues/2150'
+                  : null,
             );
           }
         },
diff --git a/pkgs/test/test/runner/configuration/configuration_test.dart b/pkgs/test/test/runner/configuration/configuration_test.dart
index e475e52..bc5ba19 100644
--- a/pkgs/test/test/runner/configuration/configuration_test.dart
+++ b/pkgs/test/test/runner/configuration/configuration_test.dart
@@ -179,19 +179,20 @@
 
     group('for presets', () {
       test('merges each nested configuration', () {
-        var merged = configuration(
-          presets: {
-            'bang': configuration(pauseAfterLoad: true),
-            'qux': configuration(color: true),
-          },
-        ).merge(
-          configuration(
-            presets: {
-              'qux': configuration(color: false),
-              'zap': configuration(help: true),
-            },
-          ),
-        );
+        var merged =
+            configuration(
+              presets: {
+                'bang': configuration(pauseAfterLoad: true),
+                'qux': configuration(color: true),
+              },
+            ).merge(
+              configuration(
+                presets: {
+                  'qux': configuration(color: false),
+                  'zap': configuration(help: true),
+                },
+              ),
+            );
 
         expect(merged.presets['bang']!.pauseAfterLoad, isTrue);
         expect(merged.presets['qux']!.color, isFalse);
diff --git a/pkgs/test/test/runner/configuration/suite_test.dart b/pkgs/test/test/runner/configuration/suite_test.dart
index d233667..ee3da1c 100644
--- a/pkgs/test/test/runner/configuration/suite_test.dart
+++ b/pkgs/test/test/runner/configuration/suite_test.dart
@@ -125,37 +125,42 @@
 
     group('for config maps', () {
       test('merges each nested configuration', () {
-        var merged = suiteConfiguration(
-          tags: {
-            BooleanSelector.parse('foo'): suiteConfiguration(
-              precompiledPath: 'path/',
-            ),
-            BooleanSelector.parse('bar'): suiteConfiguration(jsTrace: true),
-          },
-          onPlatform: {
-            PlatformSelector.parse('vm'): suiteConfiguration(
-              precompiledPath: 'path/',
-            ),
-            PlatformSelector.parse('chrome'): suiteConfiguration(jsTrace: true),
-          },
-        ).merge(
-          suiteConfiguration(
-            tags: {
-              BooleanSelector.parse('bar'): suiteConfiguration(jsTrace: false),
-              BooleanSelector.parse('baz'): suiteConfiguration(
-                runSkipped: true,
+        var merged =
+            suiteConfiguration(
+              tags: {
+                BooleanSelector.parse('foo'): suiteConfiguration(
+                  precompiledPath: 'path/',
+                ),
+                BooleanSelector.parse('bar'): suiteConfiguration(jsTrace: true),
+              },
+              onPlatform: {
+                PlatformSelector.parse('vm'): suiteConfiguration(
+                  precompiledPath: 'path/',
+                ),
+                PlatformSelector.parse('chrome'): suiteConfiguration(
+                  jsTrace: true,
+                ),
+              },
+            ).merge(
+              suiteConfiguration(
+                tags: {
+                  BooleanSelector.parse('bar'): suiteConfiguration(
+                    jsTrace: false,
+                  ),
+                  BooleanSelector.parse('baz'): suiteConfiguration(
+                    runSkipped: true,
+                  ),
+                },
+                onPlatform: {
+                  PlatformSelector.parse('chrome'): suiteConfiguration(
+                    jsTrace: false,
+                  ),
+                  PlatformSelector.parse('firefox'): suiteConfiguration(
+                    runSkipped: true,
+                  ),
+                },
               ),
-            },
-            onPlatform: {
-              PlatformSelector.parse('chrome'): suiteConfiguration(
-                jsTrace: false,
-              ),
-              PlatformSelector.parse('firefox'): suiteConfiguration(
-                runSkipped: true,
-              ),
-            },
-          ),
-        );
+            );
 
         expect(
           merged.tags[BooleanSelector.parse('foo')]!.precompiledPath,
diff --git a/pkgs/test/test/runner/json_file_reporter_test.dart b/pkgs/test/test/runner/json_file_reporter_test.dart
index 57174ec..ae4db2e 100644
--- a/pkgs/test/test/runner/json_file_reporter_test.dart
+++ b/pkgs/test/test/runner/json_file_reporter_test.dart
@@ -175,8 +175,9 @@
   expect(actual, equals(stdoutExpected));
 
   // ---- file reporter verification ----
-  var fileOutputLines =
-      File(p.join(d.sandbox, 'reports', 'tests.json')).readAsLinesSync();
+  var fileOutputLines = File(
+    p.join(d.sandbox, 'reports', 'tests.json'),
+  ).readAsLinesSync();
   await expectJsonReport(
     fileOutputLines,
     test.pid,
diff --git a/pkgs/test/test/runner/json_reporter_utils.dart b/pkgs/test/test/runner/json_reporter_utils.dart
index eec2808..e064c02 100644
--- a/pkgs/test/test/runner/json_reporter_utils.dart
+++ b/pkgs/test/test/runner/json_reporter_utils.dart
@@ -103,8 +103,9 @@
     );
   }
 
-  url ??=
-      line == null ? null : p.toUri(p.join(d.sandbox, 'test.dart')).toString();
+  url ??= line == null
+      ? null
+      : p.toUri(p.join(d.sandbox, 'test.dart')).toString();
   return {
     'type': 'group',
     'group': {
@@ -147,8 +148,9 @@
     );
   }
 
-  url ??=
-      line == null ? null : p.toUri(p.join(d.sandbox, 'test.dart')).toString();
+  url ??= line == null
+      ? null
+      : p.toUri(p.join(d.sandbox, 'test.dart')).toString();
   return {
     'type': 'testStart',
     'test': {
@@ -160,9 +162,9 @@
       'line': line,
       'column': column,
       'url': url,
-      if (rootLine != null) 'root_line': rootLine,
-      if (rootColumn != null) 'root_column': rootColumn,
-      if (rootUrl != null) 'root_url': rootUrl,
+      'root_line': ?rootLine,
+      'root_column': ?rootColumn,
+      'root_url': ?rootUrl,
     },
   };
 }
diff --git a/pkgs/test/test/runner/loader_test.dart b/pkgs/test/test/runner/loader_test.dart
index 8a09777..b8d3d9b 100644
--- a/pkgs/test/test/runner/loader_test.dart
+++ b/pkgs/test/test/runner/loader_test.dart
@@ -49,13 +49,12 @@
     group('with empty configuration', () {
       setUp(() async {
         await d.file('a_test.dart', _tests).create();
-        var suites =
-            await _loader
-                .loadFile(
-                  p.join(d.sandbox, 'a_test.dart'),
-                  SuiteConfiguration.empty,
-                )
-                .toList();
+        var suites = await _loader
+            .loadFile(
+              p.join(d.sandbox, 'a_test.dart'),
+              SuiteConfiguration.empty,
+            )
+            .toList();
         expect(suites, hasLength(1));
         var loadSuite = suites.first;
         suite = (await loadSuite.getSuite())!;
@@ -240,11 +239,10 @@
         await d.file('another_test.dart', _tests).create();
         await d.dir('dir', [d.file('sub_test.dart', _tests)]).create();
 
-        suites =
-            await _loader
-                .loadDir(d.sandbox, SuiteConfiguration.empty)
-                .asyncMap((loadSuite) async => (await loadSuite.getSuite())!)
-                .toList();
+        suites = await _loader
+            .loadDir(d.sandbox, SuiteConfiguration.empty)
+            .asyncMap((loadSuite) async => (await loadSuite.getSuite())!)
+            .toList();
       });
 
       test('gives those suites the correct paths', () {
@@ -275,13 +273,9 @@
         print('print within test');
       }
     ''').create();
-    var suites =
-        await _loader
-            .loadFile(
-              p.join(d.sandbox, 'a_test.dart'),
-              SuiteConfiguration.empty,
-            )
-            .toList();
+    var suites = await _loader
+        .loadFile(p.join(d.sandbox, 'a_test.dart'), SuiteConfiguration.empty)
+        .toList();
     expect(suites, hasLength(1));
     var loadSuite = suites.first;
 
@@ -317,13 +311,12 @@
 
       await runZoned(
         () async {
-          var suites =
-              await _loader
-                  .loadFile(
-                    p.join(d.sandbox, 'a_test.dart'),
-                    suiteConfiguration(retry: numRetries),
-                  )
-                  .toList();
+          var suites = await _loader
+              .loadFile(
+                p.join(d.sandbox, 'a_test.dart'),
+                suiteConfiguration(retry: numRetries),
+              )
+              .toList();
           expect(suites, hasLength(1));
           var loadSuite = suites.first;
           var suite = (await loadSuite.getSuite())!;
diff --git a/pkgs/test/test/runner/runner_test.dart b/pkgs/test/test/runner/runner_test.dart
index e0f80c6..7198fdf 100644
--- a/pkgs/test/test/runner/runner_test.dart
+++ b/pkgs/test/test/runner/runner_test.dart
@@ -51,7 +51,8 @@
 
 final _defaultConcurrency = math.max(1, Platform.numberOfProcessors ~/ 2);
 
-final _usage = '''
+final _usage =
+    '''
 Usage: dart test [files or directories...]
 
 -h, --help                            Show this usage information.
diff --git a/pkgs/test/tool/host.dart b/pkgs/test/tool/host.dart
index e95f252..d1932e9 100644
--- a/pkgs/test/tool/host.dart
+++ b/pkgs/test/tool/host.dart
@@ -136,16 +136,14 @@
       });
 
       _jsApi = _JSApi(
-        resume:
-            () {
-              if (!dom.document.body!.classList.contains('paused')) return;
-              dom.document.body!.classList.remove('paused');
-              serverChannel.sink.add({'command': 'resume'});
-            }.toJS,
-        restartCurrent:
-            () {
-              serverChannel.sink.add({'command': 'restart'});
-            }.toJS,
+        resume: () {
+          if (!dom.document.body!.classList.contains('paused')) return;
+          dom.document.body!.classList.remove('paused');
+          serverChannel.sink.add({'command': 'resume'});
+        }.toJS,
+        restartCurrent: () {
+          serverChannel.sink.add({'command': 'restart'});
+        }.toJS,
       );
     },
     (error, stackTrace) {
diff --git a/pkgs/test_api/lib/src/backend/declarer.dart b/pkgs/test_api/lib/src/backend/declarer.dart
index 97c1294..8d81225 100644
--- a/pkgs/test_api/lib/src/backend/declarer.dart
+++ b/pkgs/test_api/lib/src/backend/declarer.dart
@@ -377,22 +377,18 @@
     _checkNotBuilt('build');
 
     _built = true;
-    var entries =
-        _entries.map((entry) {
-          if (_solo && !_soloEntries.contains(entry)) {
-            entry = LocalTest(
-              entry.name,
-              entry.metadata.change(
-                skip: true,
-                skipReason: 'does not have "solo"',
-              ),
-              trace: entry.trace,
-              location: entry.location,
-              () {},
-            );
-          }
-          return entry;
-        }).toList();
+    var entries = _entries.map((entry) {
+      if (_solo && !_soloEntries.contains(entry)) {
+        entry = LocalTest(
+          entry.name,
+          entry.metadata.change(skip: true, skipReason: 'does not have "solo"'),
+          trace: entry.trace,
+          location: entry.location,
+          () {},
+        );
+      }
+      return entry;
+    }).toList();
 
     return Group(
       _name ?? '',
@@ -410,19 +406,18 @@
   /// [name] should be the name of the method being called.
   void _checkNotBuilt(String name) {
     if (!_built) return;
-    final restrictionMessage =
-        _isStandalone
-            ? 'When running a test as an executable directly '
-                '(not as a suite by the test runner), '
-                'tests must be declared in a synchronous block.\n'
-                'If async work is required before any tests are run '
-                'use a `setUpAll` callback.\n'
-                'If async work cannot be avoided before declaring tests, '
-                'all async events must be complete before declaring the first test.'
-            : 'If async work is required before any tests are run '
-                'use a `setUpAll` callback.\n'
-                'If async work cannot be avoided before declaring tests it must '
-                'all be awaited within the Future returned from `main`.';
+    final restrictionMessage = _isStandalone
+        ? 'When running a test as an executable directly '
+              '(not as a suite by the test runner), '
+              'tests must be declared in a synchronous block.\n'
+              'If async work is required before any tests are run '
+              'use a `setUpAll` callback.\n'
+              'If async work cannot be avoided before declaring tests, '
+              'all async events must be complete before declaring the first test.'
+        : 'If async work is required before any tests are run '
+              'use a `setUpAll` callback.\n'
+              'If async work cannot be avoided before declaring tests it must '
+              'all be awaited within the Future returned from `main`.';
     throw StateError(
       "Can't call $name() once tests have begun running.\n"
       '$restrictionMessage',
diff --git a/pkgs/test_api/lib/src/backend/metadata.dart b/pkgs/test_api/lib/src/backend/metadata.dart
index bc3d38a..bf09eb4 100644
--- a/pkgs/test_api/lib/src/backend/metadata.dart
+++ b/pkgs/test_api/lib/src/backend/metadata.dart
@@ -228,8 +228,9 @@
        _chainStackTraces = chainStackTraces,
        _retry = retry,
        tags = UnmodifiableSetView(tags == null ? {} : tags.toSet()),
-       onPlatform =
-           onPlatform == null ? const {} : UnmodifiableMapView(onPlatform),
+       onPlatform = onPlatform == null
+           ? const {}
+           : UnmodifiableMapView(onPlatform),
        forTag = forTag == null ? const {} : UnmodifiableMapView(forTag) {
     if (retry != null) RangeError.checkNotNegative(retry, 'retry');
     _validateTags();
@@ -249,10 +250,9 @@
     Map<String, dynamic>? onPlatform,
     Object? /* String|Iterable<String> */ tags,
     this.languageVersionComment,
-  }) : testOn =
-           testOn == null
-               ? PlatformSelector.all
-               : PlatformSelector.parse(testOn),
+  }) : testOn = testOn == null
+           ? PlatformSelector.all
+           : PlatformSelector.parse(testOn),
        timeout = timeout ?? const Timeout.factor(1),
        _skip = skip == null ? null : skip != false,
        _verboseTrace = verboseTrace,
@@ -273,10 +273,9 @@
 
   /// Deserializes the result of [Metadata.serialize] into a new [Metadata].
   Metadata.deserialize(Map serialized)
-    : testOn =
-          serialized['testOn'] == null
-              ? PlatformSelector.all
-              : PlatformSelector.parse(serialized['testOn'] as String),
+    : testOn = serialized['testOn'] == null
+          ? PlatformSelector.all
+          : PlatformSelector.parse(serialized['testOn'] as String),
       timeout = _deserializeTimeout(serialized['timeout']),
       _skip = serialized['skip'] as bool?,
       skipReason = serialized['skipReason'] as String?,
@@ -311,11 +310,10 @@
   /// Throws an [ArgumentError] if any tags in [tags] aren't hyphenated
   /// identifiers.
   void _validateTags() {
-    var invalidTags =
-        tags
-            .where((tag) => !tag.contains(anchoredHyphenatedIdentifier))
-            .map((tag) => '"$tag"')
-            .toList();
+    var invalidTags = tags
+        .where((tag) => !tag.contains(anchoredHyphenatedIdentifier))
+        .map((tag) => '"$tag"')
+        .toList();
 
     if (invalidTags.isEmpty) return;
 
diff --git a/pkgs/test_api/lib/src/backend/remote_listener.dart b/pkgs/test_api/lib/src/backend/remote_listener.dart
index 1f58c25..27d638e 100644
--- a/pkgs/test_api/lib/src/backend/remote_listener.dart
+++ b/pkgs/test_api/lib/src/backend/remote_listener.dart
@@ -227,22 +227,20 @@
       'type': 'group',
       'name': group.name,
       'metadata': group.metadata.serialize(),
-      'trace':
-          group.trace == null
-              ? null
-              : StackTraceFormatter.current
-                      ?.formatStackTrace(group.trace!)
-                      .toString() ??
-                  group.trace?.toString(),
+      'trace': group.trace == null
+          ? null
+          : StackTraceFormatter.current
+                    ?.formatStackTrace(group.trace!)
+                    .toString() ??
+                group.trace?.toString(),
       'location': group.location?.serialize(),
       'setUpAll': _serializeTest(channel, group.setUpAll, parents),
       'tearDownAll': _serializeTest(channel, group.tearDownAll, parents),
-      'entries':
-          group.entries.map((entry) {
-            return entry is Group
-                ? _serializeGroup(channel, entry, parents)
-                : _serializeTest(channel, entry as Test, parents);
-          }).toList(),
+      'entries': group.entries.map((entry) {
+        return entry is Group
+            ? _serializeGroup(channel, entry, parents)
+            : _serializeTest(channel, entry as Test, parents);
+      }).toList(),
     };
   }
 
@@ -270,13 +268,12 @@
       'type': 'test',
       'name': test.name,
       'metadata': test.metadata.serialize(),
-      'trace':
-          test.trace == null
-              ? null
-              : StackTraceFormatter.current
-                      ?.formatStackTrace(test.trace!)
-                      .toString() ??
-                  test.trace?.toString(),
+      'trace': test.trace == null
+          ? null
+          : StackTraceFormatter.current
+                    ?.formatStackTrace(test.trace!)
+                    .toString() ??
+                test.trace?.toString(),
       'location': test.location?.serialize(),
       'channel': testChannel.id,
     };
diff --git a/pkgs/test_api/lib/src/backend/suite_platform.dart b/pkgs/test_api/lib/src/backend/suite_platform.dart
index 002eb39..241c432 100644
--- a/pkgs/test_api/lib/src/backend/suite_platform.dart
+++ b/pkgs/test_api/lib/src/backend/suite_platform.dart
@@ -54,10 +54,9 @@
     var map = serialized as Map;
     return SuitePlatform(
       Runtime.deserialize(map['runtime'] as Object),
-      compiler:
-          map.containsKey('compiler')
-              ? Compiler.deserialize(map['compiler'] as Object)
-              : null,
+      compiler: map.containsKey('compiler')
+          ? Compiler.deserialize(map['compiler'] as Object)
+          : null,
       os: OperatingSystem.find(map['os'] as String),
       inGoogle: map['inGoogle'] as bool,
     );
diff --git a/pkgs/test_api/pubspec.yaml b/pkgs/test_api/pubspec.yaml
index c5576cf..45f96af 100644
--- a/pkgs/test_api/pubspec.yaml
+++ b/pkgs/test_api/pubspec.yaml
@@ -7,7 +7,7 @@
 resolution: workspace
 
 environment:
-  sdk: ^3.7.0
+  sdk: ^3.10.0
 
 dependencies:
   async: ^2.5.0
diff --git a/pkgs/test_api/test/import_restrictions_test.dart b/pkgs/test_api/test/import_restrictions_test.dart
index f34e118..421c065 100644
--- a/pkgs/test_api/test/import_restrictions_test.dart
+++ b/pkgs/test_api/test/import_restrictions_test.dart
@@ -73,8 +73,9 @@
     final libPath = await _pathForUri(libUri);
     final packagePath = p.dirname(libPath);
 
-    final contexts =
-        AnalysisContextCollection(includedPaths: [packagePath]).contexts;
+    final contexts = AnalysisContextCollection(
+      includedPaths: [packagePath],
+    ).contexts;
     if (contexts.length != 1) {
       throw StateError('Expected to find exactly one context, got $contexts');
     }
diff --git a/pkgs/test_core/lib/src/bootstrap/vm.dart b/pkgs/test_core/lib/src/bootstrap/vm.dart
index 5e92cbc..a4eebe6 100644
--- a/pkgs/test_core/lib/src/bootstrap/vm.dart
+++ b/pkgs/test_core/lib/src/bootstrap/vm.dart
@@ -18,8 +18,8 @@
   var platformChannel = MultiChannel<Object?>(
     IsolateChannel<Object?>.connectSend(sendPort),
   );
-  var testControlChannel =
-      platformChannel.virtualChannel()..pipe(serializeSuite(getMain));
+  var testControlChannel = platformChannel.virtualChannel()
+    ..pipe(serializeSuite(getMain));
   platformChannel.sink.add(testControlChannel.id);
 
   platformChannel.stream.forEach((message) {
@@ -42,8 +42,8 @@
   }
   var socket = await Socket.connect(args[0], int.parse(args[1]));
   var platformChannel = MultiChannel<Object?>(jsonSocketStreamChannel(socket));
-  var testControlChannel =
-      platformChannel.virtualChannel()..pipe(serializeSuite(getMain));
+  var testControlChannel = platformChannel.virtualChannel()
+    ..pipe(serializeSuite(getMain));
   platformChannel.sink.add(testControlChannel.id);
 
   unawaited(
diff --git a/pkgs/test_core/lib/src/direct_run.dart b/pkgs/test_core/lib/src/direct_run.dart
index 56d8151..f2b1c20 100644
--- a/pkgs/test_core/lib/src/direct_run.dart
+++ b/pkgs/test_core/lib/src/direct_run.dart
@@ -69,14 +69,13 @@
   String? fullTestName,
   required bool allowDuplicateTestNames,
 }) async {
-  reporterFactory ??=
-      (engine) => ExpandedReporter.watch(
-        engine,
-        PrintSink(),
-        color: Configuration.empty.color,
-        printPath: false,
-        printPlatform: false,
-      );
+  reporterFactory ??= (engine) => ExpandedReporter.watch(
+    engine,
+    PrintSink(),
+    color: Configuration.empty.color,
+    printPath: false,
+    printPlatform: false,
+  );
   final declarer = Declarer(
     fullTestName: fullTestName,
     allowDuplicateTestNames: allowDuplicateTestNames,
@@ -91,10 +90,9 @@
     path: p.prettyUri(Uri.base),
   );
 
-  final engine =
-      Engine()
-        ..suiteSink.add(suite)
-        ..suiteSink.close();
+  final engine = Engine()
+    ..suiteSink.add(suite)
+    ..suiteSink.close();
 
   reporterFactory(engine);
 
diff --git a/pkgs/test_core/lib/src/executable.dart b/pkgs/test_core/lib/src/executable.dart
index 0a3dc44..750307d 100644
--- a/pkgs/test_core/lib/src/executable.dart
+++ b/pkgs/test_core/lib/src/executable.dart
@@ -61,16 +61,15 @@
   /// Signals will only be captured as long as this has an active subscription.
   /// Otherwise, they'll be handled by Dart's default signal handler, which
   /// terminates the program immediately.
-  final signals =
-      Platform.isWindows
-          ? ProcessSignal.sigint.watch()
-          : Platform
-              .isFuchsia // Signals don't exist on Fuchsia.
-          ? const Stream<Never>.empty()
-          : StreamGroup.merge([
-            ProcessSignal.sigterm.watch(),
-            ProcessSignal.sigint.watch(),
-          ]);
+  final signals = Platform.isWindows
+      ? ProcessSignal.sigint.watch()
+      : Platform
+            .isFuchsia // Signals don't exist on Fuchsia.
+      ? const Stream<Never>.empty()
+      : StreamGroup.merge([
+          ProcessSignal.sigterm.watch(),
+          ProcessSignal.sigint.watch(),
+        ]);
 
   Configuration configuration;
   try {
@@ -126,10 +125,9 @@
     return;
   }
 
-  var undefinedPresets =
-      configuration.chosenPresets
-          .where((preset) => !configuration.knownPresets.contains(preset))
-          .toList();
+  var undefinedPresets = configuration.chosenPresets
+      .where((preset) => !configuration.knownPresets.contains(preset))
+      .toList();
   if (undefinedPresets.isNotEmpty) {
     _printUsage(
       "Undefined ${pluralize('preset', undefinedPresets.length)} "
diff --git a/pkgs/test_core/lib/src/runner.dart b/pkgs/test_core/lib/src/runner.dart
index 7aedabb..455622f 100644
--- a/pkgs/test_core/lib/src/runner.dart
+++ b/pkgs/test_core/lib/src/runner.dart
@@ -125,8 +125,9 @@
     if (_config.pauseAfterLoad) {
       success = await _loadThenPause(suites);
     } else {
-      var subscription =
-          _suiteSubscription = suites.listen(_engine.suiteSink.add);
+      var subscription = _suiteSubscription = suites.listen(
+        _engine.suiteSink.add,
+      );
       var results = await Future.wait(<Future>[
         subscription.asFuture<void>().then((_) => _engine.suiteSink.close()),
         _engine.run(),
@@ -142,10 +143,9 @@
       if (_config.globalPatterns.isNotEmpty) {
         var patterns = toSentence(
           _config.globalPatterns.map(
-            (pattern) =>
-                pattern is RegExp
-                    ? 'regular expression "${pattern.pattern}"'
-                    : '"$pattern"',
+            (pattern) => pattern is RegExp
+                ? 'regular expression "${pattern.pattern}"'
+                : '"$pattern"',
           ),
         );
         throw NoTestsFoundException('No tests match $patterns.');
@@ -171,14 +171,11 @@
     var testOn = _config.suiteDefaults.metadata.testOn;
     if (testOn == PlatformSelector.all) return;
 
-    var unsupportedRuntimes =
-        _config.suiteDefaults.runtimes
-            .map(_loader.findRuntime)
-            .whereType<Runtime>()
-            .where(
-              (runtime) => !testOn.evaluate(currentPlatform(runtime, null)),
-            )
-            .toList();
+    var unsupportedRuntimes = _config.suiteDefaults.runtimes
+        .map(_loader.findRuntime)
+        .whereType<Runtime>()
+        .where((runtime) => !testOn.evaluate(currentPlatform(runtime, null)))
+        .toList();
 
     if (unsupportedRuntimes.isEmpty) return;
 
@@ -422,13 +419,12 @@
     var bold = _config.color ? '\u001b[1m' : '';
     var noColor = _config.color ? '\u001b[0m' : '';
 
-    var buffer =
-        StringBuffer()
-          ..write('${yellow}Warning:$noColor ')
-          ..write(unknownTags.length == 1 ? 'A tag was ' : 'Tags were ')
-          ..write('used that ')
-          ..write(unknownTags.length == 1 ? "wasn't " : "weren't ")
-          ..writeln('specified in dart_test.yaml.');
+    var buffer = StringBuffer()
+      ..write('${yellow}Warning:$noColor ')
+      ..write(unknownTags.length == 1 ? 'A tag was ' : 'Tags were ')
+      ..write('used that ')
+      ..write(unknownTags.length == 1 ? "wasn't " : "weren't ")
+      ..writeln('specified in dart_test.yaml.');
 
     unknownTags.forEach((tag, entries) {
       buffer.write('  $bold$tag$noColor was used in');
@@ -513,14 +509,16 @@
   /// Loads each suite in [suites] in order, pausing after load for runtimes
   /// that support debugging.
   Future<bool> _loadThenPause(Stream<LoadSuite> suites) async {
-    var subscription =
-        _suiteSubscription = suites
-            .asyncMap((loadSuite) async {
-              var operation =
-                  _debugOperation = debug(_engine, _reporter, loadSuite);
-              await operation.valueOrCancellation();
-            })
-            .listen(null);
+    var subscription = _suiteSubscription = suites
+        .asyncMap((loadSuite) async {
+          var operation = _debugOperation = debug(
+            _engine,
+            _reporter,
+            loadSuite,
+          );
+          await operation.valueOrCancellation();
+        })
+        .listen(null);
 
     var results = await Future.wait(<Future>[
       subscription.asFuture<void>().then((_) => _engine.suiteSink.close()),
diff --git a/pkgs/test_core/lib/src/runner/configuration.dart b/pkgs/test_core/lib/src/runner/configuration.dart
index e218eb1..3f432ad 100644
--- a/pkgs/test_core/lib/src/runner/configuration.dart
+++ b/pkgs/test_core/lib/src/runner/configuration.dart
@@ -197,11 +197,10 @@
   /// All preset names that are known to be valid.
   ///
   /// This includes presets that have already been resolved.
-  Set<String> get knownPresets =>
-      _knownPresets ??= UnmodifiableSetView({
-        ...presets.keys,
-        for (var configuration in presets.values) ...configuration.knownPresets,
-      });
+  Set<String> get knownPresets => _knownPresets ??= UnmodifiableSetView({
+    ...presets.keys,
+    for (var configuration in presets.values) ...configuration.knownPresets,
+  });
   Set<String>? _knownPresets;
 
   /// Built-in runtimes whose settings are overridden by the user.
@@ -832,10 +831,9 @@
        fileReporters = fileReporters ?? {},
        _branchCoverage = branchCoverage,
        _concurrency = concurrency,
-       _testSelections =
-           testSelections == null || testSelections.isEmpty
-               ? null
-               : Map.unmodifiable(testSelections),
+       _testSelections = testSelections == null || testSelections.isEmpty
+           ? null
+           : Map.unmodifiable(testSelections),
        _foldTraceExcept = _set(foldTraceExcept),
        _foldTraceOnly = _set(foldTraceOnly),
        _filename = filename,
@@ -846,10 +844,9 @@
        _noRetry = noRetry,
        includeTags = includeTags ?? BooleanSelector.all,
        excludeTags = excludeTags ?? BooleanSelector.none,
-       globalPatterns =
-           globalPatterns == null
-               ? const {}
-               : UnmodifiableSetView(globalPatterns.toSet()),
+       globalPatterns = globalPatterns == null
+           ? const {}
+           : UnmodifiableSetView(globalPatterns.toSet()),
        _stopOnFirstFailure = stopOnFirstFailure,
        suiteDefaults = (() {
          var config = suiteDefaults ?? SuiteConfiguration.empty;
@@ -1014,12 +1011,11 @@
       overrideRuntimes: mergeUnmodifiableMaps(
         overrideRuntimes,
         other.overrideRuntimes,
-        value:
-            (settings1, settings2) => RuntimeSettings(
-              settings1.identifier,
-              settings1.identifierSpan,
-              [...settings1.settings, ...settings2.settings],
-            ),
+        value: (settings1, settings2) => RuntimeSettings(
+          settings1.identifier,
+          settings1.identifierSpan,
+          [...settings1.settings, ...settings2.settings],
+        ),
       ),
       defineRuntimes: mergeUnmodifiableMaps(
         defineRuntimes,
diff --git a/pkgs/test_core/lib/src/runner/configuration/args.dart b/pkgs/test_core/lib/src/runner/configuration/args.dart
index 201ed86..1714784 100644
--- a/pkgs/test_core/lib/src/runner/configuration/args.dart
+++ b/pkgs/test_core/lib/src/runner/configuration/args.dart
@@ -18,284 +18,282 @@
 import 'values.dart';
 
 /// The parser used to parse the command-line arguments.
-final ArgParser _parser =
-    (() {
-      var parser = ArgParser(allowTrailingOptions: true);
+final ArgParser _parser = (() {
+  var parser = ArgParser(allowTrailingOptions: true);
 
-      var allRuntimes = Runtime.builtIn.toList()..remove(Runtime.vm);
-      if (!Platform.isMacOS) allRuntimes.remove(Runtime.safari);
+  var allRuntimes = Runtime.builtIn.toList()..remove(Runtime.vm);
+  if (!Platform.isMacOS) allRuntimes.remove(Runtime.safari);
 
-      parser.addFlag(
-        'help',
-        abbr: 'h',
-        negatable: false,
-        help: 'Show this usage information.',
-      );
-      parser.addFlag(
-        'version',
-        negatable: false,
-        help: 'Show the package:test version.',
-      );
+  parser.addFlag(
+    'help',
+    abbr: 'h',
+    negatable: false,
+    help: 'Show this usage information.',
+  );
+  parser.addFlag(
+    'version',
+    negatable: false,
+    help: 'Show the package:test version.',
+  );
 
-      // Note that defaultsTo declarations here are only for documentation purposes.
-      // We pass null instead of the default so that it merges properly with the
-      // config file.
+  // Note that defaultsTo declarations here are only for documentation purposes.
+  // We pass null instead of the default so that it merges properly with the
+  // config file.
 
-      parser.addSeparator('Selecting Tests:');
-      parser.addMultiOption(
-        'name',
-        abbr: 'n',
-        help:
-            'A substring of the name of the test to run.\n'
-            'Regular expression syntax is supported.\n'
-            'If passed multiple times, tests must match all substrings.',
-        splitCommas: false,
-      );
-      parser.addMultiOption(
-        'plain-name',
-        abbr: 'N',
-        help:
-            'A plain-text substring of the name of the test to run.\n'
-            'If passed multiple times, tests must match all substrings.',
-        splitCommas: false,
-      );
-      parser.addMultiOption(
-        'tags',
-        abbr: 't',
-        help:
-            'Run only tests with all of the specified tags.\n'
-            'Supports boolean selector syntax.',
-      );
-      parser.addMultiOption('tag', hide: true);
-      parser.addMultiOption(
-        'exclude-tags',
-        abbr: 'x',
-        help:
-            "Don't run tests with any of the specified tags.\n"
-            'Supports boolean selector syntax.',
-      );
-      parser.addMultiOption('exclude-tag', hide: true);
-      parser.addFlag(
-        'run-skipped',
-        help: 'Run skipped tests instead of skipping them.',
-      );
+  parser.addSeparator('Selecting Tests:');
+  parser.addMultiOption(
+    'name',
+    abbr: 'n',
+    help:
+        'A substring of the name of the test to run.\n'
+        'Regular expression syntax is supported.\n'
+        'If passed multiple times, tests must match all substrings.',
+    splitCommas: false,
+  );
+  parser.addMultiOption(
+    'plain-name',
+    abbr: 'N',
+    help:
+        'A plain-text substring of the name of the test to run.\n'
+        'If passed multiple times, tests must match all substrings.',
+    splitCommas: false,
+  );
+  parser.addMultiOption(
+    'tags',
+    abbr: 't',
+    help:
+        'Run only tests with all of the specified tags.\n'
+        'Supports boolean selector syntax.',
+  );
+  parser.addMultiOption('tag', hide: true);
+  parser.addMultiOption(
+    'exclude-tags',
+    abbr: 'x',
+    help:
+        "Don't run tests with any of the specified tags.\n"
+        'Supports boolean selector syntax.',
+  );
+  parser.addMultiOption('exclude-tag', hide: true);
+  parser.addFlag(
+    'run-skipped',
+    help: 'Run skipped tests instead of skipping them.',
+  );
 
-      parser.addSeparator('Running Tests:');
+  parser.addSeparator('Running Tests:');
 
-      // The UI term "platform" corresponds with the implementation term "runtime".
-      // The [Runtime] class used to be called [TestPlatform], but it was changed to
-      // avoid conflicting with [SuitePlatform]. We decided not to also change the
-      // UI to avoid a painful migration.
-      parser.addMultiOption(
-        'platform',
-        abbr: 'p',
-        help:
-            'The platform(s) on which to run the tests.\n'
-            '[vm (default), '
-            '${allRuntimes.map((runtime) => runtime.identifier).join(", ")}].\n'
-            'Each platform supports the following compilers:\n'
-            '${Runtime.vm.supportedCompilersText}\n'
-            '${allRuntimes.map((r) => r.supportedCompilersText).join('\n')}',
-      );
-      parser.addMultiOption(
-        'compiler',
-        abbr: 'c',
-        help:
-            'The compiler(s) to use to run tests, supported compilers are '
-            '[${Compiler.builtIn.map((c) => c.identifier).join(', ')}].\n'
-            'Each platform has a default compiler but may support other '
-            'compilers.\n'
-            'You can target a compiler to a specific platform using arguments '
-            'of the following form [<platform-selector>:]<compiler>.\n'
-            'If a platform is specified but no given compiler is supported for '
-            'that platform, then it will use its default compiler.',
-      );
-      parser.addMultiOption(
-        'preset',
-        abbr: 'P',
-        help: 'The configuration preset(s) to use.',
-      );
-      parser.addOption(
-        'concurrency',
-        abbr: 'j',
-        help: 'The number of concurrent test suites run.',
-        defaultsTo: defaultConcurrency.toString(),
-        valueHelp: 'threads',
-      );
-      parser.addOption(
-        'total-shards',
-        help: 'The total number of invocations of the test runner being run.',
-      );
-      parser.addOption(
-        'shard-index',
-        help: 'The index of this test runner invocation (of --total-shards).',
-      );
-      parser.addOption(
-        'pub-serve',
-        help: '[Removed] The port of a pub serve instance serving "test/".',
-        valueHelp: 'port',
-        hide: true,
-      );
-      parser.addOption(
-        'timeout',
-        help: 'The default test timeout. For example: 15s, 2x, none',
-        defaultsTo: '30s',
-      );
-      parser.addOption(
-        'suite-load-timeout',
-        help:
-            'The timeout for loading a test suite. Loading the test suite '
-            'includes compiling the test suite. For example: 15s, 2m, none',
-        defaultsTo: 'none',
-      );
-      parser.addFlag(
-        'ignore-timeouts',
-        help: 'Ignore all timeouts (useful if debugging)',
-        negatable: false,
-      );
-      parser.addFlag(
-        'pause-after-load',
-        help:
-            'Pause for debugging before any tests execute.\n'
-            'Implies --concurrency=1, --debug, and --ignore-timeouts.\n'
-            'Currently only supported for browser tests.',
-        negatable: false,
-      );
-      parser.addFlag(
-        'debug',
-        help: 'Run the VM and Chrome tests in debug mode.',
-        negatable: false,
-      );
-      parser.addOption(
-        'coverage',
-        help:
-            'Gather coverage and output it to the specified directory.\n'
-            'Implies --debug.',
-        valueHelp: 'directory',
-      );
-      parser.addOption(
-        'coverage-path',
-        help:
-            'Gather coverage and output an lcov report to the specified file.\n'
-            'Implies --debug.',
-        valueHelp: 'file',
-      );
-      parser.addFlag(
-        'branch-coverage',
-        help:
-            'Include branch coverage information in the coverage report.\n'
-            'Must be paired with --coverage or --coverage-path.',
-        negatable: false,
-      );
-      parser.addMultiOption(
-        'coverage-package',
-        help:
-            'A regular expression matching packages names to include in\n'
-            'the coverage report (if coverage is enabled). If unset,\n'
-            'matches the current package name.',
-        valueHelp: 'regexp',
-        splitCommas: false,
-      );
-      parser.addFlag(
-        'chain-stack-traces',
-        help:
-            'Use chained stack traces to provide greater exception details\n'
-            'especially for asynchronous code. It may be useful to disable\n'
-            'to provide improved test performance but at the cost of\n'
-            'debuggability.',
-        defaultsTo: false,
-      );
-      parser.addFlag(
-        'no-retry',
-        help: "Don't rerun tests that have retry set.",
-        defaultsTo: false,
-        negatable: false,
-      );
-      parser.addFlag(
-        'use-data-isolate-strategy',
-        help:
-            '**DEPRECATED**: This is now just an alias for --compiler source.',
-        defaultsTo: false,
-        hide: true,
-        negatable: false,
-      );
-      parser.addOption(
-        'test-randomize-ordering-seed',
-        help:
-            'Use the specified seed to randomize the execution order of test'
-            ' cases.\n'
-            'Must be a 32bit unsigned integer or "random".\n'
-            'If "random", pick a random seed to use.\n'
-            'If not passed, do not randomize test case execution order.',
-      );
-      parser.addFlag(
-        'fail-fast',
-        help: 'Stop running tests after the first failure.\n',
-      );
+  // The UI term "platform" corresponds with the implementation term "runtime".
+  // The [Runtime] class used to be called [TestPlatform], but it was changed to
+  // avoid conflicting with [SuitePlatform]. We decided not to also change the
+  // UI to avoid a painful migration.
+  parser.addMultiOption(
+    'platform',
+    abbr: 'p',
+    help:
+        'The platform(s) on which to run the tests.\n'
+        '[vm (default), '
+        '${allRuntimes.map((runtime) => runtime.identifier).join(", ")}].\n'
+        'Each platform supports the following compilers:\n'
+        '${Runtime.vm.supportedCompilersText}\n'
+        '${allRuntimes.map((r) => r.supportedCompilersText).join('\n')}',
+  );
+  parser.addMultiOption(
+    'compiler',
+    abbr: 'c',
+    help:
+        'The compiler(s) to use to run tests, supported compilers are '
+        '[${Compiler.builtIn.map((c) => c.identifier).join(', ')}].\n'
+        'Each platform has a default compiler but may support other '
+        'compilers.\n'
+        'You can target a compiler to a specific platform using arguments '
+        'of the following form [<platform-selector>:]<compiler>.\n'
+        'If a platform is specified but no given compiler is supported for '
+        'that platform, then it will use its default compiler.',
+  );
+  parser.addMultiOption(
+    'preset',
+    abbr: 'P',
+    help: 'The configuration preset(s) to use.',
+  );
+  parser.addOption(
+    'concurrency',
+    abbr: 'j',
+    help: 'The number of concurrent test suites run.',
+    defaultsTo: defaultConcurrency.toString(),
+    valueHelp: 'threads',
+  );
+  parser.addOption(
+    'total-shards',
+    help: 'The total number of invocations of the test runner being run.',
+  );
+  parser.addOption(
+    'shard-index',
+    help: 'The index of this test runner invocation (of --total-shards).',
+  );
+  parser.addOption(
+    'pub-serve',
+    help: '[Removed] The port of a pub serve instance serving "test/".',
+    valueHelp: 'port',
+    hide: true,
+  );
+  parser.addOption(
+    'timeout',
+    help: 'The default test timeout. For example: 15s, 2x, none',
+    defaultsTo: '30s',
+  );
+  parser.addOption(
+    'suite-load-timeout',
+    help:
+        'The timeout for loading a test suite. Loading the test suite '
+        'includes compiling the test suite. For example: 15s, 2m, none',
+    defaultsTo: 'none',
+  );
+  parser.addFlag(
+    'ignore-timeouts',
+    help: 'Ignore all timeouts (useful if debugging)',
+    negatable: false,
+  );
+  parser.addFlag(
+    'pause-after-load',
+    help:
+        'Pause for debugging before any tests execute.\n'
+        'Implies --concurrency=1, --debug, and --ignore-timeouts.\n'
+        'Currently only supported for browser tests.',
+    negatable: false,
+  );
+  parser.addFlag(
+    'debug',
+    help: 'Run the VM and Chrome tests in debug mode.',
+    negatable: false,
+  );
+  parser.addOption(
+    'coverage',
+    help:
+        'Gather coverage and output it to the specified directory.\n'
+        'Implies --debug.',
+    valueHelp: 'directory',
+  );
+  parser.addOption(
+    'coverage-path',
+    help:
+        'Gather coverage and output an lcov report to the specified file.\n'
+        'Implies --debug.',
+    valueHelp: 'file',
+  );
+  parser.addFlag(
+    'branch-coverage',
+    help:
+        'Include branch coverage information in the coverage report.\n'
+        'Must be paired with --coverage or --coverage-path.',
+    negatable: false,
+  );
+  parser.addMultiOption(
+    'coverage-package',
+    help:
+        'A regular expression matching packages names to include in\n'
+        'the coverage report (if coverage is enabled). If unset,\n'
+        'matches the current package name.',
+    valueHelp: 'regexp',
+    splitCommas: false,
+  );
+  parser.addFlag(
+    'chain-stack-traces',
+    help:
+        'Use chained stack traces to provide greater exception details\n'
+        'especially for asynchronous code. It may be useful to disable\n'
+        'to provide improved test performance but at the cost of\n'
+        'debuggability.',
+    defaultsTo: false,
+  );
+  parser.addFlag(
+    'no-retry',
+    help: "Don't rerun tests that have retry set.",
+    defaultsTo: false,
+    negatable: false,
+  );
+  parser.addFlag(
+    'use-data-isolate-strategy',
+    help: '**DEPRECATED**: This is now just an alias for --compiler source.',
+    defaultsTo: false,
+    hide: true,
+    negatable: false,
+  );
+  parser.addOption(
+    'test-randomize-ordering-seed',
+    help:
+        'Use the specified seed to randomize the execution order of test'
+        ' cases.\n'
+        'Must be a 32bit unsigned integer or "random".\n'
+        'If "random", pick a random seed to use.\n'
+        'If not passed, do not randomize test case execution order.',
+  );
+  parser.addFlag(
+    'fail-fast',
+    help: 'Stop running tests after the first failure.\n',
+  );
 
-      var reporterDescriptions = <String, String>{
-        for (final MapEntry(:key, :value) in allReporters.entries)
-          key: value.description,
-      };
+  var reporterDescriptions = <String, String>{
+    for (final MapEntry(:key, :value) in allReporters.entries)
+      key: value.description,
+  };
 
-      parser.addSeparator('Output:');
-      parser.addOption(
-        'reporter',
-        abbr: 'r',
-        help: 'Set how to print test results.',
-        defaultsTo: defaultReporter,
-        allowed: allReporters.keys,
-        allowedHelp: reporterDescriptions,
-        valueHelp: 'option',
-      );
-      parser.addOption(
-        'file-reporter',
-        help:
-            'Enable an additional reporter writing test results to a file.\n'
-            'Should be in the form <reporter>:<filepath>, '
-            'Example: "json:reports/tests.json"',
-      );
-      parser.addFlag(
-        'verbose-trace',
-        negatable: false,
-        help: 'Emit stack traces with core library frames.',
-      );
-      parser.addFlag(
-        'js-trace',
-        negatable: false,
-        help: 'Emit raw JavaScript stack traces for browser tests.',
-      );
-      parser.addFlag(
-        'color',
-        help: 'Use terminal colors.\n(auto-detected by default)',
-      );
+  parser.addSeparator('Output:');
+  parser.addOption(
+    'reporter',
+    abbr: 'r',
+    help: 'Set how to print test results.',
+    defaultsTo: defaultReporter,
+    allowed: allReporters.keys,
+    allowedHelp: reporterDescriptions,
+    valueHelp: 'option',
+  );
+  parser.addOption(
+    'file-reporter',
+    help:
+        'Enable an additional reporter writing test results to a file.\n'
+        'Should be in the form <reporter>:<filepath>, '
+        'Example: "json:reports/tests.json"',
+  );
+  parser.addFlag(
+    'verbose-trace',
+    negatable: false,
+    help: 'Emit stack traces with core library frames.',
+  );
+  parser.addFlag(
+    'js-trace',
+    negatable: false,
+    help: 'Emit raw JavaScript stack traces for browser tests.',
+  );
+  parser.addFlag(
+    'color',
+    help: 'Use terminal colors.\n(auto-detected by default)',
+  );
 
-      /// The following options are used only by the internal Google test runner.
-      /// They're hidden and not supported as stable API surface outside Google.
+  /// The following options are used only by the internal Google test runner.
+  /// They're hidden and not supported as stable API surface outside Google.
 
-      parser.addOption(
-        'configuration',
-        help: 'The path to the configuration file.',
-        hide: true,
-      );
-      parser.addMultiOption(
-        'dart2js-args',
-        help: 'Extra arguments to pass to dart2js.',
-        hide: true,
-      );
+  parser.addOption(
+    'configuration',
+    help: 'The path to the configuration file.',
+    hide: true,
+  );
+  parser.addMultiOption(
+    'dart2js-args',
+    help: 'Extra arguments to pass to dart2js.',
+    hide: true,
+  );
 
-      // If we're running test/dir/my_test.dart, we'll look for
-      // test/dir/my_test.dart.html in the precompiled directory.
-      parser.addOption(
-        'precompiled',
-        help:
-            'The path to a mirror of the package directory containing HTML '
-            'that points to precompiled JS.',
-        hide: true,
-      );
+  // If we're running test/dir/my_test.dart, we'll look for
+  // test/dir/my_test.dart.html in the precompiled directory.
+  parser.addOption(
+    'precompiled',
+    help:
+        'The path to a mirror of the package directory containing HTML '
+        'that points to precompiled JS.',
+    hide: true,
+  );
 
-      return parser;
-    })();
+  return parser;
+})();
 
 /// The usage string for the command-line arguments.
 String get usage => _parser.usage;
@@ -330,13 +328,12 @@
     );
   }
   final selection = TestSelection(
-    testPatterns:
-        fullName != null
-            ? {RegExp('^${RegExp.escape(fullName)}\$')}
-            : {
-              if (names != null)
-                for (var name in names) RegExp(name),
-            },
+    testPatterns: fullName != null
+        ? {RegExp('^${RegExp.escape(fullName)}\$')}
+        : {
+            if (names != null)
+              for (var name in names) RegExp(name),
+          },
     line: line == null ? null : int.parse(line),
     col: col == null ? null : int.parse(col),
   );
@@ -367,19 +364,18 @@
       ..._readMulti('plain-name'),
     ];
 
-    var includeTags = {
-      ..._readMulti('tags'),
-      ..._readMulti('tag'),
-    }.fold<BooleanSelector>(BooleanSelector.all, (selector, tag) {
-      return selector.intersection(BooleanSelector.parse(tag));
-    });
+    var includeTags = {..._readMulti('tags'), ..._readMulti('tag')}
+        .fold<BooleanSelector>(BooleanSelector.all, (selector, tag) {
+          return selector.intersection(BooleanSelector.parse(tag));
+        });
 
-    var excludeTags = {
-      ..._readMulti('exclude-tags'),
-      ..._readMulti('exclude-tag'),
-    }.fold<BooleanSelector>(BooleanSelector.none, (selector, tag) {
-      return selector.union(BooleanSelector.parse(tag));
-    });
+    var excludeTags =
+        {
+          ..._readMulti('exclude-tags'),
+          ..._readMulti('exclude-tag'),
+        }.fold<BooleanSelector>(BooleanSelector.none, (selector, tag) {
+          return selector.union(BooleanSelector.parse(tag));
+        });
 
     var shardIndex = _parseOption('shard-index', int.parse);
     var totalShards = _parseOption('total-shards', int.parse);
@@ -402,10 +398,9 @@
     var testRandomizeOrderingSeed = _parseOption(
       'test-randomize-ordering-seed',
       (value) {
-        var seed =
-            value == 'random'
-                ? Random().nextInt(4294967295)
-                : int.parse(value).toUnsigned(32);
+        var seed = value == 'random'
+            ? Random().nextInt(4294967295)
+            : int.parse(value).toUnsigned(32);
 
         // TODO(#1547): Less hacky way of not breaking the json reporter
         if (reporter != 'json') {
@@ -420,12 +415,12 @@
 
     var color = _ifParsed<bool>('color') ?? canUseSpecialChars;
 
-    var runtimes =
-        _ifParsed<List<String>>('platform')?.map(RuntimeSelection.new).toList();
-    var compilerSelections =
-        _ifParsed<List<String>>(
-          'compiler',
-        )?.map(CompilerSelection.parse).toList();
+    var runtimes = _ifParsed<List<String>>(
+      'platform',
+    )?.map(RuntimeSelection.new).toList();
+    var compilerSelections = _ifParsed<List<String>>(
+      'compiler',
+    )?.map(CompilerSelection.parse).toList();
     if (_ifParsed<bool>('use-data-isolate-strategy') == true) {
       compilerSelections ??= [];
       compilerSelections.add(CompilerSelection.parse('vm:source'));
diff --git a/pkgs/test_core/lib/src/runner/configuration/load.dart b/pkgs/test_core/lib/src/runner/configuration/load.dart
index 31a4dee..a8dc882 100644
--- a/pkgs/test_core/lib/src/runner/configuration/load.dart
+++ b/pkgs/test_core/lib/src/runner/configuration/load.dart
@@ -138,18 +138,13 @@
 
     var onPlatform = _getMap(
       'on_platform',
-      key:
-          (keyNode) => _parseNode(
-            keyNode,
-            'on_platform key',
-            (value) => PlatformSelector.parse(value, keyNode.span),
-          ),
-      value:
-          (valueNode) => _nestedConfig(
-            valueNode,
-            'on_platform value',
-            runnerConfig: false,
-          ),
+      key: (keyNode) => _parseNode(
+        keyNode,
+        'on_platform key',
+        (value) => PlatformSelector.parse(value, keyNode.span),
+      ),
+      value: (valueNode) =>
+          _nestedConfig(valueNode, 'on_platform value', runnerConfig: false),
     );
 
     var onOS = _getMap(
@@ -179,18 +174,22 @@
       value: (valueNode) => _nestedConfig(valueNode, 'presets value'),
     );
 
-    var config = Configuration.globalTest(
-      verboseTrace: verboseTrace,
-      jsTrace: jsTrace,
-      timeout: timeout,
-      suiteLoadTimeout: suiteLoadTimeout,
-      presets: presets,
-      chainStackTraces: chainStackTraces,
-      foldTraceExcept: foldStackFrames['except'],
-      foldTraceOnly: foldStackFrames['only'],
-    ).merge(
-      _extractPresets<PlatformSelector>(onPlatform, Configuration.onPlatform),
-    );
+    var config =
+        Configuration.globalTest(
+          verboseTrace: verboseTrace,
+          jsTrace: jsTrace,
+          timeout: timeout,
+          suiteLoadTimeout: suiteLoadTimeout,
+          presets: presets,
+          chainStackTraces: chainStackTraces,
+          foldTraceExcept: foldStackFrames['except'],
+          foldTraceOnly: foldStackFrames['only'],
+        ).merge(
+          _extractPresets<PlatformSelector>(
+            onPlatform,
+            Configuration.onPlatform,
+          ),
+        );
 
     var osConfig = onOS[currentOS];
     return osConfig == null ? config : config.merge(osConfig);
@@ -237,9 +236,8 @@
     var tags = _getMap(
       'tags',
       key: (keyNode) => _parseNode(keyNode, 'tags key', BooleanSelector.parse),
-      value:
-          (valueNode) =>
-              _nestedConfig(valueNode, 'tag value', runnerConfig: false),
+      value: (valueNode) =>
+          _nestedConfig(valueNode, 'tag value', runnerConfig: false),
     );
 
     var retry = _getNonNegativeInt('retry');
@@ -403,19 +401,24 @@
       return Configuration.empty;
     }
 
-    var patterns = _getList('names', (nameNode) {
-      _validate(nameNode, 'Names must be strings.', (value) => value is String);
-      return _parseNode(nameNode, 'name', RegExp.new);
-    })..addAll(
-      _getList('plain_names', (nameNode) {
-        _validate(
-          nameNode,
-          'Names must be strings.',
-          (value) => value is String,
+    var patterns =
+        _getList('names', (nameNode) {
+          _validate(
+            nameNode,
+            'Names must be strings.',
+            (value) => value is String,
+          );
+          return _parseNode(nameNode, 'name', RegExp.new);
+        })..addAll(
+          _getList('plain_names', (nameNode) {
+            _validate(
+              nameNode,
+              'Names must be strings.',
+              (value) => value is String,
+            );
+            return _parseNode(nameNode, 'name', RegExp.new);
+          }),
         );
-        return _parseNode(nameNode, 'name', RegExp.new);
-      }),
-    );
 
     var paths = _getList('paths', (pathNode) {
       _validate(pathNode, 'Paths must be strings.', (value) => value is String);
diff --git a/pkgs/test_core/lib/src/runner/configuration/reporters.dart b/pkgs/test_core/lib/src/runner/configuration/reporters.dart
index 35768ce..1f8a1fd 100644
--- a/pkgs/test_core/lib/src/runner/configuration/reporters.dart
+++ b/pkgs/test_core/lib/src/runner/configuration/reporters.dart
@@ -100,14 +100,13 @@
   ),
 };
 
-final defaultReporter =
-    inTestTests
-        ? 'expanded'
-        : inGithubContext
-        ? 'github'
-        : canUseSpecialChars
-        ? 'compact'
-        : 'expanded';
+final defaultReporter = inTestTests
+    ? 'expanded'
+    : inGithubContext
+    ? 'github'
+    : canUseSpecialChars
+    ? 'compact'
+    : 'expanded';
 
 /// **Do not call this function without express permission from the test package
 /// authors**.
diff --git a/pkgs/test_core/lib/src/runner/console.dart b/pkgs/test_core/lib/src/runner/console.dart
index 469489d..0094e3b 100644
--- a/pkgs/test_core/lib/src/runner/console.dart
+++ b/pkgs/test_core/lib/src/runner/console.dart
@@ -107,5 +107,8 @@
   }
 }
 
-typedef _Command =
-    ({String name, String description, FutureOr<void> Function() body});
+typedef _Command = ({
+  String name,
+  String description,
+  FutureOr<void> Function() body,
+});
diff --git a/pkgs/test_core/lib/src/runner/coverage_stub.dart b/pkgs/test_core/lib/src/runner/coverage_stub.dart
index e7d0bba..d7973f4 100644
--- a/pkgs/test_core/lib/src/runner/coverage_stub.dart
+++ b/pkgs/test_core/lib/src/runner/coverage_stub.dart
@@ -7,10 +7,9 @@
 Future<Coverage> writeCoverage(
   String? coveragePath,
   LiveSuiteController controller,
-) =>
-    throw UnsupportedError(
-      'Coverage is only supported through the test runner.',
-    );
+) => throw UnsupportedError(
+  'Coverage is only supported through the test runner.',
+);
 
 Future<void> writeCoverageLcov(String coverageLcov, Coverage allCoverageData) =>
     throw UnsupportedError(
@@ -20,8 +19,7 @@
 typedef Coverage = Map<String, void>;
 
 extension Merge on Coverage {
-  void merge(Coverage other) =>
-      throw UnsupportedError(
-        'Coverage is only supported through the test runner.',
-      );
+  void merge(Coverage other) => throw UnsupportedError(
+    'Coverage is only supported through the test runner.',
+  );
 }
diff --git a/pkgs/test_core/lib/src/runner/environment.dart b/pkgs/test_core/lib/src/runner/environment.dart
index d158a30..58033d2 100644
--- a/pkgs/test_core/lib/src/runner/environment.dart
+++ b/pkgs/test_core/lib/src/runner/environment.dart
@@ -50,8 +50,7 @@
   Uri? get remoteDebuggerUrl => null;
 
   @override
-  CancelableOperation displayPause() =>
-      throw UnsupportedError(
-        'PluginEnvironment.displayPause is not supported.',
-      );
+  CancelableOperation displayPause() => throw UnsupportedError(
+    'PluginEnvironment.displayPause is not supported.',
+  );
 }
diff --git a/pkgs/test_core/lib/src/runner/parse_metadata.dart b/pkgs/test_core/lib/src/runner/parse_metadata.dart
index 95434b3..ad5773b 100644
--- a/pkgs/test_core/lib/src/runner/parse_metadata.dart
+++ b/pkgs/test_core/lib/src/runner/parse_metadata.dart
@@ -76,17 +76,16 @@
 
     // We explicitly *don't* just look for "package:test" imports here,
     // because it could be re-exported from another library.
-    _prefixes =
-        directives
-            .map((directive) {
-              if (directive is ImportDirective) {
-                return directive.prefix?.name;
-              } else {
-                return null;
-              }
-            })
-            .whereType<String>()
-            .toSet();
+    _prefixes = directives
+        .map((directive) {
+          if (directive is ImportDirective) {
+            return directive.prefix?.name;
+          } else {
+            return null;
+          }
+        })
+        .whereType<String>()
+        .toSet();
   }
 
   /// Parses the metadata.
@@ -386,10 +385,9 @@
       className = identifier.prefix.name;
       namedConstructor = identifier.identifier.name;
     } else {
-      className =
-          identifier is PrefixedIdentifier
-              ? identifier.identifier.name
-              : identifier.name;
+      className = identifier is PrefixedIdentifier
+          ? identifier.identifier.name
+          : identifier.name;
       if (constructorName != null) namedConstructor = constructorName.name;
     }
     return (className, namedConstructor);
diff --git a/pkgs/test_core/lib/src/runner/plugin/environment.dart b/pkgs/test_core/lib/src/runner/plugin/environment.dart
index cfcc746..171d1e6 100644
--- a/pkgs/test_core/lib/src/runner/plugin/environment.dart
+++ b/pkgs/test_core/lib/src/runner/plugin/environment.dart
@@ -24,8 +24,7 @@
   Uri? get remoteDebuggerUrl => null;
 
   @override
-  CancelableOperation displayPause() =>
-      throw UnsupportedError(
-        'PluginEnvironment.displayPause is not supported.',
-      );
+  CancelableOperation displayPause() => throw UnsupportedError(
+    'PluginEnvironment.displayPause is not supported.',
+  );
 }
diff --git a/pkgs/test_core/lib/src/runner/plugin/platform_helpers.dart b/pkgs/test_core/lib/src/runner/plugin/platform_helpers.dart
index 7fef47f..c0234a8 100644
--- a/pkgs/test_core/lib/src/runner/plugin/platform_helpers.dart
+++ b/pkgs/test_core/lib/src/runner/plugin/platform_helpers.dart
@@ -148,18 +148,18 @@
   /// Deserializes [group] into a concrete [Group].
   Group deserializeGroup(Map group) {
     var metadata = Metadata.deserialize(group['metadata'] as Map);
-    var trace =
-        group['trace'] == null ? null : Trace.parse(group['trace'] as String);
+    var trace = group['trace'] == null
+        ? null
+        : Trace.parse(group['trace'] as String);
     var location = switch (group['location']) {
       Map map => TestLocation.deserialize(map),
       _ => null,
     };
-    var entries =
-        (group['entries'] as List).map((entry) {
-          var map = entry as Map;
-          if (map['type'] == 'group') return deserializeGroup(map);
-          return _deserializeTest(map)!;
-        }).toList();
+    var entries = (group['entries'] as List).map((entry) {
+      var map = entry as Map;
+      if (map['type'] == 'group') return deserializeGroup(map);
+      return _deserializeTest(map)!;
+    }).toList();
 
     return Group(
       group['name'] as String,
@@ -179,8 +179,9 @@
     if (test == null) return null;
 
     var metadata = Metadata.deserialize(test['metadata'] as Map);
-    var trace =
-        test['trace'] == null ? null : Trace.parse(test['trace'] as String);
+    var trace = test['trace'] == null
+        ? null
+        : Trace.parse(test['trace'] as String);
     var location = switch (test['location']) {
       Map map => TestLocation.deserialize(map),
       _ => null,
diff --git a/pkgs/test_core/lib/src/runner/reporter/compact.dart b/pkgs/test_core/lib/src/runner/reporter/compact.dart
index 40fa1db..f154651 100644
--- a/pkgs/test_core/lib/src/runner/reporter/compact.dart
+++ b/pkgs/test_core/lib/src/runner/reporter/compact.dart
@@ -239,10 +239,9 @@
     liveTest.onComplete.then((_) {
       var result = liveTest.state.result;
       if (result != Result.error && result != Result.failure) return;
-      var quotedName =
-          Platform.isWindows
-              ? '"${liveTest.test.name.replaceAll('"', '"""')}"'
-              : "'${liveTest.test.name.replaceAll("'", r"'\''")}'";
+      var quotedName = Platform.isWindows
+          ? '"${liveTest.test.name.replaceAll('"', '"""')}"'
+          : "'${liveTest.test.name.replaceAll("'", r"'\''")}'";
       _sink.writeln('');
       _sink.writeln(
         '$_bold${_cyan}To run this test again:$_noColor '
diff --git a/pkgs/test_core/lib/src/runner/reporter/failure_summary.dart b/pkgs/test_core/lib/src/runner/reporter/failure_summary.dart
index 25afebf..36baa6e 100644
--- a/pkgs/test_core/lib/src/runner/reporter/failure_summary.dart
+++ b/pkgs/test_core/lib/src/runner/reporter/failure_summary.dart
@@ -37,10 +37,9 @@
   sink.writeln('');
   sink.writeln('${red}Failing tests:$noColor');
 
-  final displayCount =
-      entries.length > maxFailureSummaryCount
-          ? maxFailureSummaryCount - 1
-          : entries.length;
+  final displayCount = entries.length > maxFailureSummaryCount
+      ? maxFailureSummaryCount - 1
+      : entries.length;
 
   for (var i = 0; i < displayCount; i++) {
     final entry = entries[i];
diff --git a/pkgs/test_core/lib/src/runner/reporter/github.dart b/pkgs/test_core/lib/src/runner/reporter/github.dart
index b71ca87..39094b5 100644
--- a/pkgs/test_core/lib/src/runner/reporter/github.dart
+++ b/pkgs/test_core/lib/src/runner/reporter/github.dart
@@ -144,18 +144,16 @@
     // For now, we use the same icon for both tests and test-like structures
     // (loadSuite, setUpAll, tearDownAll).
     var defaultIcon = synthetic ? _GithubMarkup.passed : _GithubMarkup.passed;
-    final prefix =
-        failed
-            ? _GithubMarkup.failed
-            : skipped
-            ? _GithubMarkup.skipped
-            : defaultIcon;
-    final statusSuffix =
-        failed
-            ? ' (failed)'
-            : skipped
-            ? ' (skipped)'
-            : '';
+    final prefix = failed
+        ? _GithubMarkup.failed
+        : skipped
+        ? _GithubMarkup.skipped
+        : defaultIcon;
+    final statusSuffix = failed
+        ? ' (failed)'
+        : skipped
+        ? ' (skipped)'
+        : '';
 
     var name = test.test.name;
     if (!loadSuite) {
diff --git a/pkgs/test_core/lib/src/runner/reporter/json.dart b/pkgs/test_core/lib/src/runner/reporter/json.dart
index 13f834f..a2a81b4 100644
--- a/pkgs/test_core/lib/src/runner/reporter/json.dart
+++ b/pkgs/test_core/lib/src/runner/reporter/json.dart
@@ -136,10 +136,9 @@
 
     // Don't emit groups for load suites. They're always empty and they provide
     // unnecessary clutter.
-    var groupIDs =
-        liveTest.suite is LoadSuite
-            ? <int>[]
-            : _idsForGroups(liveTest.groups, liveTest.suite);
+    var groupIDs = liveTest.suite is LoadSuite
+        ? <int>[]
+        : _idsForGroups(liveTest.groups, liveTest.suite);
 
     var suiteConfig = _configFor(liveTest.suite);
     var id = _nextID++;
@@ -207,8 +206,8 @@
         _emit('debug', {
           'suiteID': id,
           'observatory': runnerSuite.environment.observatoryUrl?.toString(),
-          'remoteDebugger':
-              runnerSuite.environment.remoteDebuggerUrl?.toString(),
+          'remoteDebugger': runnerSuite.environment.remoteDebuggerUrl
+              ?.toString(),
         });
       });
     }
@@ -264,8 +263,8 @@
   /// Serializes [metadata] into a JSON-protocol-compatible map.
   Map _serializeMetadata(SuiteConfiguration suiteConfig, Metadata metadata) =>
       suiteConfig.runSkipped
-          ? {'skip': false, 'skipReason': null}
-          : {'skip': metadata.skip, 'skipReason': metadata.skipReason};
+      ? {'skip': false, 'skipReason': null}
+      : {'skip': metadata.skip, 'skipReason': metadata.skipReason};
 
   /// A callback called when [liveTest] finishes running.
   void _onComplete(LiveTest liveTest) {
diff --git a/pkgs/test_core/lib/src/runner/spawn_hybrid.dart b/pkgs/test_core/lib/src/runner/spawn_hybrid.dart
index d758948..afd80a6 100644
--- a/pkgs/test_core/lib/src/runner/spawn_hybrid.dart
+++ b/pkgs/test_core/lib/src/runner/spawn_hybrid.dart
@@ -36,7 +36,8 @@
     var port = ReceivePort();
     var onExitPort = ReceivePort();
     try {
-      var code = '''
+      var code =
+          '''
         ${await _languageVersionCommentFor(url)}
 
         import "package:test_core/src/runner/hybrid_listener.dart";
@@ -178,10 +179,9 @@
 Future<String> _readUri(Uri uri) async => switch (uri.scheme) {
   '' || 'file' => await File.fromUri(uri).readAsString(),
   'data' => uri.data!.contentAsString(),
-  _ =>
-    throw ArgumentError.value(
-      uri,
-      'uri',
-      'Only data and file uris (as well as relative paths) are supported',
-    ),
+  _ => throw ArgumentError.value(
+    uri,
+    'uri',
+    'Only data and file uris (as well as relative paths) are supported',
+  ),
 };
diff --git a/pkgs/test_core/lib/src/runner/suite.dart b/pkgs/test_core/lib/src/runner/suite.dart
index b4506de..e638c7e 100644
--- a/pkgs/test_core/lib/src/runner/suite.dart
+++ b/pkgs/test_core/lib/src/runner/suite.dart
@@ -110,10 +110,9 @@
   final List<CompilerSelection>? compilerSelections;
 
   /// The set of runtimes on which to run tests.
-  List<String> get runtimes =>
-      _runtimes == null
-          ? const ['vm']
-          : List.unmodifiable(_runtimes.map((runtime) => runtime.name));
+  List<String> get runtimes => _runtimes == null
+      ? const ['vm']
+      : List.unmodifiable(_runtimes.map((runtime) => runtime.name));
   final List<RuntimeSelection>? _runtimes;
 
   /// Configuration for particular tags.
@@ -362,8 +361,9 @@
       jsTrace: other._jsTrace ?? _jsTrace,
       runSkipped: other._runSkipped ?? _runSkipped,
       dart2jsArgs: dart2jsArgs.toList()..addAll(other.dart2jsArgs),
-      testSelections:
-          testSelections.isEmpty ? other.testSelections : testSelections,
+      testSelections: testSelections.isEmpty
+          ? other.testSelections
+          : testSelections,
       precompiledPath: other.precompiledPath ?? precompiledPath,
       compilerSelections: other.compilerSelections ?? compilerSelections,
       runtimes: other._runtimes ?? _runtimes,
@@ -463,8 +463,9 @@
 
   /// Throws a [FormatException] if this refers to any undefined runtimes.
   void validateRuntimes(List<Runtime> allRuntimes) {
-    var validVariables =
-        allRuntimes.map((runtime) => runtime.identifier).toSet();
+    var validVariables = allRuntimes
+        .map((runtime) => runtime.identifier)
+        .toSet();
     _metadata.validatePlatformSelectors(validVariables);
 
     var runtimes = _runtimes;
diff --git a/pkgs/test_core/lib/src/runner/vm/platform.dart b/pkgs/test_core/lib/src/runner/vm/platform.dart
index 8fe8ee2..6414251 100644
--- a/pkgs/test_core/lib/src/runner/vm/platform.dart
+++ b/pkgs/test_core/lib/src/runner/vm/platform.dart
@@ -313,10 +313,9 @@
           ),
           message,
         ),
-        _ =>
-          throw StateError(
-            'Unsupported compiler $compiler for the VM platform',
-          ),
+        _ => throw StateError(
+          'Unsupported compiler $compiler for the VM platform',
+        ),
       };
     } catch (_) {
       if (_closeMemo.hasRun) return null;
@@ -363,14 +362,13 @@
     switch (compiler) {
       case Compiler.kernel:
         // Load `.dill` files from their absolute file path.
-        var dillUri =
-            (await Isolate.resolvePackageUri(
-              testUri.replace(
-                path:
-                    '${testUri.path.substring(0, testUri.path.length - '.dart'.length)}'
-                    '.vm.app.dill',
-              ),
-            ))!;
+        var dillUri = (await Isolate.resolvePackageUri(
+          testUri.replace(
+            path:
+                '${testUri.path.substring(0, testUri.path.length - '.dart'.length)}'
+                '.vm.app.dill',
+          ),
+        ))!;
         if (await File.fromUri(dillUri).exists()) {
           testUri = dillUri;
         }
@@ -463,10 +461,9 @@
   Environment environment,
   Configuration config,
 ) async {
-  final isolateId =
-      Uri.parse(
-        environment.observatoryUrl!.fragment,
-      ).queryParameters['isolateId'];
+  final isolateId = Uri.parse(
+    environment.observatoryUrl!.fragment,
+  ).queryParameters['isolateId'];
   return await collect(
     environment.observatoryUrl!,
     false,
@@ -482,11 +479,10 @@
     observatoryUrl.replace(scheme: 'ws').resolve('ws');
 
 Uri _observatoryUrlFor(Uri base, String isolateId, String id) => base.replace(
-  fragment:
-      Uri(
-        path: '/inspect',
-        queryParameters: {'isolateId': isolateId, 'objectId': id},
-      ).toString(),
+  fragment: Uri(
+    path: '/inspect',
+    queryParameters: {'isolateId': isolateId, 'objectId': id},
+  ).toString(),
 );
 
 var _hasRegistered = false;
diff --git a/pkgs/test_core/lib/src/runner/vm/test_compiler.dart b/pkgs/test_core/lib/src/runner/vm/test_compiler.dart
index 625cab1..b4eb512 100644
--- a/pkgs/test_core/lib/src/runner/vm/test_compiler.dart
+++ b/pkgs/test_core/lib/src/runner/vm/test_compiler.dart
@@ -98,7 +98,7 @@
     this._languageVersionComment,
   ) : _dillCachePath =
           '$dillCachePrefix.'
-              '${_dillCacheSuffix(_languageVersionComment, enabledExperiments)}';
+          '${_dillCacheSuffix(_languageVersionComment, enabledExperiments)}';
 
   Future<CompilationResponse> compile(Uri mainUri) =>
       _compilePool.withResource(() => _compile(mainUri));
@@ -192,17 +192,16 @@
       }
     }
 
-    var client =
-        _frontendServerClient = await FrontendServerClient.start(
-          testUri.toString(),
-          _outputDill.path,
-          platformDill,
-          enabledExperiments: enabledExperiments,
-          sdkRoot: sdkRoot,
-          packagesJson: packageConfigUriAwaited.toFilePath(),
-          nativeAssets: nativeAssetsYaml?.toFilePath(),
-          printIncrementalDependencies: false,
-        );
+    var client = _frontendServerClient = await FrontendServerClient.start(
+      testUri.toString(),
+      _outputDill.path,
+      platformDill,
+      enabledExperiments: enabledExperiments,
+      sdkRoot: sdkRoot,
+      packagesJson: packageConfigUriAwaited.toFilePath(),
+      nativeAssets: nativeAssetsYaml?.toFilePath(),
+      printIncrementalDependencies: false,
+    );
     return client.compile();
   }
 
diff --git a/pkgs/test_core/lib/src/util/async.dart b/pkgs/test_core/lib/src/util/async.dart
index ab56b1d..e15868d 100644
--- a/pkgs/test_core/lib/src/util/async.dart
+++ b/pkgs/test_core/lib/src/util/async.dart
@@ -15,8 +15,8 @@
   var operationSet = operations.toSet();
   var controller = StreamController<T>(
     sync: true,
-    onCancel:
-        () => Future.wait(operationSet.map((operation) => operation.cancel())),
+    onCancel: () =>
+        Future.wait(operationSet.map((operation) => operation.cancel())),
   );
 
   for (var operation in operationSet) {
diff --git a/pkgs/test_core/lib/src/util/io.dart b/pkgs/test_core/lib/src/util/io.dart
index 8c44e4b..1951a91 100644
--- a/pkgs/test_core/lib/src/util/io.dart
+++ b/pkgs/test_core/lib/src/util/io.dart
@@ -76,12 +76,9 @@
 ///
 /// Also returns an empty stream for Fuchsia since Fuchsia components can't
 /// access stdin.
-StreamQueue<String> get stdinLines =>
-    _stdinLines ??= StreamQueue(
-      Platform.isFuchsia
-          ? const Stream<String>.empty()
-          : lineSplitter.bind(stdin),
-    );
+StreamQueue<String> get stdinLines => _stdinLines ??= StreamQueue(
+  Platform.isFuchsia ? const Stream<String>.empty() : lineSplitter.bind(stdin),
+);
 
 StreamQueue<String>? _stdinLines;
 
@@ -96,10 +93,9 @@
 ///
 /// This is configurable so that the test code can validate that the runner
 /// cleans up after itself fully.
-final _tempDir =
-    Platform.environment.containsKey('_UNITTEST_TEMP_DIR')
-        ? Platform.environment['_UNITTEST_TEMP_DIR']!
-        : Directory.systemTemp.path;
+final _tempDir = Platform.environment.containsKey('_UNITTEST_TEMP_DIR')
+    ? Platform.environment['_UNITTEST_TEMP_DIR']!
+    : Directory.systemTemp.path;
 
 /// Whether [stdout] supports ANSI escape codes.
 ///
diff --git a/pkgs/test_core/lib/src/util/os.dart b/pkgs/test_core/lib/src/util/os.dart
index fe389b1..8a5a351 100644
--- a/pkgs/test_core/lib/src/util/os.dart
+++ b/pkgs/test_core/lib/src/util/os.dart
@@ -22,12 +22,11 @@
 /// This is useful for running test files directly and skipping tests as
 /// appropriate. The only OS-specific information we have is the current path,
 /// which we try to use to figure out the OS.
-final OperatingSystem currentOSGuess =
-    (() {
-      if (p.style == p.Style.url) return OperatingSystem.none;
-      if (p.style == p.Style.windows) return OperatingSystem.windows;
-      if (_macOSDirectories.any(p.current.startsWith)) {
-        return OperatingSystem.macOS;
-      }
-      return OperatingSystem.linux;
-    })();
+final OperatingSystem currentOSGuess = (() {
+  if (p.style == p.Style.url) return OperatingSystem.none;
+  if (p.style == p.Style.windows) return OperatingSystem.windows;
+  if (_macOSDirectories.any(p.current.startsWith)) {
+    return OperatingSystem.macOS;
+  }
+  return OperatingSystem.linux;
+})();
diff --git a/pkgs/test_core/lib/src/util/package_config.dart b/pkgs/test_core/lib/src/util/package_config.dart
index bab1eaf..58826f6 100644
--- a/pkgs/test_core/lib/src/util/package_config.dart
+++ b/pkgs/test_core/lib/src/util/package_config.dart
@@ -28,8 +28,9 @@
 /// returns an absolute file URI.
 Future<Uri> absoluteUri(String path) async {
   final uri = p.toUri(path);
-  final absoluteUri =
-      uri.isAbsolute ? uri : _originalWorkingDirectory.resolveUri(uri);
+  final absoluteUri = uri.isAbsolute
+      ? uri
+      : _originalWorkingDirectory.resolveUri(uri);
   try {
     final packageConfig = await currentPackageConfig;
     return packageConfig.toPackageUri(absoluteUri) ?? absoluteUri;
diff --git a/pkgs/test_core/pubspec.yaml b/pkgs/test_core/pubspec.yaml
index a45d68a..752cf15 100644
--- a/pkgs/test_core/pubspec.yaml
+++ b/pkgs/test_core/pubspec.yaml
@@ -6,7 +6,7 @@
 resolution: workspace
 
 environment:
-  sdk: ^3.7.0
+  sdk: ^3.10.0
 
 dependencies:
   analyzer: '>=8.0.0 <14.0.0'