chore: add bazel10 testing (#3059)

### Changes are visible to end-users: no

### Test plan

- Covered by existing test cases
- New test cases added
diff --git a/.github/workflows/ci-workflows.yaml b/.github/workflows/ci-workflows.yaml
index ae497b7..5a7faaa 100644
--- a/.github/workflows/ci-workflows.yaml
+++ b/.github/workflows/ci-workflows.yaml
@@ -190,6 +190,11 @@
                           version: '9.x',
                           flags: '--bazel-flag=--test_tag_filters=-skip-on-bazel9 --bazel-flag=--@aspect_rules_js//js:use_hermetic_launcher=True',
                       }
+                    - {
+                          id: 'bazel-10',
+                          version: '10.0.0rc1',
+                          flags: '--bazel-flag=--test_tag_filters=-skip-on-bazel10',
+                      }
                 exclude:
                     # e2e/js_image_oci pulls in the `llvm` module, whose hermetic toolchain requires Bazel 8+.
                     - {
@@ -221,6 +226,10 @@
                           workspace: { slug: 'e2e-patch_from_repo' },
                           bazel: { id: 'bazel-9-hermetic-launcher' },
                       }
+                    - {
+                          workspace: { slug: 'e2e-patch_from_repo' },
+                          bazel: { id: 'bazel-10' },
+                      }
                     # e2e/repo_mapping renames aspect_rules_js, so a flag beginning with
                     # --@aspect_rules_js// (as used by the no-execroot-entry-point and
                     # hermetic-launcher variants) doesn't resolve.
diff --git a/e2e/gyp_no_install_script/BUILD.bazel b/e2e/gyp_no_install_script/BUILD.bazel
index 234f294..3b161f4 100644
--- a/e2e/gyp_no_install_script/BUILD.bazel
+++ b/e2e/gyp_no_install_script/BUILD.bazel
@@ -18,6 +18,7 @@
         "snapshots/segfault-handler_defs.bzl": "@npm__segfault-handler__1.3.0__links//:defs.bzl",
     },
     tags = [
+        "skip-on-bazel10",
         "skip-on-bazel8",
         "skip-on-bazel9",
     ],
diff --git a/e2e/js_image_oci/MODULE.bazel b/e2e/js_image_oci/MODULE.bazel
index 5b9cbdb..5d3bda5 100644
--- a/e2e/js_image_oci/MODULE.bazel
+++ b/e2e/js_image_oci/MODULE.bazel
@@ -18,7 +18,7 @@
     dev_dependency = True,
     repo_name = "com_google_googleapis",
 )
-bazel_dep(name = "llvm", version = "0.8.0", dev_dependency = True)
+bazel_dep(name = "llvm", version = "0.8.9", dev_dependency = True)
 bazel_dep(name = "platforms", version = "0.0.10", dev_dependency = True)
 bazel_dep(name = "rules_nodejs", version = "6.7.3", dev_dependency = True)
 bazel_dep(name = "rules_oci", version = "2.3.0", dev_dependency = True)
diff --git a/e2e/npm_translate_lock_disable_hooks/BUILD.bazel b/e2e/npm_translate_lock_disable_hooks/BUILD.bazel
index a3d9274..b58dbab 100644
--- a/e2e/npm_translate_lock_disable_hooks/BUILD.bazel
+++ b/e2e/npm_translate_lock_disable_hooks/BUILD.bazel
@@ -18,6 +18,7 @@
         "snapshots/aspect_test_c_links_defs.bzl": "@npm__at_aspect-test_c__2.0.0__links//:defs.bzl",
     },
     tags = [
+        "skip-on-bazel10",
         "skip-on-bazel8",
         "skip-on-bazel9",
     ],
diff --git a/e2e/pnpm_lockfiles/lockfile-test.bzl b/e2e/pnpm_lockfiles/lockfile-test.bzl
index 3af17b1..7298cc7 100644
--- a/e2e/pnpm_lockfiles/lockfile-test.bzl
+++ b/e2e/pnpm_lockfiles/lockfile-test.bzl
@@ -264,5 +264,6 @@
         tags = [
             "skip-on-bazel8",
             "skip-on-bazel9",
+            "skip-on-bazel10",
         ],
     )
diff --git a/e2e/pnpm_workspace/BUILD.bazel b/e2e/pnpm_workspace/BUILD.bazel
index e519930..1b76d11 100644
--- a/e2e/pnpm_workspace/BUILD.bazel
+++ b/e2e/pnpm_workspace/BUILD.bazel
@@ -35,6 +35,7 @@
         "snapshots/defs.bzl": "@npm//:defs.bzl",
     },
     tags = [
+        "skip-on-bazel10",
         "skip-on-bazel8",
         "skip-on-bazel9",
     ],
diff --git a/e2e/pnpm_workspace_rerooted/BUILD.bazel b/e2e/pnpm_workspace_rerooted/BUILD.bazel
index e519930..1b76d11 100644
--- a/e2e/pnpm_workspace_rerooted/BUILD.bazel
+++ b/e2e/pnpm_workspace_rerooted/BUILD.bazel
@@ -35,6 +35,7 @@
         "snapshots/defs.bzl": "@npm//:defs.bzl",
     },
     tags = [
+        "skip-on-bazel10",
         "skip-on-bazel8",
         "skip-on-bazel9",
     ],
diff --git a/examples/nextjs/BUILD.bazel b/examples/nextjs/BUILD.bazel
index bca5689..ab10a31 100644
--- a/examples/nextjs/BUILD.bazel
+++ b/examples/nextjs/BUILD.bazel
@@ -129,6 +129,7 @@
         "snapshots/next_links_defs.bzl": "@npm__next__15.2.6_1816342077__links//:defs.bzl",
     },
     tags = [
+        "skip-on-bazel10",
         "skip-on-bazel8",
         "skip-on-bazel9",
     ],
diff --git a/js/private/test/image/asserts.bzl b/js/private/test/image/asserts.bzl
index 872da0c..771d240 100644
--- a/js/private/test/image/asserts.bzl
+++ b/js/private/test/image/asserts.bzl
@@ -126,6 +126,6 @@
         testonly = True,
         in_file = name,
         out_file = name + ".expected",
-        tags = ["skip-on-bazel8", "skip-on-bazel9"],
+        tags = ["skip-on-bazel8", "skip-on-bazel9", "skip-on-bazel10"],
         target_compatible_with = SKIP_ON_WINDOWS,
     )
diff --git a/npm/private/test/BUILD.bazel b/npm/private/test/BUILD.bazel
index c43b300..9310f69 100644
--- a/npm/private/test/BUILD.bazel
+++ b/npm/private/test/BUILD.bazel
@@ -62,6 +62,7 @@
         "snapshots/package_json_with_dashes.bzl": "@npm__webpack-bundle-analyzer__4.5.0_bufferutil_4.0.8//:package_json.bzl",
     },
     tags = [
+        "skip-on-bazel10",
         "skip-on-bazel8",
         "skip-on-bazel9",
     ],
diff --git a/npm/private/test/npm_package_publish/BUILD.bazel b/npm/private/test/npm_package_publish/BUILD.bazel
index 618e284..2376acb 100644
--- a/npm/private/test/npm_package_publish/BUILD.bazel
+++ b/npm/private/test/npm_package_publish/BUILD.bazel
@@ -45,6 +45,7 @@
         ":pkg_a.publish",
         ":pkg_b.publish",
     ],
+    env = {"npm_config_unicode": "false"},
     tags = [
         "no-remote-exec",
         "no-sandbox",
diff --git a/tools/BUILD.bazel b/tools/BUILD.bazel
index 153bcc9..697edd4 100644
--- a/tools/BUILD.bazel
+++ b/tools/BUILD.bazel
@@ -7,6 +7,7 @@
     doc_link_template = "https://registry.build/flag/bazel?filter={flag}",
     # The output is specific to the version in .bazelversion
     tags = [
+        "skip-on-bazel10",
         "skip-on-bazel8",
         "skip-on-bazel9",
     ],