diff --git a/fuzzers/BUILD.gn b/fuzzers/BUILD.gn
index 2f6eae5..64eefc8 100644
--- a/fuzzers/BUILD.gn
+++ b/fuzzers/BUILD.gn
@@ -66,11 +66,6 @@
       deps = [ ":tint_fuzzer_common" ]
     }
 
-    fuzzer_test("tint_bound_array_accessors_fuzzer") {
-      sources = [ "tint_bound_array_accessors_fuzzer.cc" ]
-      deps = [ ":tint_fuzzer_common" ]
-    }
-
     fuzzer_test("tint_first_index_offset_fuzzer") {
       sources = [ "tint_first_index_offset_fuzzer.cc" ]
       deps = [ ":tint_fuzzer_common" ]
@@ -86,6 +81,11 @@
       deps = [ ":tint_fuzzer_common" ]
     }
 
+    fuzzer_test("tint_robustness_fuzzer") {
+      sources = [ "tint_robustness_fuzzer.cc" ]
+      deps = [ ":tint_fuzzer_common" ]
+    }
+
     fuzzer_test("tint_single_entry_point_fuzzer") {
       sources = [ "tint_single_entry_point_fuzzer.cc" ]
       deps = [ ":tint_fuzzer_common" ]
@@ -187,7 +187,7 @@
       deps += [
         ":tint_all_transforms_fuzzer",
         ":tint_binding_remapper_fuzzer",
-        ":tint_bound_array_accessors_fuzzer",
+        ":tint_robustness_fuzzer",
         ":tint_first_index_offset_fuzzer",
         ":tint_inspector_fuzzer",
         ":tint_renamer_fuzzer",
diff --git a/fuzzers/CMakeLists.txt b/fuzzers/CMakeLists.txt
index 8588b45..ccaae93 100644
--- a/fuzzers/CMakeLists.txt
+++ b/fuzzers/CMakeLists.txt
@@ -32,10 +32,10 @@
 if (${TINT_BUILD_WGSL_READER} AND ${TINT_BUILD_SPV_WRITER})
   add_tint_fuzzer(tint_all_transforms_fuzzer)
   add_tint_fuzzer(tint_binding_remapper_fuzzer)
-  add_tint_fuzzer(tint_bound_array_accessors_fuzzer)
   add_tint_fuzzer(tint_first_index_offset_fuzzer)
   add_tint_fuzzer(tint_inspector_fuzzer)
   add_tint_fuzzer(tint_renamer_fuzzer)
+  add_tint_fuzzer(tint_robustness_fuzzer)
   add_tint_fuzzer(tint_single_entry_point_fuzzer)
   add_tint_fuzzer(tint_spirv_transform_fuzzer)
   add_tint_fuzzer(tint_vertex_pulling_fuzzer)
diff --git a/fuzzers/tint_all_transforms_fuzzer.cc b/fuzzers/tint_all_transforms_fuzzer.cc
index 9e2dc50..dfdf4de 100644
--- a/fuzzers/tint_all_transforms_fuzzer.cc
+++ b/fuzzers/tint_all_transforms_fuzzer.cc
@@ -30,7 +30,7 @@
   ExtractSingleEntryPointInputs(&config->reader, &config->inputs);
   ExtractVertexPullingInputs(&config->reader, &config->inputs);
 
-  config->manager.Add<transform::BoundArrayAccessors>();
+  config->manager.Add<transform::Robustness>();
   config->manager.Add<transform::FirstIndexOffset>();
   config->manager.Add<transform::BindingRemapper>();
   config->manager.Add<transform::Renamer>();
diff --git a/fuzzers/tint_bound_array_accessors_fuzzer.cc b/fuzzers/tint_robustness_fuzzer.cc
similarity index 93%
rename from fuzzers/tint_bound_array_accessors_fuzzer.cc
rename to fuzzers/tint_robustness_fuzzer.cc
index 2040320..a763c29 100644
--- a/fuzzers/tint_bound_array_accessors_fuzzer.cc
+++ b/fuzzers/tint_robustness_fuzzer.cc
@@ -19,7 +19,7 @@
 
 extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) {
   tint::transform::Manager transform_manager;
-  transform_manager.Add<tint::transform::BoundArrayAccessors>();
+  transform_manager.Add<tint::transform::Robustness>();
 
   tint::fuzzers::CommonFuzzer fuzzer(InputFormat::kWGSL, OutputFormat::kSpv);
   fuzzer.SetTransformManager(&transform_manager, {});
diff --git a/include/tint/tint.h b/include/tint/tint.h
index ff1991e..9a51bbe 100644
--- a/include/tint/tint.h
+++ b/include/tint/tint.h
@@ -25,10 +25,10 @@
 #include "src/reader/reader.h"
 #include "src/sem/type_manager.h"
 #include "src/transform/binding_remapper.h"
-#include "src/transform/bound_array_accessors.h"
 #include "src/transform/first_index_offset.h"
 #include "src/transform/manager.h"
 #include "src/transform/renamer.h"
+#include "src/transform/robustness.h"
 #include "src/transform/single_entry_point.h"
 #include "src/transform/vertex_pulling.h"
 #include "src/writer/writer.h"
diff --git a/samples/main.cc b/samples/main.cc
index 3ad5aa8..e80d9f4 100644
--- a/samples/main.cc
+++ b/samples/main.cc
@@ -87,9 +87,9 @@
   -o <name>                 -- Output file name.  Use "-" for standard output
   --transform <name list>   -- Runs transforms, name list is comma separated
                                Available transforms:
-                                bound_array_accessors
                                 first_index_offset
                                 renamer
+                                robustness
   --parse-only              -- Stop after parsing the input
   --dump-ast                -- Dump the generated AST to stdout
   --demangle                -- Preserve original source names. Demangle them.
@@ -704,14 +704,14 @@
     // be run that needs user input. Should we find a way to support that here
     // maybe through a provided file?
 
-    if (name == "bound_array_accessors") {
-      transform_manager.Add<tint::transform::BoundArrayAccessors>();
-    } else if (name == "first_index_offset") {
+    if (name == "first_index_offset") {
       transform_inputs.Add<tint::transform::FirstIndexOffset::BindingPoint>(0,
                                                                             0);
       transform_manager.Add<tint::transform::FirstIndexOffset>();
     } else if (name == "renamer") {
       transform_manager.Add<tint::transform::Renamer>();
+    } else if (name == "robustness") {
+      transform_manager.Add<tint::transform::Robustness>();
     } else {
       std::cerr << "Unknown transform name: " << name << std::endl;
       return 1;
diff --git a/src/BUILD.gn b/src/BUILD.gn
index f838efb..5b1a3d5 100644
--- a/src/BUILD.gn
+++ b/src/BUILD.gn
@@ -554,8 +554,6 @@
     "transform/array_length_from_uniform.h",
     "transform/binding_remapper.cc",
     "transform/binding_remapper.h",
-    "transform/bound_array_accessors.cc",
-    "transform/bound_array_accessors.h",
     "transform/calculate_array_length.cc",
     "transform/calculate_array_length.h",
     "transform/canonicalize_entry_point_io.cc",
@@ -578,6 +576,8 @@
     "transform/promote_initializers_to_const_var.h",
     "transform/renamer.cc",
     "transform/renamer.h",
+    "transform/robustness.cc",
+    "transform/robustness.h",
     "transform/simplify.cc",
     "transform/simplify.h",
     "transform/single_entry_point.cc",
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index c808b43..914e198 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -279,8 +279,6 @@
   transform/array_length_from_uniform.h
   transform/binding_remapper.cc
   transform/binding_remapper.h
-  transform/bound_array_accessors.cc
-  transform/bound_array_accessors.h
   transform/calculate_array_length.cc
   transform/calculate_array_length.h
   transform/canonicalize_entry_point_io.cc
@@ -303,6 +301,8 @@
   transform/promote_initializers_to_const_var.h
   transform/renamer.cc
   transform/renamer.h
+  transform/robustness.cc
+  transform/robustness.h
   transform/simplify.cc
   transform/simplify.h
   transform/single_entry_point.cc
@@ -866,7 +866,6 @@
     list(APPEND TINT_TEST_SRCS
       transform/array_length_from_uniform_test.cc
       transform/binding_remapper_test.cc
-      transform/bound_array_accessors_test.cc
       transform/calculate_array_length_test.cc
       transform/canonicalize_entry_point_io_test.cc
       transform/decompose_memory_access_test.cc
@@ -877,6 +876,7 @@
       transform/pad_array_elements_test.cc
       transform/promote_initializers_to_const_var_test.cc
       transform/renamer_test.cc
+      transform/robustness_test.cc
       transform/simplify_test.cc
       transform/single_entry_point_test.cc
       transform/test_helper.h
diff --git a/src/transform/bound_array_accessors.cc b/src/transform/robustness.cc
similarity index 89%
rename from src/transform/bound_array_accessors.cc
rename to src/transform/robustness.cc
index 5ad5020..e59ea5d 100644
--- a/src/transform/bound_array_accessors.cc
+++ b/src/transform/robustness.cc
@@ -12,7 +12,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#include "src/transform/bound_array_accessors.h"
+#include "src/transform/robustness.h"
 
 #include <algorithm>
 #include <utility>
@@ -20,15 +20,15 @@
 #include "src/program_builder.h"
 #include "src/sem/expression.h"
 
-TINT_INSTANTIATE_TYPEINFO(tint::transform::BoundArrayAccessors);
+TINT_INSTANTIATE_TYPEINFO(tint::transform::Robustness);
 
 namespace tint {
 namespace transform {
 
-BoundArrayAccessors::BoundArrayAccessors() = default;
-BoundArrayAccessors::~BoundArrayAccessors() = default;
+Robustness::Robustness() = default;
+Robustness::~Robustness() = default;
 
-void BoundArrayAccessors::Run(CloneContext& ctx, const DataMap&, DataMap&) {
+void Robustness::Run(CloneContext& ctx, const DataMap&, DataMap&) {
   ctx.ReplaceAll([&](ast::ArrayAccessorExpression* expr) {
     return Transform(expr, &ctx);
   });
@@ -36,7 +36,7 @@
   ctx.Clone();
 }
 
-ast::ArrayAccessorExpression* BoundArrayAccessors::Transform(
+ast::ArrayAccessorExpression* Robustness::Transform(
     ast::ArrayAccessorExpression* expr,
     CloneContext* ctx) {
   auto& diags = ctx->dst->Diagnostics();
diff --git a/src/transform/bound_array_accessors.h b/src/transform/robustness.h
similarity index 85%
rename from src/transform/bound_array_accessors.h
rename to src/transform/robustness.h
index 87803e6..b489d07 100644
--- a/src/transform/bound_array_accessors.h
+++ b/src/transform/robustness.h
@@ -12,8 +12,8 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#ifndef SRC_TRANSFORM_BOUND_ARRAY_ACCESSORS_H_
-#define SRC_TRANSFORM_BOUND_ARRAY_ACCESSORS_H_
+#ifndef SRC_TRANSFORM_ROBUSTNESS_H_
+#define SRC_TRANSFORM_ROBUSTNESS_H_
 
 #include "src/ast/array_accessor_expression.h"
 #include "src/transform/transform.h"
@@ -25,12 +25,12 @@
 /// the bounds of the array. Any access before the start of the array will clamp
 /// to zero and any access past the end of the array will clamp to
 /// (array length - 1).
-class BoundArrayAccessors : public Castable<BoundArrayAccessors, Transform> {
+class Robustness : public Castable<Robustness, Transform> {
  public:
   /// Constructor
-  BoundArrayAccessors();
+  Robustness();
   /// Destructor
-  ~BoundArrayAccessors() override;
+  ~Robustness() override;
 
  protected:
   /// Runs the transform using the CloneContext built for transforming a
@@ -46,7 +46,9 @@
                                           CloneContext* ctx);
 };
 
+using BoundArrayAccessors = Robustness;
+
 }  // namespace transform
 }  // namespace tint
 
-#endif  // SRC_TRANSFORM_BOUND_ARRAY_ACCESSORS_H_
+#endif  // SRC_TRANSFORM_ROBUSTNESS_H_
diff --git a/src/transform/bound_array_accessors_test.cc b/src/transform/robustness_test.cc
similarity index 74%
rename from src/transform/bound_array_accessors_test.cc
rename to src/transform/robustness_test.cc
index f8b8f89..18ac30b 100644
--- a/src/transform/bound_array_accessors_test.cc
+++ b/src/transform/robustness_test.cc
@@ -12,7 +12,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#include "src/transform/bound_array_accessors.h"
+#include "src/transform/robustness.h"
 
 #include "src/transform/test_helper.h"
 
@@ -20,9 +20,9 @@
 namespace transform {
 namespace {
 
-using BoundArrayAccessorsTest = TransformTest;
+using RobustnessTest = TransformTest;
 
-TEST_F(BoundArrayAccessorsTest, Ptrs_Clamp) {
+TEST_F(RobustnessTest, Ptrs_Clamp) {
   auto* src = R"(
 var<private> a : array<f32, 3>;
 
@@ -43,12 +43,12 @@
 }
 )";
 
-  auto got = Run<BoundArrayAccessors>(src);
+  auto got = Run<Robustness>(src);
 
   EXPECT_EQ(expect, str(got));
 }
 
-TEST_F(BoundArrayAccessorsTest, Array_Idx_Nested_Scalar) {
+TEST_F(RobustnessTest, Array_Idx_Nested_Scalar) {
   auto* src = R"(
 var<private> a : array<f32, 3>;
 
@@ -73,12 +73,12 @@
 }
 )";
 
-  auto got = Run<BoundArrayAccessors>(src);
+  auto got = Run<Robustness>(src);
 
   EXPECT_EQ(expect, str(got));
 }
 
-TEST_F(BoundArrayAccessorsTest, Array_Idx_Scalar) {
+TEST_F(RobustnessTest, Array_Idx_Scalar) {
   auto* src = R"(
 var<private> a : array<f32, 3>;
 
@@ -95,12 +95,12 @@
 }
 )";
 
-  auto got = Run<BoundArrayAccessors>(src);
+  auto got = Run<Robustness>(src);
 
   EXPECT_EQ(expect, str(got));
 }
 
-TEST_F(BoundArrayAccessorsTest, Array_Idx_Expr) {
+TEST_F(RobustnessTest, Array_Idx_Expr) {
   auto* src = R"(
 var<private> a : array<f32, 3>;
 
@@ -121,12 +121,12 @@
 }
 )";
 
-  auto got = Run<BoundArrayAccessors>(src);
+  auto got = Run<Robustness>(src);
 
   EXPECT_EQ(expect, str(got));
 }
 
-TEST_F(BoundArrayAccessorsTest, Array_Idx_Negative) {
+TEST_F(RobustnessTest, Array_Idx_Negative) {
   auto* src = R"(
 var<private> a : array<f32, 3>;
 
@@ -143,12 +143,12 @@
 }
 )";
 
-  auto got = Run<BoundArrayAccessors>(src);
+  auto got = Run<Robustness>(src);
 
   EXPECT_EQ(expect, str(got));
 }
 
-TEST_F(BoundArrayAccessorsTest, Array_Idx_OutOfBounds) {
+TEST_F(RobustnessTest, Array_Idx_OutOfBounds) {
   auto* src = R"(
 var<private> a : array<f32, 3>;
 
@@ -165,12 +165,12 @@
 }
 )";
 
-  auto got = Run<BoundArrayAccessors>(src);
+  auto got = Run<Robustness>(src);
 
   EXPECT_EQ(expect, str(got));
 }
 
-TEST_F(BoundArrayAccessorsTest, Vector_Idx_Scalar) {
+TEST_F(RobustnessTest, Vector_Idx_Scalar) {
   auto* src = R"(
 var<private> a : vec3<f32>;
 
@@ -187,12 +187,12 @@
 }
 )";
 
-  auto got = Run<BoundArrayAccessors>(src);
+  auto got = Run<Robustness>(src);
 
   EXPECT_EQ(expect, str(got));
 }
 
-TEST_F(BoundArrayAccessorsTest, Vector_Idx_Expr) {
+TEST_F(RobustnessTest, Vector_Idx_Expr) {
   auto* src = R"(
 var<private> a : vec3<f32>;
 
@@ -213,12 +213,12 @@
 }
 )";
 
-  auto got = Run<BoundArrayAccessors>(src);
+  auto got = Run<Robustness>(src);
 
   EXPECT_EQ(expect, str(got));
 }
 
-TEST_F(BoundArrayAccessorsTest, Vector_Swizzle_Idx_Scalar) {
+TEST_F(RobustnessTest, Vector_Swizzle_Idx_Scalar) {
   auto* src = R"(
 var<private> a : vec3<f32>;
 
@@ -235,12 +235,12 @@
 }
 )";
 
-  auto got = Run<BoundArrayAccessors>(src);
+  auto got = Run<Robustness>(src);
 
   EXPECT_EQ(expect, str(got));
 }
 
-TEST_F(BoundArrayAccessorsTest, Vector_Swizzle_Idx_Var) {
+TEST_F(RobustnessTest, Vector_Swizzle_Idx_Var) {
   auto* src = R"(
 var<private> a : vec3<f32>;
 
@@ -261,11 +261,11 @@
 }
 )";
 
-  auto got = Run<BoundArrayAccessors>(src);
+  auto got = Run<Robustness>(src);
 
   EXPECT_EQ(expect, str(got));
 }
-TEST_F(BoundArrayAccessorsTest, Vector_Swizzle_Idx_Expr) {
+TEST_F(RobustnessTest, Vector_Swizzle_Idx_Expr) {
   auto* src = R"(
 var<private> a : vec3<f32>;
 
@@ -286,12 +286,12 @@
 }
 )";
 
-  auto got = Run<BoundArrayAccessors>(src);
+  auto got = Run<Robustness>(src);
 
   EXPECT_EQ(expect, str(got));
 }
 
-TEST_F(BoundArrayAccessorsTest, Vector_Idx_Negative) {
+TEST_F(RobustnessTest, Vector_Idx_Negative) {
   auto* src = R"(
 var<private> a : vec3<f32>;
 
@@ -308,12 +308,12 @@
 }
 )";
 
-  auto got = Run<BoundArrayAccessors>(src);
+  auto got = Run<Robustness>(src);
 
   EXPECT_EQ(expect, str(got));
 }
 
-TEST_F(BoundArrayAccessorsTest, Vector_Idx_OutOfBounds) {
+TEST_F(RobustnessTest, Vector_Idx_OutOfBounds) {
   auto* src = R"(
 var<private> a : vec3<f32>;
 
@@ -330,12 +330,12 @@
 }
 )";
 
-  auto got = Run<BoundArrayAccessors>(src);
+  auto got = Run<Robustness>(src);
 
   EXPECT_EQ(expect, str(got));
 }
 
-TEST_F(BoundArrayAccessorsTest, Matrix_Idx_Scalar) {
+TEST_F(RobustnessTest, Matrix_Idx_Scalar) {
   auto* src = R"(
 var<private> a : mat3x2<f32>;
 
@@ -352,12 +352,12 @@
 }
 )";
 
-  auto got = Run<BoundArrayAccessors>(src);
+  auto got = Run<Robustness>(src);
 
   EXPECT_EQ(expect, str(got));
 }
 
-TEST_F(BoundArrayAccessorsTest, Matrix_Idx_Expr_Column) {
+TEST_F(RobustnessTest, Matrix_Idx_Expr_Column) {
   auto* src = R"(
 var<private> a : mat3x2<f32>;
 
@@ -378,12 +378,12 @@
 }
 )";
 
-  auto got = Run<BoundArrayAccessors>(src);
+  auto got = Run<Robustness>(src);
 
   EXPECT_EQ(expect, str(got));
 }
 
-TEST_F(BoundArrayAccessorsTest, Matrix_Idx_Expr_Row) {
+TEST_F(RobustnessTest, Matrix_Idx_Expr_Row) {
   auto* src = R"(
 var<private> a : mat3x2<f32>;
 
@@ -404,12 +404,12 @@
 }
 )";
 
