diff --git a/encoder/BUILD.gn b/encoder/BUILD.gn
index 70ed2af..7d16356 100644
--- a/encoder/BUILD.gn
+++ b/encoder/BUILD.gn
@@ -66,6 +66,14 @@
   output_file = "envelope_maker_test_config.h"
 }
 
+# Generate shipping_manager_test_config.h from
+# shipping_manager_test_config.yaml.
+cobalt_config_header("generate_shipping_manager_test_config") {
+  input_yaml = "shipping_manager_test_config.yaml"
+  output_file = "shipping_manager_test_config.h"
+}
+
+
 source_set("unittests") {
   testonly = true
 
@@ -74,9 +82,10 @@
     "encoder_test.cc",
     "encoder_test_config.h",
     "envelope_maker_test.cc",
-    "envelope_maker_test_config.h"
+    "envelope_maker_test_config.h",
     "send_retryer_test.cc",
     "shipping_manager_test.cc",
+    "shipping_manager_test_config.h",
     "shuffler_client_test.cc",
     "system_data_test.cc",
   ]
@@ -85,6 +94,7 @@
     ":encoder",
     ":generate_encoder_test_config",
     ":generate_envelope_maker_test_config",
+    ":generate_shipping_manager_test_config",
     "//third_party/gflags",
     "//third_party/gtest",
 
diff --git a/encoder/CMakeLists.txt b/encoder/CMakeLists.txt
index 66e2cfe..899008e 100644
--- a/encoder/CMakeLists.txt
+++ b/encoder/CMakeLists.txt
@@ -23,6 +23,10 @@
 generate_test_config_h(${CMAKE_CURRENT_SOURCE_DIR}/envelope_maker_test_config.yaml
       ${ENVELOPE_MAKER_TEST_CONFIG_H} 1 1 "cobalt_config_base64")
 
+set(SHIPPING_MANAGER_TEST_CONFIG_H "${CMAKE_CURRENT_BINARY_DIR}/shipping_manager_test_config.h")
+generate_test_config_h(${CMAKE_CURRENT_SOURCE_DIR}/shipping_manager_test_config.yaml
+      ${SHIPPING_MANAGER_TEST_CONFIG_H} 1 1 "cobalt_config_base64")
+
 # client_secret library
 add_library(client_secret client_secret.cc)
 target_link_libraries(client_secret cobalt_crypto)
@@ -53,7 +57,9 @@
                ${ENCODER_TEST_CONFIG_H}
                envelope_maker_test.cc
                ${ENVELOPE_MAKER_TEST_CONFIG_H}
