diff --git a/src/test/cpp/rc_options_test.cc b/src/test/cpp/rc_options_test.cc
index 44bf26e..c7cec75 100644
--- a/src/test/cpp/rc_options_test.cc
+++ b/src/test/cpp/rc_options_test.cc
@@ -80,7 +80,7 @@
 
     // Test that exactly each command in the expected map was in the results,
     // and that for each of these, exactly the expected args are found, in the
-    // correct order. Note that this is not just an exercise in rewritting map
+    // correct order. Note that this is not just an exercise in rewriting map
     // equality - the results have type RcOption, and the expected values
     // are just strings. This is ignoring the source_path for convenience.
     const RcFile::OptionMap& result = rc->options();
diff --git a/src/test/cpp/util/strings_test.cc b/src/test/cpp/util/strings_test.cc
index 362257b..3360ca0 100644
--- a/src/test/cpp/util/strings_test.cc
+++ b/src/test/cpp/util/strings_test.cc
@@ -224,9 +224,9 @@
 }
 
 static vector<string> SplitQuoted(const string &contents,
-                                  const char delimeter) {
+                                  const char delimiter) {
   vector<string> result;
-  SplitQuotedStringUsing(contents, delimeter, &result);
+  SplitQuotedStringUsing(contents, delimiter, &result);
   return result;
 }
 
diff --git a/src/test/java/com/google/devtools/build/android/junctions/WindowsJunctionCreatorTest.java b/src/test/java/com/google/devtools/build/android/junctions/WindowsJunctionCreatorTest.java
index 38eb572..eb76eb5 100644
--- a/src/test/java/com/google/devtools/build/android/junctions/WindowsJunctionCreatorTest.java
+++ b/src/test/java/com/google/devtools/build/android/junctions/WindowsJunctionCreatorTest.java
@@ -137,7 +137,7 @@
         assertThat(file2juncActual.toFile().exists()).isTrue();
         assertThat(file3juncActual.toFile().exists()).isTrue();
 
-        // Assert that the junctions were chached.
+        // Assert that the junctions were cached.
         // Cast Path to Object to disambiguate which assertThat-overload to use.
         assertThat((Object) dir1juncActual).isEqualTo(junc0);
         assertThat((Object) dir2juncActual).isEqualTo(junc1);
diff --git a/src/test/java/com/google/devtools/build/lib/analysis/SingleRunfilesSupplierTest.java b/src/test/java/com/google/devtools/build/lib/analysis/SingleRunfilesSupplierTest.java
index ee17341..b3a4ee0 100644
--- a/src/test/java/com/google/devtools/build/lib/analysis/SingleRunfilesSupplierTest.java
+++ b/src/test/java/com/google/devtools/build/lib/analysis/SingleRunfilesSupplierTest.java
@@ -144,10 +144,10 @@
     SingleRunfilesSupplier original =
         SingleRunfilesSupplier.createCaching(
             oldDir, runfiles, /*buildRunfileLinks=*/ false, /*runfileLinksEnabled=*/ false);
-    SingleRunfilesSupplier overriden = original.withOverriddenRunfilesDir(newDir);
+    SingleRunfilesSupplier overridden = original.withOverriddenRunfilesDir(newDir);
 
     Map<PathFragment, Map<PathFragment, Artifact>> mappingsOld = original.getMappings();
-    Map<PathFragment, Map<PathFragment, Artifact>> mappingsNew = overriden.getMappings();
+    Map<PathFragment, Map<PathFragment, Artifact>> mappingsNew = overridden.getMappings();
 
     assertThat(mappingsOld).containsExactly(oldDir, runfiles.getRunfilesInputs(null, null));
     assertThat(mappingsNew).containsExactly(newDir, runfiles.getRunfilesInputs(null, null));
diff --git a/src/test/java/com/google/devtools/build/lib/analysis/StarlarkAttrTransitionProviderTest.java b/src/test/java/com/google/devtools/build/lib/analysis/StarlarkAttrTransitionProviderTest.java
index 9760886..cb2139b 100644
--- a/src/test/java/com/google/devtools/build/lib/analysis/StarlarkAttrTransitionProviderTest.java
+++ b/src/test/java/com/google/devtools/build/lib/analysis/StarlarkAttrTransitionProviderTest.java
@@ -844,7 +844,7 @@
 
   @Test
   public void testBannedNativeOptionOutput() throws Exception {
-    // Just picked an arbirtary incompatible_ flag; however, could be any flag
+    // Just picked an arbitrary incompatible_ flag; however, could be any flag
     // besides incompatible_enable_cc_toolchain_resolution (and might not even need to be real).
     writeAllowlistFile();
 
diff --git a/src/test/java/com/google/devtools/build/lib/analysis/select/AggregatingAttributeMapperTest.java b/src/test/java/com/google/devtools/build/lib/analysis/select/AggregatingAttributeMapperTest.java
index bcbee43..05366e1 100644
--- a/src/test/java/com/google/devtools/build/lib/analysis/select/AggregatingAttributeMapperTest.java
+++ b/src/test/java/com/google/devtools/build/lib/analysis/select/AggregatingAttributeMapperTest.java
@@ -210,7 +210,7 @@
     assertThat(mapper.getReachableLabels("srcs", false)).containsExactlyElementsIn(valueLabels);
   }
 
-  /** Custom rule to support testing over default valuess. */
+  /** Custom rule to support testing over default values. */
   public static final class RuleWithDefaults
       implements RuleDefinition, RuleConfiguredTargetFactory {
     @Override
diff --git a/src/test/java/com/google/devtools/build/lib/analysis/util/MockRule.java b/src/test/java/com/google/devtools/build/lib/analysis/util/MockRule.java
index 58ffe22..f5be381 100644
--- a/src/test/java/com/google/devtools/build/lib/analysis/util/MockRule.java
+++ b/src/test/java/com/google/devtools/build/lib/analysis/util/MockRule.java
@@ -94,15 +94,13 @@
  */
 public interface MockRule extends RuleDefinition {
   // MockRule is designed to be easy to use. That doesn't necessarily mean its implementation is
-  // easy to undestand.
+  // easy to understand.
   //
   // If you just want to mock a rule, it's best to rely on the interface javadoc above, rather than
   // trying to parse what's going on below. You really only need to understand the below if you want
   // to customize MockRule itself.
 
-  /**
-   * Container for the desired name and custom settings for this rule class.
-   */
+  /** Container for the desired name and custom settings for this rule class. */
   class State {
     private final String name;
     private final MockRuleCustomBehavior customBehavior;
diff --git a/src/test/java/com/google/devtools/build/lib/analysis/util/TestAspects.java b/src/test/java/com/google/devtools/build/lib/analysis/util/TestAspects.java
index f31f641..f169280 100644
--- a/src/test/java/com/google/devtools/build/lib/analysis/util/TestAspects.java
+++ b/src/test/java/com/google/devtools/build/lib/analysis/util/TestAspects.java
@@ -968,13 +968,14 @@
                   .add(attr("foo", LABEL_LIST).allowedFileTypes(FileTypeSet.ANY_FILE))
                   .advertiseProvider(RequiredProvider2.class));
 
-  /**
-   * Rule with an implcit dependency.
-   */
-  public static final MockRule IMPLICIT_DEP_RULE = () ->
-      MockRule.ancestor(BASE_RULE.getClass()).factory(DummyRuleFactory.class).define(
-          "implicit_dep",
-          attr("$dep", LABEL).value(Label.parseAbsoluteUnchecked("//extra:extra")));
+  /** Rule with an implicit dependency. */
+  public static final MockRule IMPLICIT_DEP_RULE =
+      () ->
+          MockRule.ancestor(BASE_RULE.getClass())
+              .factory(DummyRuleFactory.class)
+              .define(
+                  "implicit_dep",
+                  attr("$dep", LABEL).value(Label.parseAbsoluteUnchecked("//extra:extra")));
 
   // TODO(b/65746853): provide a way to do this without passing the entire configuration
   private static final LabelListLateBoundDefault<?> PLUGINS_LABEL_LIST =
diff --git a/src/test/java/com/google/devtools/build/lib/bazel/repository/cache/RepositoryCacheTest.java b/src/test/java/com/google/devtools/build/lib/bazel/repository/cache/RepositoryCacheTest.java
index 9e2a381..6c11e26 100644
--- a/src/test/java/com/google/devtools/build/lib/bazel/repository/cache/RepositoryCacheTest.java
+++ b/src/test/java/com/google/devtools/build/lib/bazel/repository/cache/RepositoryCacheTest.java
@@ -81,7 +81,7 @@
   }
 
   /**
-   * Test that the put mehtod without cache key correctly stores the downloaded file into the cache.
+   * Test that the put method without cache key correctly stores the downloaded file into the cache.
    */
   @Test
   public void testPutCacheValueWithoutHash() throws Exception {
diff --git a/src/test/java/com/google/devtools/build/lib/bazel/repository/downloader/HttpConnectorMultiplexerTest.java b/src/test/java/com/google/devtools/build/lib/bazel/repository/downloader/HttpConnectorMultiplexerTest.java
index 4d61114..3e1d22e 100644
--- a/src/test/java/com/google/devtools/build/lib/bazel/repository/downloader/HttpConnectorMultiplexerTest.java
+++ b/src/test/java/com/google/devtools/build/lib/bazel/repository/downloader/HttpConnectorMultiplexerTest.java
@@ -165,7 +165,7 @@
     Function<URL, ImmutableMap<String, List<String>>> headerFunction =
         HttpConnectorMultiplexer.getHeaderFunction(baseHeaders, additionalHeaders);
 
-    // Unreleated URL
+    // Unrelated URL
     assertThat(headerFunction.apply(new URL("http://example.org/some/path/file.txt")))
         .containsExactly(
             "Accept-Encoding",
diff --git a/src/test/java/com/google/devtools/build/lib/buildeventstream/transports/JsonFormatFileTransportTest.java b/src/test/java/com/google/devtools/build/lib/buildeventstream/transports/JsonFormatFileTransportTest.java
index 400bdff..3635efb 100644
--- a/src/test/java/com/google/devtools/build/lib/buildeventstream/transports/JsonFormatFileTransportTest.java
+++ b/src/test/java/com/google/devtools/build/lib/buildeventstream/transports/JsonFormatFileTransportTest.java
@@ -103,7 +103,7 @@
   /**
    * A thin wrapper around an OutputStream that counts number of bytes written and verifies flushes.
    *
-   * <p>The methods below need to be syncrhonized because they override methods from {@link
+   * <p>The methods below need to be synchronized because they override methods from {@link
    * BufferedOutputStream} *not* because there's a concurrent access to the stream.
    */
   private static final class WrappedOutputStream extends BufferedOutputStream {
diff --git a/src/test/java/com/google/devtools/build/lib/cmdline/ParallelVisitorTest.java b/src/test/java/com/google/devtools/build/lib/cmdline/ParallelVisitorTest.java
index f14724a..4436b5a 100644
--- a/src/test/java/com/google/devtools/build/lib/cmdline/ParallelVisitorTest.java
+++ b/src/test/java/com/google/devtools/build/lib/cmdline/ParallelVisitorTest.java
@@ -115,7 +115,7 @@
     invocationLatch.await();
     testThread.interrupt();
 
-    // Verify that the thread is interruptable (unit test will time out if it's not interruptable).
+    // Verify that the thread is interruptible (unit test will time out if it's not interruptible).
     testThread.join();
   }
 
diff --git a/src/test/java/com/google/devtools/build/lib/exec/SpawnStrategyRegistryTest.java b/src/test/java/com/google/devtools/build/lib/exec/SpawnStrategyRegistryTest.java
index 310b8ea..2b9c9ae 100644
--- a/src/test/java/com/google/devtools/build/lib/exec/SpawnStrategyRegistryTest.java
+++ b/src/test/java/com/google/devtools/build/lib/exec/SpawnStrategyRegistryTest.java
@@ -179,7 +179,7 @@
   }
 
   /**
-   * This demostrate that the latter description filter overrides preceding one of same regexp.
+   * This demonstrate that the latter description filter overrides preceding one of same regexp.
    * filter=val_1 filter=val_2 is equivalent to filter=val_2
    */
   @Test
diff --git a/src/test/java/com/google/devtools/build/lib/packages/RuleFactoryTest.java b/src/test/java/com/google/devtools/build/lib/packages/RuleFactoryTest.java
index 558e2dd..da34433 100644
--- a/src/test/java/com/google/devtools/build/lib/packages/RuleFactoryTest.java
+++ b/src/test/java/com/google/devtools/build/lib/packages/RuleFactoryTest.java
@@ -100,7 +100,7 @@
     assertThat(rule.getRuleClass()).isEqualTo("cc_library");
     assertThat(rule.getTargetKind()).isEqualTo("cc_library rule");
     // The rule reports the location of the outermost call (aka generator), in the BUILD file.
-    // Thie behavior was added to fix b/23974287, but it loses informtion and is redundant
+    // This behavior was added to fix b/23974287, but it loses information and is redundant
     // w.r.t. generator_location. A better fix to that issue would be to keep rule.location as
     // the innermost call, and to report the entire call stack at the first error for the rule.
     assertThat(rule.getLocation().file()).isEqualTo("BUILD");
diff --git a/src/test/java/com/google/devtools/build/lib/packages/util/MockProtoSupport.java b/src/test/java/com/google/devtools/build/lib/packages/util/MockProtoSupport.java
index c78e740..42513c5 100644
--- a/src/test/java/com/google/devtools/build/lib/packages/util/MockProtoSupport.java
+++ b/src/test/java/com/google/devtools/build/lib/packages/util/MockProtoSupport.java
@@ -27,7 +27,7 @@
     throw new UnsupportedOperationException();
   }
 
-  /** This is workarround for tests that do not use {@code Scratch} (e.g. aquery-tests). */
+  /** This is workaround for tests that do not use {@code Scratch} (e.g. aquery-tests). */
   public static final String MIGRATION_TAG =
       String.format("tags = ['%s'],", ProtoCommon.PROTO_RULES_MIGRATION_LABEL);
 
diff --git a/src/test/java/com/google/devtools/build/lib/remote/ByteStreamUploaderTest.java b/src/test/java/com/google/devtools/build/lib/remote/ByteStreamUploaderTest.java
index ebf15d5..ba857c8 100644
--- a/src/test/java/com/google/devtools/build/lib/remote/ByteStreamUploaderTest.java
+++ b/src/test/java/com/google/devtools/build/lib/remote/ByteStreamUploaderTest.java
@@ -197,7 +197,7 @@
 
     byte[] blob = {'A'};
 
-    // Set a chunk size that should have no problem accomodating the compressed
+    // Set a chunk size that should have no problem accommodating the compressed
     // blob, even though the blob most likely has a compression ratio >= 1.
     Chunker chunker =
         Chunker.builder().setInput(blob).setCompressed(true).setChunkSize(100).build();
diff --git a/src/test/java/com/google/devtools/build/lib/remote/RemoteSpawnRunnerTest.java b/src/test/java/com/google/devtools/build/lib/remote/RemoteSpawnRunnerTest.java
index 623f2fe..2b1529b 100644
--- a/src/test/java/com/google/devtools/build/lib/remote/RemoteSpawnRunnerTest.java
+++ b/src/test/java/com/google/devtools/build/lib/remote/RemoteSpawnRunnerTest.java
@@ -267,7 +267,7 @@
 
   @Test
   public void cachableSpawnsShouldBeCached_localFallback() throws Exception {
-    // Test that if a cachable spawn is executed locally due to the local fallback,
+    // Test that if a cacheable spawn is executed locally due to the local fallback,
     // that its result is uploaded to the remote cache.
 
     remoteOptions.remoteAcceptCached = true;
diff --git a/src/test/java/com/google/devtools/build/lib/rules/android/AndroidBuildViewTestCase.java b/src/test/java/com/google/devtools/build/lib/rules/android/AndroidBuildViewTestCase.java
index bd8478c..0503203 100644
--- a/src/test/java/com/google/devtools/build/lib/rules/android/AndroidBuildViewTestCase.java
+++ b/src/test/java/com/google/devtools/build/lib/rules/android/AndroidBuildViewTestCase.java
@@ -380,7 +380,7 @@
     return null;
   }
 
-  // Returns an artifact that will be generated when a rule has assets that are processed seperately
+  // Returns an artifact that will be generated when a rule has assets that are processed separately
   static Artifact getDecoupledAssetArtifact(ConfiguredTarget target) {
     return target.get(AndroidAssetsInfo.PROVIDER).getValidationResult();
   }
@@ -507,7 +507,7 @@
           .isNotNull();
       SpawnAction proOptimization = getGeneratingSpawnAction(preoptimizationOutput);
 
-      // Verify intitial step.
+      // Verify initial step.
       assertThat(proOptimization.getArguments()).contains("-runtype INITIAL");
       checkProguardLibJars(proOptimization, expectedlibraryJars);
     }
diff --git a/src/test/java/com/google/devtools/build/lib/rules/apple/XcodeConfigTest.java b/src/test/java/com/google/devtools/build/lib/rules/apple/XcodeConfigTest.java
index 51ea58b..2cb7a3c 100644
--- a/src/test/java/com/google/devtools/build/lib/rules/apple/XcodeConfigTest.java
+++ b/src/test/java/com/google/devtools/build/lib/rules/apple/XcodeConfigTest.java
@@ -1514,15 +1514,15 @@
     assertThat(provider.getXcodeVersion()).isEqualTo(DottedVersion.fromString(version));
   }
 
-  private void assertAvailability(XcodeConfigInfo.Availability availabilty) throws Exception {
-    assertAvailability(availabilty, "//xcode:foo");
+  private void assertAvailability(XcodeConfigInfo.Availability availability) throws Exception {
+    assertAvailability(availability, "//xcode:foo");
   }
 
   private void assertAvailability(
-      XcodeConfigInfo.Availability availabilty, String providerTargetLabel) throws Exception {
+      XcodeConfigInfo.Availability availability, String providerTargetLabel) throws Exception {
     ConfiguredTarget xcodeConfig = getConfiguredTarget(providerTargetLabel);
     XcodeConfigInfo provider = xcodeConfig.get(XcodeConfigInfo.PROVIDER);
-    assertThat(provider.getAvailability()).isEqualTo(availabilty);
+    assertThat(provider.getAvailability()).isEqualTo(availability);
   }
 
   private void assertHasRequirements(List<String> executionRequirements) throws Exception {
diff --git a/src/test/java/com/google/devtools/build/lib/rules/cpp/StarlarkCcCommonTest.java b/src/test/java/com/google/devtools/build/lib/rules/cpp/StarlarkCcCommonTest.java
index 8e0c549..51a4a41 100755
--- a/src/test/java/com/google/devtools/build/lib/rules/cpp/StarlarkCcCommonTest.java
+++ b/src/test/java/com/google/devtools/build/lib/rules/cpp/StarlarkCcCommonTest.java
@@ -1369,7 +1369,7 @@
     doTestCcLinkingContext(
         ImmutableList.of("a.a", "libdep2.a", "b.rlib", "c.a", "d.a", "libdep1.a"),
         ImmutableList.of("a.pic.a", "b.rlib", "c.pic.a", "e.pic.a"),
-        // The suffix of dynamic library is caculated based on repository name and package path
+        // The suffix of dynamic library is calculated based on repository name and package path
         // to avoid conflicts with dynamic library from other packages.
         ImmutableList.of("a.so", "libdep2_61.so", "b.so", "e.so", "libdep1_61.so"));
   }
diff --git a/src/test/java/com/google/devtools/build/lib/rules/objc/ObjcRuleTestCase.java b/src/test/java/com/google/devtools/build/lib/rules/objc/ObjcRuleTestCase.java
index 0c7d748..7103c36 100644
--- a/src/test/java/com/google/devtools/build/lib/rules/objc/ObjcRuleTestCase.java
+++ b/src/test/java/com/google/devtools/build/lib/rules/objc/ObjcRuleTestCase.java
@@ -88,7 +88,7 @@
       DottedVersion.fromStringUnchecked(AppleCommandLineOptions.DEFAULT_IOS_SDK_VERSION);
 
   /**
-   * Returns the configuration obtained by applying the apple crosstool configuration transtion to
+   * Returns the configuration obtained by applying the apple crosstool configuration transition to
    * this {@code BuildViewTestCase}'s target configuration.
    */
   protected BuildConfigurationValue getAppleCrosstoolConfiguration() throws InterruptedException {
diff --git a/src/test/java/com/google/devtools/build/lib/rules/objc/RuleType.java b/src/test/java/com/google/devtools/build/lib/rules/objc/RuleType.java
index ab19fea..dbb8106 100644
--- a/src/test/java/com/google/devtools/build/lib/rules/objc/RuleType.java
+++ b/src/test/java/com/google/devtools/build/lib/rules/objc/RuleType.java
@@ -81,7 +81,7 @@
    * </pre>
    * }
    *
-   * @throws IOException for whatever reason the implementator feels like, but mostly just when
+   * @throws IOException for whatever reason the implementer feels like, but mostly just when
    *     a scratch file couldn't be created
    */
   abstract Iterable<String> requiredAttributes(
diff --git a/src/test/java/com/google/devtools/build/lib/runtime/BuildEventStreamerTest.java b/src/test/java/com/google/devtools/build/lib/runtime/BuildEventStreamerTest.java
index 6fc94eb..ed97698 100644
--- a/src/test/java/com/google/devtools/build/lib/runtime/BuildEventStreamerTest.java
+++ b/src/test/java/com/google/devtools/build/lib/runtime/BuildEventStreamerTest.java
@@ -1111,7 +1111,7 @@
     // In this case, we expect 3 events in the stream, in that order:
     // - an artificial progress event as initial event, to properly link in
     //   all events
-    // - the unusal first event we have seen, and
+    // - the unusual first event we have seen, and
     // - a progress event reporting the flushed messages.
     BuildEventStreamer.OutErrProvider outErr = mock(BuildEventStreamer.OutErrProvider.class);
     String stdoutMsg = "Some text that was written to stdout.";
diff --git a/src/test/java/com/google/devtools/build/lib/runtime/UiStateTrackerTest.java b/src/test/java/com/google/devtools/build/lib/runtime/UiStateTrackerTest.java
index e097757..d2dbeb7 100644
--- a/src/test/java/com/google/devtools/build/lib/runtime/UiStateTrackerTest.java
+++ b/src/test/java/com/google/devtools/build/lib/runtime/UiStateTrackerTest.java
@@ -287,7 +287,7 @@
     clock.advanceMillis(120000);
 
     UiStateTracker stateTracker = getUiStateTracker(clock);
-    // Mimick being at the execution phase.
+    // Mimic being at the execution phase.
     simulateExecutionPhase(stateTracker);
     stateTracker.actionStarted(new ActionStartedEvent(mockAction(message, "bar/foo"), 123456789));
 
diff --git a/src/test/java/com/google/devtools/build/lib/runtime/commands/ConfigCommandTest.java b/src/test/java/com/google/devtools/build/lib/runtime/commands/ConfigCommandTest.java
index b88b89e..d2ca377 100644
--- a/src/test/java/com/google/devtools/build/lib/runtime/commands/ConfigCommandTest.java
+++ b/src/test/java/com/google/devtools/build/lib/runtime/commands/ConfigCommandTest.java
@@ -160,7 +160,8 @@
             .collect(Collectors.toList());
     if (ans.size() > 1) {
       throw new NoSuchElementException(
-          String.format("Multple matches for fragment=%s, option=%s", fragmentOptions, optionName));
+          String.format(
+              "Multiple matches for fragment=%s, option=%s", fragmentOptions, optionName));
     } else if (ans.isEmpty()) {
       throw new NoSuchElementException(
           String.format("No matches for fragment=%s, option=%s", fragmentOptions, optionName));
diff --git a/src/test/java/com/google/devtools/build/lib/server/GrpcServerTest.java b/src/test/java/com/google/devtools/build/lib/server/GrpcServerTest.java
index 8944da1..e0593a9 100644
--- a/src/test/java/com/google/devtools/build/lib/server/GrpcServerTest.java
+++ b/src/test/java/com/google/devtools/build/lib/server/GrpcServerTest.java
@@ -585,7 +585,7 @@
 
   /**
    * Ensure that if a command is marked as preemptible, running a second preemptible command
-   * interupts the first command.
+   * interrupts the first command.
    */
   @Test
   public void testMultiPreeempt() throws Exception {
diff --git a/src/test/java/com/google/devtools/build/lib/skyframe/PackageFunctionTest.java b/src/test/java/com/google/devtools/build/lib/skyframe/PackageFunctionTest.java
index e99bbf2..650ecdd 100644
--- a/src/test/java/com/google/devtools/build/lib/skyframe/PackageFunctionTest.java
+++ b/src/test/java/com/google/devtools/build/lib/skyframe/PackageFunctionTest.java
@@ -1444,7 +1444,7 @@
         new IOException() {
           @Override
           public String getMessage() {
-            throw new IllegalStateException("should't get here!");
+            throw new IllegalStateException("shouldn't get here!");
           }
         });
     // And we evaluate the PackageValue node for the Package in keepGoing mode,
diff --git a/src/test/java/com/google/devtools/build/lib/starlark/StarlarkRuleImplementationFunctionsTest.java b/src/test/java/com/google/devtools/build/lib/starlark/StarlarkRuleImplementationFunctionsTest.java
index 3ecf4c1..c1d0bb7 100644
--- a/src/test/java/com/google/devtools/build/lib/starlark/StarlarkRuleImplementationFunctionsTest.java
+++ b/src/test/java/com/google/devtools/build/lib/starlark/StarlarkRuleImplementationFunctionsTest.java
@@ -903,7 +903,7 @@
    * encoded string which has been ingested as Latin 1. The hack converts the string to its
    * "correct" UTF-8 value. Once Blaze starts calling {@link
    * net.starlark.java.syntax.ParserInput#fromUTF8} instead of {@code fromLatin1} and the hack for
-   * the substituations parameter is removed, this test will fail.
+   * the substitutions parameter is removed, this test will fail.
    */
   @Test
   public void testCreateTemplateActionWithWrongEncoding() throws Exception {
diff --git a/src/test/java/com/google/devtools/build/lib/testutil/TestSuiteBuilder.java b/src/test/java/com/google/devtools/build/lib/testutil/TestSuiteBuilder.java
index 7714e55..4c098fb 100644
--- a/src/test/java/com/google/devtools/build/lib/testutil/TestSuiteBuilder.java
+++ b/src/test/java/com/google/devtools/build/lib/testutil/TestSuiteBuilder.java
@@ -67,7 +67,7 @@
         }
       }
     } catch (ClassPathException e) {
-      throw new AssertionError("Cannot retrive classes: " + e.getMessage());
+      throw new AssertionError("Cannot retrieve classes: " + e.getMessage());
     }
     return result;
   }
diff --git a/src/test/java/com/google/devtools/build/lib/vfs/FileSystemTest.java b/src/test/java/com/google/devtools/build/lib/vfs/FileSystemTest.java
index 09fc304..b7a358d 100644
--- a/src/test/java/com/google/devtools/build/lib/vfs/FileSystemTest.java
+++ b/src/test/java/com/google/devtools/build/lib/vfs/FileSystemTest.java
@@ -874,7 +874,7 @@
       bDir.setReadable(false);
       topDir.setReadable(false);
     } catch (UnsupportedOperationException e) {
-      // Skip testing if the file system does not support clearing the needed attibutes.
+      // Skip testing if the file system does not support clearing the needed attributes.
       return;
     }
 
@@ -922,7 +922,7 @@
       bDir.setWritable(false);
       topDir.setWritable(false);
     } catch (UnsupportedOperationException e) {
-      // Skip testing if the file system does not support clearing the needed attibutes.
+      // Skip testing if the file system does not support clearing the needed attributes.
       return;
     }
 
@@ -971,7 +971,7 @@
       bDir.setExecutable(false);
       topDir.setExecutable(false);
     } catch (UnsupportedOperationException e) {
-      // Skip testing if the file system does not support clearing the needed attibutes.
+      // Skip testing if the file system does not support clearing the needed attributes.
       return;
     }
 
@@ -1023,7 +1023,7 @@
       topDir.setReadable(false);
       topDir.setExecutable(false);
     } catch (UnsupportedOperationException e) {
-      // Skip testing if the file system does not support clearing the needed attibutes.
+      // Skip testing if the file system does not support clearing the needed attributes.
       return;
     }
 
diff --git a/src/test/java/com/google/devtools/build/lib/view/java/SingleJarCommandLineTest.java b/src/test/java/com/google/devtools/build/lib/view/java/SingleJarCommandLineTest.java
index 94f08e8..0676d61 100644
--- a/src/test/java/com/google/devtools/build/lib/view/java/SingleJarCommandLineTest.java
+++ b/src/test/java/com/google/devtools/build/lib/view/java/SingleJarCommandLineTest.java
@@ -214,7 +214,7 @@
         .containsAtLeast("--enforce_one_version", "--succeed_on_found_violations");
 
     // --one_version_whitelist and the execpath to the whitelist are two different args, but they
-    // need to be next to eachother.
+    // need to be next to each other.
     MoreAsserts.assertContainsSublist(
         Lists.newArrayList(command.arguments()), "--one_version_whitelist", "whitelistfile");
   }
diff --git a/src/test/java/com/google/devtools/build/skydoc/testdata/repo_rules_test/golden.txt b/src/test/java/com/google/devtools/build/skydoc/testdata/repo_rules_test/golden.txt
index fba9efa..61dfa23 100644
--- a/src/test/java/com/google/devtools/build/skydoc/testdata/repo_rules_test/golden.txt
+++ b/src/test/java/com/google/devtools/build/skydoc/testdata/repo_rules_test/golden.txt
@@ -41,7 +41,7 @@
       <td>
         String; optional
         <p>
-          This argument will be ingored. You don't have to specify it, but you may.
+          This argument will be ignored. You don't have to specify it, but you may.
         </p>
       </td>
     </tr>
diff --git a/src/test/java/com/google/devtools/build/skydoc/testdata/repo_rules_test/input.bzl b/src/test/java/com/google/devtools/build/skydoc/testdata/repo_rules_test/input.bzl
index fdd1573..f4da8e1 100644
--- a/src/test/java/com/google/devtools/build/skydoc/testdata/repo_rules_test/input.bzl
+++ b/src/test/java/com/google/devtools/build/skydoc/testdata/repo_rules_test/input.bzl
@@ -6,7 +6,7 @@
     doc = "Minimal example of a repository rule.",
     attrs = {
         "useless": attr.string(
-            doc = "This argument will be ingored. You don't have to specify it, but you may.",
+            doc = "This argument will be ignored. You don't have to specify it, but you may.",
             default = "ignoreme",
         ),
     },
diff --git a/src/test/java/com/google/devtools/build/skyframe/EagerInvalidatorTest.java b/src/test/java/com/google/devtools/build/skyframe/EagerInvalidatorTest.java
index 97d9e1d..dbc9059 100644
--- a/src/test/java/com/google/devtools/build/skyframe/EagerInvalidatorTest.java
+++ b/src/test/java/com/google/devtools/build/skyframe/EagerInvalidatorTest.java
@@ -114,11 +114,11 @@
   }
 
   protected InvalidatingNodeVisitor.InvalidationState newInvalidationState() {
-    throw new UnsupportedOperationException("Sublcasses must override");
+    throw new UnsupportedOperationException("Subclasses must override");
   }
 
   protected InvalidationType defaultInvalidationType() {
-    throw new UnsupportedOperationException("Sublcasses must override");
+    throw new UnsupportedOperationException("Subclasses must override");
   }
 
   protected boolean reverseDepsPresent() {
diff --git a/src/test/java/net/starlark/java/eval/EvaluationTestCase.java b/src/test/java/net/starlark/java/eval/EvaluationTestCase.java
index 8558832..33eb4c9 100644
--- a/src/test/java/net/starlark/java/eval/EvaluationTestCase.java
+++ b/src/test/java/net/starlark/java/eval/EvaluationTestCase.java
@@ -114,7 +114,7 @@
   }
 
   /**
-   * Verifies that a piece of Starlark code fails at the specifed location with either a {@link
+   * Verifies that a piece of Starlark code fails at the specified location with either a {@link
    * SyntaxError} or an {@link EvalException} having the specified error message.
    *
    * <p>For a {@link SyntaxError}, the location checked is the first reported error's location. For
diff --git a/src/test/java/net/starlark/java/eval/ScriptTest.java b/src/test/java/net/starlark/java/eval/ScriptTest.java
index 101955a..c869bce 100644
--- a/src/test/java/net/starlark/java/eval/ScriptTest.java
+++ b/src/test/java/net/starlark/java/eval/ScriptTest.java
@@ -252,7 +252,7 @@
           //
           // TODO(adonovan): the old logic checks only that each error is matched
           // by at least one expectation. Instead, ensure that errors
-          // and expections match exactly. Furthermore, look only at errors
+          // and exceptions match exactly. Furthermore, look only at errors
           // whose stack has a frame with a file/line that matches the expectation.
           // This requires inspecting EvalException stack.
           // (There can be at most one dynamic error per chunk.
diff --git a/src/test/py/bazel/bazel_external_repository_test.py b/src/test/py/bazel/bazel_external_repository_test.py
index c97ba3f..55d1933 100644
--- a/src/test/py/bazel/bazel_external_repository_test.py
+++ b/src/test/py/bazel/bazel_external_repository_test.py
@@ -388,7 +388,7 @@
         'local_repository(name = "other_repo", path="../other_repo")',
     ])
     # This should not exclude @other_repo//foo/bar, because .bazelignore doesn't
-    # support having repository name in the path fragement.
+    # support having repository name in the path fragment.
     self.ScratchFile('my_repo/.bazelignore', ['@other_repo//foo/bar'])
 
     exit_code, _, stderr = self.RunBazel(
@@ -398,7 +398,7 @@
   def testExternalBazelignoreContainingRepoName(self):
     self.ScratchFile('other_repo/WORKSPACE')
     # This should not exclude @third_repo//foo/bar, because .bazelignore doesn't
-    # support having repository name in the path fragement.
+    # support having repository name in the path fragment.
     self.ScratchFile('other_repo/.bazelignore', ['@third_repo//foo/bar'])
     self.ScratchFile('other_repo/BUILD', [
         'filegroup(',
diff --git a/src/test/py/bazel/bazel_windows_cpp_test.py b/src/test/py/bazel/bazel_windows_cpp_test.py
index 64b654b..42a2ab7 100644
--- a/src/test/py/bazel/bazel_windows_cpp_test.py
+++ b/src/test/py/bazel/bazel_windows_cpp_test.py
@@ -631,7 +631,7 @@
 
     # Test exporting symbols using custom DEF file in cc_library.
     # Auto-generating DEF file should be disabled when custom DEF file specified
-    # Rename DLL shoud be disabled when when custom DEF file specified
+    # Rename DLL should be disabled when when custom DEF file specified
     exit_code, _, stderr = self.RunBazel([
         'build', '//:lib', '-s', '--output_groups=dynamic_library',
         '--features=windows_export_all_symbols'
diff --git a/src/test/py/bazel/runfiles_test.py b/src/test/py/bazel/runfiles_test.py
index cb37929..5cfccdc 100644
--- a/src/test/py/bazel/runfiles_test.py
+++ b/src/test/py/bazel/runfiles_test.py
@@ -226,7 +226,7 @@
         # runfiles tree, Bazel actually creates empty __init__.py files (again
         # on every platform). However to keep these manifest entries correct,
         # they need to have a space character.
-        # We could probably strip thses lines completely, but this test doesn't
+        # We could probably strip these lines completely, but this test doesn't
         # aim to exercise what would happen in that case.
         mock_manifest_data = [
             mock_manifest_line
diff --git a/src/test/py/bazel/test_base.py b/src/test/py/bazel/test_base.py
index 35388aa..3b88d2e 100644
--- a/src/test/py/bazel/test_base.py
+++ b/src/test/py/bazel/test_base.py
@@ -453,7 +453,7 @@
         the program, won't be removed by env_remove.
       shell: {bool: bool}; optional; whether to use the shell as the program
         to execute
-      cwd: string; the current working dirctory, will be self._test_cwd if not
+      cwd: string; the current working directory, will be self._test_cwd if not
         specified.
       allow_failure: bool; if false, the function checks the return code is 0
       executable: string or None; executable program to run; use args[0]
diff --git a/src/test/shell/bazel/bazel_docker_sandboxing_test.sh b/src/test/shell/bazel/bazel_docker_sandboxing_test.sh
index 1fad6df..84818cb 100755
--- a/src/test/shell/bazel/bazel_docker_sandboxing_test.sh
+++ b/src/test/shell/bazel/bazel_docker_sandboxing_test.sh
@@ -45,7 +45,7 @@
     --spawn_strategy=docker \
     --remote_default_exec_properties="container-image=docker://bad_flag_container" \
     //t:echo \
-    &> $TEST_log && fail "Expected build to fail, it succeded"
+    &> $TEST_log && fail "Expected build to fail, it succeeded"
   grep "bad_platform_container" $TEST_log || fail "Wrong container was chosen"
 }
 
@@ -66,7 +66,7 @@
     --spawn_strategy=docker \
     --remote_default_exec_properties="container-image=docker://bad_flag_container" \
     //t:echo \
-    &> $TEST_log && fail "Expected build to fail, it succeded"
+    &> $TEST_log && fail "Expected build to fail, it succeeded"
   grep "bad_flag_container" $TEST_log || fail "Wrong container was chosen"
 }
 
diff --git a/src/test/shell/bazel/bazel_embedded_starlark_test.sh b/src/test/shell/bazel/bazel_embedded_starlark_test.sh
index cf15e82..d39920c 100755
--- a/src/test/shell/bazel/bazel_embedded_starlark_test.sh
+++ b/src/test/shell/bazel/bazel_embedded_starlark_test.sh
@@ -46,7 +46,7 @@
 }
 
 test_pkg_tar_quoting() {
-  # Verify that pkg_tar can handle file names that are allowed as lablels
+  # Verify that pkg_tar can handle file names that are allowed as labels
   # but contain characters that could mess up options.
   rm -rf main out
   mkdir main
diff --git a/src/test/shell/bazel/bazel_sandboxing_test.sh b/src/test/shell/bazel/bazel_sandboxing_test.sh
index ebd71bd..6200a06 100755
--- a/src/test/shell/bazel/bazel_sandboxing_test.sh
+++ b/src/test/shell/bazel/bazel_sandboxing_test.sh
@@ -301,7 +301,7 @@
 
 function test_sandbox_block_filesystem() {
   # The point of this test is to attempt to read something from the filesystem
-  # that is blocked via --sandbox_block_path= and thus should't be accessible.
+  # that is blocked via --sandbox_block_path= and thus shouldn't be accessible.
   #
   # /var/log is an arbitrary choice of directory that should exist on all
   # Unix-like systems.
diff --git a/src/test/shell/bazel/embedded_tools_deps_test.sh b/src/test/shell/bazel/embedded_tools_deps_test.sh
index daf20f8..6cd5420 100755
--- a/src/test/shell/bazel/embedded_tools_deps_test.sh
+++ b/src/test/shell/bazel/embedded_tools_deps_test.sh
@@ -45,7 +45,7 @@
   "${TEST_SRCDIR}/io_bazel/src/test/shell/bazel/embedded_tools_deps" \
   | sort >"${current_deps}"
 
-# TODO: This is a temproary hack to make this test works both before and after
+# TODO: This is a temporary hack to make this test works both before and after
 # https://github.com/bazelbuild/bazel/pull/11300
 # Remove the following line after the PR is merged.
 sed -i.bak s/\:zlib$/\:zlib_checked_in/ "${current_deps}"
diff --git a/src/test/shell/bazel/external_integration_test.sh b/src/test/shell/bazel/external_integration_test.sh
index 7216fd1..bc2847a 100755
--- a/src/test/shell/bazel/external_integration_test.sh
+++ b/src/test/shell/bazel/external_integration_test.sh
@@ -1724,7 +1724,7 @@
 }
 
 function test_cache_hit_reported() {
-  # Verify that information about a chache hit is reported
+  # Verify that information about a cache hit is reported
   # if an error happend in that repository. This information
   # is useful as users sometimes change the URL but do not
   # update the hash.
@@ -2173,7 +2173,7 @@
 )
 EOF
   bazel build --curses=yes //:local > "${TEST_log}" 2>&1 \
-      || fail "exepected succes"
+      || fail "expected success"
   expect_log "foo.*First action"
   expect_log "foo.*Second action"
 }
@@ -2533,7 +2533,7 @@
 
   expect_log "you have to add.*this_repo_is_missing.*WORKSPACE"
   # Also verify that the repository class and its definition is reported, to
-  # help finding out where the implict dependency comes from.
+  # help finding out where the implicit dependency comes from.
   expect_log "Repository data instantiated at:"
   expect_log ".../WORKSPACE:[0-9]*"
   expect_log "Repository rule data_repo defined at:"
diff --git a/src/test/shell/bazel/external_path_test.sh b/src/test/shell/bazel/external_path_test.sh
index a5e8bba..b4c1701 100755
--- a/src/test/shell/bazel/external_path_test.sh
+++ b/src/test/shell/bazel/external_path_test.sh
@@ -130,7 +130,7 @@
 }
 
 test_lib_paths_main() {
-  # Verify that libaries from the main repository can be used via include
+  # Verify that libraries from the main repository can be used via include
   # path relative to their repository root and that they may refer to other
   # truly source files from the same library via paths relative to their
   # repository root.
@@ -165,7 +165,7 @@
 }
 
 test_lib_paths_remote() {
-  # Verify that libaries from an external repository can be used via include
+  # Verify that libraries from an external repository can be used via include
   # path relative to their repository root and that they may refer to other
   # truly source files from the same library via paths relative to their
   # repository root.
@@ -210,7 +210,7 @@
 }
 
 test_lib_paths_all_remote() {
-  # Verify that libaries from an external repository can be used by another
+  # Verify that libraries from an external repository can be used by another
   # external repository via include path relative to their repository root and
   # that they may refer to other truly source files from the same library via
   # paths relative to their repository root.
diff --git a/src/test/shell/bazel/external_starlark_execute_test.sh b/src/test/shell/bazel/external_starlark_execute_test.sh
index 314377b..53d9ed7 100755
--- a/src/test/shell/bazel/external_starlark_execute_test.sh
+++ b/src/test/shell/bazel/external_starlark_execute_test.sh
@@ -56,7 +56,7 @@
     bazel build //:it
     cp `bazel info bazel-genfiles`/it.txt output
     cat output
-    grep baz output || fail "repo rule faild to wait for child process"
+    grep baz output || fail "repo rule failed to wait for child process"
 }
 
 test_interrupted_children_waited() {
diff --git a/src/test/shell/bazel/list_source_repository.bzl b/src/test/shell/bazel/list_source_repository.bzl
index 732576b..38328cf 100644
--- a/src/test/shell/bazel/list_source_repository.bzl
+++ b/src/test/shell/bazel/list_source_repository.bzl
@@ -23,7 +23,7 @@
     srcs_excludes = "XXXXXXXXXXXXXX1268778dfsdf4"
 
     # Depending in ~/.git/logs/HEAD is a trick to depends on something that
-    # change everytime the workspace content change.
+    # change every time the workspace content change.
     r = rctx.execute(["test", "-f", "%s/.git/logs/HEAD" % workspace])
     if r.return_code == 0:
         # We only add the dependency if it exists.
diff --git a/src/test/shell/bazel/remote_helpers.sh b/src/test/shell/bazel/remote_helpers.sh
index 52078d1..df25a5c 100755
--- a/src/test/shell/bazel/remote_helpers.sh
+++ b/src/test/shell/bazel/remote_helpers.sh
@@ -167,7 +167,7 @@
   cd -
 }
 
-# Simulates a server timeing out while trying to generate a response.
+# Simulates a server timing out while trying to generate a response.
 function serve_timeout() {
   port_file=server-port.$$
   cd "${TEST_TMPDIR}"
diff --git a/src/test/shell/bazel/starlark_repository_test.sh b/src/test/shell/bazel/starlark_repository_test.sh
index afec945..f18607b 100755
--- a/src/test/shell/bazel/starlark_repository_test.sh
+++ b/src/test/shell/bazel/starlark_repository_test.sh
@@ -1174,10 +1174,10 @@
 repo = repository_rule(implementation = _impl, local = False)
 EOF
 
-  # This test case explictly verifies that a checksum is returned, even if
+  # This test case explicitly verifies that a checksum is returned, even if
   # none was provided by the call to download_and_extract. So we do have to
   # allow a download without provided checksum, even though it is plain http;
-  # nevertheless, localhost is pretty safe against man-in-the-middle attacs.
+  # nevertheless, localhost is pretty safe against man-in-the-middle attacks.
   bazel build @foo//:all \
         >& $TEST_log && shutdown_server || fail "Execution of @foo//:all failed"
 
@@ -1541,7 +1541,7 @@
 
 function test_download_failure_message() {
   # Regression test for #7850
-  # Verify that the for a failed downlaod, it is clearly indicated
+  # Verify that the for a failed download, it is clearly indicated
   # what was attempted to download and how it fails.
   cat > BUILD <<'EOF'
 genrule(
@@ -1758,7 +1758,7 @@
 }
 
 function test_netrc_reading() {
-  # Write a badly formated, but correct, .netrc file
+  # Write a badly formatted, but correct, .netrc file
   cat > .netrc <<'EOF'
 machine ftp.example.com
 macdef init
@@ -1865,7 +1865,7 @@
 	password	TOKEN
 EOF
   # Read a given .netrc file and combine it with a list of URL,
-  # and write the obtained authentication dicionary to disk; this
+  # and write the obtained authentication dictionary to disk; this
   # is not the intended way of using, but makes testing easy.
   cat > def.bzl <<'EOF'
 load("@bazel_tools//tools/build_defs/repo:utils.bzl", "read_netrc", "use_netrc")
@@ -1978,7 +1978,7 @@
   cmd = "cp $< $@",
 )
 EOF
-  bazel build //:it > "${TEST_log}" 2>&1 && fail "Expeceted failure" || :
+  bazel build //:it > "${TEST_log}" 2>&1 && fail "Expected failure" || :
   expect_log 'plain http.*missing checksum'
 
   # After adding a good checksum, we expect success
diff --git a/src/test/shell/bazel/starlark_rule_test.sh b/src/test/shell/bazel/starlark_rule_test.sh
index bdcdbeb..aa3d14a 100755
--- a/src/test/shell/bazel/starlark_rule_test.sh
+++ b/src/test/shell/bazel/starlark_rule_test.sh
@@ -133,7 +133,7 @@
   chmod +x bin.sh
 
   # //:x would fail without the bugfix of https://github.com/bazelbuild/bazel/issues/13189
-  bazel build //:x &> $TEST_log || fail "Expected sucesss"
+  bazel build //:x &> $TEST_log || fail "Expected success"
   bazel build //:y &> $TEST_log || fail "Expected success"
   rm BUILD bin.sh foo.bzl
 }
diff --git a/src/test/shell/integration/action_aspect_test.sh b/src/test/shell/integration/action_aspect_test.sh
index a7a20da..bab9b46 100755
--- a/src/test/shell/integration/action_aspect_test.sh
+++ b/src/test/shell/integration/action_aspect_test.sh
@@ -307,7 +307,7 @@
         compile_action = action
 
     if not compile_action:
-      fail("Couln't find compile action")
+      fail("Couldn't find compile action")
 
     aspect_out = ctx.actions.declare_file("run_timestamp")
     ctx.actions.run_shell(
diff --git a/src/test/shell/integration/aspect_test.sh b/src/test/shell/integration/aspect_test.sh
index e47f75a..87063a1 100755
--- a/src/test/shell/integration/aspect_test.sh
+++ b/src/test/shell/integration/aspect_test.sh
@@ -166,7 +166,7 @@
 
   # without using --incompatible_top_level_aspects_require_providers, aspect_a
   # and aspect_b should attempt to run on top level target: target_with_a and
-  # propagate to its dependencies where they will run based on the depdencies
+  # propagate to its dependencies where they will run based on the dependencies
   # advertised providers.
   bazel build "${package}:target_with_a" \
         --aspects="//${package}:lib.bzl%aspect_a" \
@@ -188,7 +188,7 @@
 
   # using --incompatible_top_level_aspects_require_providers, the top level
   # target rule's advertised providers will be checked and only aspect_a will be
-  # applied on target_with_a and propgated to its dependencies.
+  # applied on target_with_a and propagated to its dependencies.
   bazel build "${package}:target_with_a" \
         --aspects="//${package}:lib.bzl%aspect_a" \
         --aspects="//${package}:lib.bzl%aspect_b" &>"$TEST_log" \
diff --git a/src/test/shell/integration/cpp_test.sh b/src/test/shell/integration/cpp_test.sh
index 7752b96..c48ccdd 100755
--- a/src/test/shell/integration/cpp_test.sh
+++ b/src/test/shell/integration/cpp_test.sh
@@ -126,7 +126,7 @@
 }
 EOF
 
-  bazel build //$pkg:a || fail "build failled"
+  bazel build //$pkg:a || fail "build failed"
 }
 
 function test_no_recompile_on_shutdown() {
diff --git a/src/test/shell/integration/exec_group_test.sh b/src/test/shell/integration/exec_group_test.sh
index 2e77f71..d95118d 100755
--- a/src/test/shell/integration/exec_group_test.sh
+++ b/src/test/shell/integration/exec_group_test.sh
@@ -57,7 +57,7 @@
   ;;
 esac
 
-# NOTE: All tests need to delcare targets in a custom package, which is why they
+# NOTE: All tests need to declare targets in a custom package, which is why they
 # all use the pkg=${FUNCNAME[0]} variable.
 
 function test_target_exec_properties_starlark() {
diff --git a/src/test/shell/integration/execution_phase_tests.sh b/src/test/shell/integration/execution_phase_tests.sh
index 3458210..f61a8ea 100755
--- a/src/test/shell/integration/execution_phase_tests.sh
+++ b/src/test/shell/integration/execution_phase_tests.sh
@@ -220,7 +220,7 @@
   [[ "$(cat "${output_file}")" == bar ]] \
       || fail "External change to action cache misdetected"
 
-  # For completeness, make the changes to the same output file visibile and
+  # For completeness, make the changes to the same output file visible and
   # ensure Blaze notices them.  This is to check that we actually modified the
   # right output file above.
   touch "${output_file}"
diff --git a/src/test/shell/integration/implicit_dependency_reporting_test.sh b/src/test/shell/integration/implicit_dependency_reporting_test.sh
index 9f2c893..b84cc20 100755
--- a/src/test/shell/integration/implicit_dependency_reporting_test.sh
+++ b/src/test/shell/integration/implicit_dependency_reporting_test.sh
@@ -72,7 +72,7 @@
     executable = "cp",
     arguments = [f.path for f in ctx.files._data] + [out.path],
     mnemonic = "copying",
-    progress_message = "Copying implict data dependency for %s" % ctx.label
+    progress_message = "Copying implicit data dependency for %s" % ctx.label
   )
 
 implicit_rule = rule(
@@ -97,10 +97,10 @@
   rm -rf magic
 
   bazel build //:it > "${TEST_log}" 2>&1 \
-      && fail "Missing implict dependency should be detected" || :
+      && fail "Missing implicit dependency should be detected" || :
   expect_log 'rule.*implicit_rule.*implicitly depends'
   expect_log 'attribute _data of.*implicit_rule'
   expect_log 'You must manually put the data to magic/place'
 }
 
-run_suite "Integration tests for reporing missing implicit dependencies"
+run_suite "Integration tests for reporting missing implicit dependencies"
diff --git a/src/test/shell/integration/python_test.sh b/src/test/shell/integration/python_test.sh
index caf2549..65b6c44 100755
--- a/src/test/shell/integration/python_test.sh
+++ b/src/test/shell/integration/python_test.sh
@@ -146,7 +146,7 @@
   # remotely, but network access is disabled by default, so it times out.
 
   # The upcoming Starlark implementation doesn't support this behavior.
-  # This feature is planed for removal.
+  # This feature is planned for removal.
   # See https://github.com/bazelbuild/bazel/issues/16303
   if [[ "$PRODUCT_NAME" == "bazel" ]]; then
     bazel build --experimental_build_transitive_python_runfiles --nostamp :sh-tool
diff --git a/src/test/shell/integration/starlark_dependency_pruning_test.sh b/src/test/shell/integration/starlark_dependency_pruning_test.sh
index 9c00604..71e1668 100755
--- a/src/test/shell/integration/starlark_dependency_pruning_test.sh
+++ b/src/test/shell/integration/starlark_dependency_pruning_test.sh
@@ -266,7 +266,7 @@
   check_unused_content "pkg/b.input"
 
   # Change c:
-  # The build should be trigerred, and the newer version of "b" should be used.
+  # The build should be triggered, and the newer version of "b" should be used.
   echo "unused" > pkg/c.input
   bazel build //pkg:output || fail "build failed"
   check_output_content "contentA newContentB"
diff --git a/src/test/shell/integration/target_compatible_with_test.sh b/src/test/shell/integration/target_compatible_with_test.sh
index 234ac30..5d37ccf 100755
--- a/src/test/shell/integration/target_compatible_with_test.sh
+++ b/src/test/shell/integration/target_compatible_with_test.sh
@@ -1368,7 +1368,7 @@
 # This target is compatible with all platforms and configurations. This target
 # exists to validate the behaviour of aspects running against incompatible
 # targets. The expectation is that the aspect should _not_ propagate to this
-# compatible target from an incomaptible target. I.e. an aspect should _not_
+# compatible target from an incompatible target. I.e. an aspect should _not_
 # evaluate this target if "basic_foo3_target" is incompatible.
 basic_rule(
     name = "basic_universal_target",
diff --git a/src/test/shell/unittest_utils.sh b/src/test/shell/unittest_utils.sh
index 446a3fc..be3409e 100644
--- a/src/test/shell/unittest_utils.sh
+++ b/src/test/shell/unittest_utils.sh
@@ -165,7 +165,7 @@
 
 # Force XML_OUTPUT_FILE to an existing path
 if [[ -z "${XML_OUTPUT_FILE:-}" ]]; then
-  XML_OUTPUT_FILE=${TEST_TMPDIR}/ouput.xml
+  XML_OUTPUT_FILE=${TEST_TMPDIR}/output.xml
 fi
 
 # Functions to provide easy access to external repository outputs in the sibling