-  auto got = Run<BoundArrayAccessors>(src);
+  auto got = Run<Robustness>(src);
 
   EXPECT_EQ(expect, str(got));
 }
 
-TEST_F(BoundArrayAccessorsTest, Matrix_Idx_Negative_Column) {
+TEST_F(RobustnessTest, Matrix_Idx_Negative_Column) {
   auto* src = R"(
 var<private> a : mat3x2<f32>;
 
@@ -426,12 +426,12 @@
 }
 )";
 
-  auto got = Run<BoundArrayAccessors>(src);
+  auto got = Run<Robustness>(src);
 
   EXPECT_EQ(expect, str(got));
 }
 
-TEST_F(BoundArrayAccessorsTest, Matrix_Idx_Negative_Row) {
+TEST_F(RobustnessTest, Matrix_Idx_Negative_Row) {
   auto* src = R"(
 var<private> a : mat3x2<f32>;
 
@@ -448,12 +448,12 @@
 }
 )";
 
-  auto got = Run<BoundArrayAccessors>(src);
+  auto got = Run<Robustness>(src);
 
   EXPECT_EQ(expect, str(got));
 }
 
-TEST_F(BoundArrayAccessorsTest, Matrix_Idx_OutOfBounds_Column) {
+TEST_F(RobustnessTest, Matrix_Idx_OutOfBounds_Column) {
   auto* src = R"(
 var<private> a : mat3x2<f32>;
 
@@ -470,12 +470,12 @@
 }
 )";
 
-  auto got = Run<BoundArrayAccessors>(src);
+  auto got = Run<Robustness>(src);
 
   EXPECT_EQ(expect, str(got));
 }
 
-TEST_F(BoundArrayAccessorsTest, Matrix_Idx_OutOfBounds_Row) {
+TEST_F(RobustnessTest, Matrix_Idx_OutOfBounds_Row) {
   auto* src = R"(
 var<private> a : mat3x2<f32>;
 
@@ -492,13 +492,13 @@
 }
 )";
 
-  auto got = Run<BoundArrayAccessors>(src);
+  auto got = Run<Robustness>(src);
 
   EXPECT_EQ(expect, str(got));
 }
 
 // TODO(dsinclair): Implement when constant_id exists
-TEST_F(BoundArrayAccessorsTest, DISABLED_Vector_Constant_Id_Clamps) {
+TEST_F(RobustnessTest, DISABLED_Vector_Constant_Id_Clamps) {
   // [[override(1300)]] let idx : i32;
   // var a : vec3<f32>
   // var b : f32 = a[idx]
@@ -507,7 +507,7 @@
 }
 
 // TODO(dsinclair): Implement when constant_id exists
-TEST_F(BoundArrayAccessorsTest, DISABLED_Array_Constant_Id_Clamps) {
+TEST_F(RobustnessTest, DISABLED_Array_Constant_Id_Clamps) {
   // [[override(1300)]] let idx : i32;
   // var a : array<f32, 4>
   // var b : f32 = a[idx]
@@ -516,7 +516,7 @@
 }
 
 // TODO(dsinclair): Implement when constant_id exists
-TEST_F(BoundArrayAccessorsTest, DISABLED_Matrix_Column_Constant_Id_Clamps) {
+TEST_F(RobustnessTest, DISABLED_Matrix_Column_Constant_Id_Clamps) {
   // [[override(1300)]] let idx : i32;
   // var a : mat3x2<f32>
   // var b : f32 = a[idx][1]
@@ -525,7 +525,7 @@
 }
 
 // TODO(dsinclair): Implement when constant_id exists
-TEST_F(BoundArrayAccessorsTest, DISABLED_Matrix_Row_Constant_Id_Clamps) {
+TEST_F(RobustnessTest, DISABLED_Matrix_Row_Constant_Id_Clamps) {
   // [[override(1300)]] let idx : i32;
   // var a : mat3x2<f32>
   // var b : f32 = a[1][idx]
@@ -533,7 +533,7 @@
   // -> var b : f32 = a[1][min(u32(idx), 0, 1)]
 }
 
-TEST_F(BoundArrayAccessorsTest, RuntimeArray_Clamps) {
+TEST_F(RobustnessTest, RuntimeArray_Clamps) {
   auto* src = R"(
 [[block]]
 struct S {
@@ -561,24 +561,24 @@
 }
 )";
 
-  auto got = Run<BoundArrayAccessors>(src);
+  auto got = Run<Robustness>(src);
 
   EXPECT_EQ(expect, str(got));
 }
 
 // TODO(dsinclair): Clamp atomics when available.
-TEST_F(BoundArrayAccessorsTest, DISABLED_Atomics_Clamp) {
+TEST_F(RobustnessTest, DISABLED_Atomics_Clamp) {
   FAIL();
 }
 
 // TODO(dsinclair): Clamp texture coord values. Depends on:
 // https://github.com/gpuweb/gpuweb/issues/1107
-TEST_F(BoundArrayAccessorsTest, DISABLED_TextureCoord_Clamp) {
+TEST_F(RobustnessTest, DISABLED_TextureCoord_Clamp) {
   FAIL();
 }
 
 // TODO(dsinclair): Test for scoped variables when Lexical Scopes implemented
-TEST_F(BoundArrayAccessorsTest, DISABLED_Scoped_Variable) {
+TEST_F(RobustnessTest, DISABLED_Scoped_Variable) {
   // var a : array<f32, 3>;
   // var i : u32;
   // {
@@ -593,7 +593,7 @@
 }
 
 // Check that existing use of min() and arrayLength() do not get renamed.
-TEST_F(BoundArrayAccessorsTest, DontRenameSymbols) {
+TEST_F(RobustnessTest, DontRenameSymbols) {
   auto* src = R"(
 [[block]]
 struct S {
@@ -630,7 +630,7 @@
 }
 )";
 
-  auto got = Run<BoundArrayAccessors>(src);
+  auto got = Run<Robustness>(src);
 
   EXPECT_EQ(expect, str(got));
 }
diff --git a/test/BUILD.gn b/test/BUILD.gn
index fba8220..dd4bcfc 100644
--- a/test/BUILD.gn
+++ b/test/BUILD.gn
@@ -278,7 +278,6 @@
     "../src/traits_test.cc",
     "../src/transform/array_length_from_uniform_test.cc",
     "../src/transform/binding_remapper_test.cc",
-    "../src/transform/bound_array_accessors_test.cc",
     "../src/transform/calculate_array_length_test.cc",
     "../src/transform/canonicalize_entry_point_io_test.cc",
     "../src/transform/decompose_memory_access_test.cc",
@@ -288,6 +287,7 @@
     "../src/transform/pad_array_elements_test.cc",
     "../src/transform/promote_initializers_to_const_var_test.cc",
     "../src/transform/renamer_test.cc",
+    "../src/transform/robustness_test.cc",
     "../src/transform/simplify_test.cc",
     "../src/transform/single_entry_point_test.cc",
     "../src/transform/test_helper.h",