-               send_retryer_test.cc shipping_manager_test.cc
+               send_retryer_test.cc
+               shipping_manager_test.cc
+               ${SHIPPING_MANAGER_TEST_CONFIG_H}
                shuffler_client_test.cc system_data_test.cc)
 target_link_libraries(encoder_tests
                       client_secret
diff --git a/encoder/shipping_manager_test.cc b/encoder/shipping_manager_test.cc
index 768833f..a678edf 100644
--- a/encoder/shipping_manager_test.cc
+++ b/encoder/shipping_manager_test.cc
@@ -12,26 +12,32 @@
 
 #include "./gtest.h"
 #include "./logging.h"
-#include "config/config_text_parser.h"
+#include "config/client_config.h"
 #include "encoder/client_secret.h"
 #include "encoder/encoder.h"
 #include "encoder/project_context.h"
+// Generated from shipping_manager_test_config.yaml
+#include "encoder/shipping_manager_test_config.h"
 #include "third_party/gflags/include/gflags/gflags.h"
 
 namespace cobalt {
 namespace encoder {
 
-using config::EncodingRegistry;
-using config::MetricRegistry;
+using config::ClientConfig;
 using send_retryer::CancelHandle;
 using send_retryer::SendRetryer;
 
 namespace {
 
+// These values must match the values specified in the invocation of
+// generate_test_config_h() in CMakeLists.txt. and in the invocation of
+// cobalt_config_header("generate_shipping_manager_test_config") in BUILD.gn.
 const uint32_t kCustomerId = 1;
 const uint32_t kProjectId = 1;
+
 const uint32_t kMetricId = 1;
 const uint32_t kEncodingConfigId = 1;
+
 const size_t kNoOpEncodingByteOverhead = 30;
 const size_t kMaxBytesPerObservation = 50;
 const size_t kMaxBytesPerEnvelope = 200;
@@ -45,52 +51,21 @@
 const std::chrono::seconds kDeadlinePerSendAttempt(60);
 const std::chrono::seconds kMaxSeconds = ShippingManager::kMaxSeconds;
 
-const char* kMetricConfigText = R"(
-# Metric 1 has one string part.
-element {
-  customer_id: 1
-  project_id: 1
-  id: 1
-  time_zone_policy: UTC
-  parts {
-    key: "Part1"
-    value {
-    }
-  }
-}
-)";
-
-const char* kEncodingConfigText = R"(
-# EncodingConfig 2 is NoOp.
-element {
-  customer_id: 1
-  project_id: 1
-  id: 1
-  no_op_encoding {
-  }
-}
-
-)";
-
-// Returns a ProjectContext obtained by parsing the above configuration
-// text strings.
+// Returns a ProjectContext obtained by parsing the configuration specified
+// in shipping_manager_test_config.yaml
 std::shared_ptr<ProjectContext> GetTestProject() {
-  // Parse the metric config string
-  auto metric_parse_result =
-      config::FromString<RegisteredMetrics>(kMetricConfigText, nullptr);
-  EXPECT_EQ(config::kOK, metric_parse_result.second);
-  std::shared_ptr<MetricRegistry> metric_registry(
-      metric_parse_result.first.release());
-
-  // Parse the encoding config string
-  auto encoding_parse_result =
-      config::FromString<RegisteredEncodings>(kEncodingConfigText, nullptr);
-  EXPECT_EQ(config::kOK, encoding_parse_result.second);
-  std::shared_ptr<EncodingRegistry> encoding_registry(
-      encoding_parse_result.first.release());
+  // Parse the base64-encoded, serialized CobaltConfig in
+  // shipping_manager_test_config.h. This is generated from
+  // shipping_manager_test_config.yaml. Edit that yaml file to make changes. The
+  // variable name below, |cobalt_config_base64|, must match what is
+  // specified in the build files.
+  std::unique_ptr<ClientConfig> client_config =
+      ClientConfig::CreateFromCobaltConfigBase64(cobalt_config_base64);
+  EXPECT_NE(nullptr, client_config);
 
   return std::shared_ptr<ProjectContext>(new ProjectContext(
-      kCustomerId, kProjectId, metric_registry, encoding_registry));
+      kCustomerId, kProjectId,
+      std::shared_ptr<ClientConfig>(client_config.release())));
 }
 
 class FakeSystemData : public SystemDataInterface {
diff --git a/encoder/shipping_manager_test_config.yaml b/encoder/shipping_manager_test_config.yaml
new file mode 100644
index 0000000..0281e44
--- /dev/null
+++ b/encoder/shipping_manager_test_config.yaml
@@ -0,0 +1,30 @@
+# Copyright 2018 The Fuchsia Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+################################################################################
+# This file contains the Metrics and EncodingConfigs used in
+# shipping_manager_test.cc
+#
+# It is compiled into shipping_manager_test_config.h which is included into the
+# test.
+################################################################################
+
+################################################################################
+#  Metrics
+################################################################################
+metric_configs:
+# Metric 1 has one string part, and local time_zone_policy.
+- id: 1
+  time_zone_policy: UTC
+  parts:
+    "Part1":
+
+################################################################################
+#  EncodingConfigs
+################################################################################
+encoding_configs:
+
+# EncodingConfig 1 is the NoOp encoding.
+- id: 1
+  no_op_encoding:
