Fix modules_unittests for force-test-env flag

Update various tests in modules/ to use CreateTestEnvironment
and CreateTestFieldTrials instead of production versions, allowing
modules_unittests to pass with the --force-test-environment flag.

Bug: webrtc:521534686
Change-Id: Ie19e5dda19f91ef8dfc11cc477b7b56e3147abd0
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/481361
Auto-Submit: Harald Alvestrand <hta@webrtc.org>
Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
Commit-Queue: Harald Alvestrand <hta@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#47997}
diff --git a/modules/audio_coding/BUILD.gn b/modules/audio_coding/BUILD.gn
index 0eb8f28..cb779e6 100644
--- a/modules/audio_coding/BUILD.gn
+++ b/modules/audio_coding/BUILD.gn
@@ -906,9 +906,10 @@
       "../../api:scoped_refptr",
       "../../api/audio_codecs:audio_codecs_api",
       "../../api/audio_codecs:builtin_audio_decoder_factory",
-      "../../api/environment:environment_factory",
+      "../../api/environment",
       "../../api/neteq:default_neteq_factory",
       "../../api/neteq:neteq_api",
+      "../../test:create_test_environment",
       "../../test:test_support",
       "../rtp_rtcp:rtp_rtcp_format",
       "//testing/gtest",
@@ -935,8 +936,8 @@
       "../../api/audio_codecs:audio_codecs_api",
       "../../api/audio_codecs:builtin_audio_encoder_factory",
       "../../api/environment",
-      "../../api/environment:environment_factory",
       "../../rtc_base:checks",
+      "../../test:create_test_environment",
       "../rtp_rtcp:rtp_rtcp_format",
       "//testing/gtest",
       "//third_party/abseil-cpp/absl/strings",
diff --git a/modules/audio_coding/acm2/acm_receive_test.cc b/modules/audio_coding/acm2/acm_receive_test.cc
index ac25d6f..e1b07ee 100644
--- a/modules/audio_coding/acm2/acm_receive_test.cc
+++ b/modules/audio_coding/acm2/acm_receive_test.cc
@@ -17,7 +17,6 @@
 
 #include "api/audio_codecs/audio_decoder_factory.h"
 #include "api/audio_codecs/builtin_audio_decoder_factory.h"
-#include "api/environment/environment_factory.h"
 #include "api/neteq/default_neteq_factory.h"
 #include "api/neteq/neteq.h"
 #include "api/scoped_refptr.h"
@@ -25,6 +24,7 @@
 #include "modules/audio_coding/neteq/tools/audio_sink.h"
 #include "modules/audio_coding/neteq/tools/packet_source.h"
 #include "modules/rtp_rtcp/source/rtp_packet_received.h"
+#include "test/create_test_environment.h"
 #include "test/gtest.h"
 
 namespace webrtc {
@@ -37,9 +37,10 @@
     NumOutputChannels exptected_output_channels,
     scoped_refptr<AudioDecoderFactory> decoder_factory)
     : clock_(0),
-      neteq_(DefaultNetEqFactory().Create(CreateEnvironment(&clock_),
-                                          NetEq::Config(),
-                                          std::move(decoder_factory))),
+      neteq_(
+          DefaultNetEqFactory().Create(CreateTestEnvironment({.time = &clock_}),
+                                       NetEq::Config(),
+                                       std::move(decoder_factory))),
       packet_source_(packet_source),
       audio_sink_(audio_sink),
       output_freq_hz_(output_freq_hz),
diff --git a/modules/audio_coding/acm2/acm_send_test.cc b/modules/audio_coding/acm2/acm_send_test.cc
index 54dc1c3..40c6ea9 100644
--- a/modules/audio_coding/acm2/acm_send_test.cc
+++ b/modules/audio_coding/acm2/acm_send_test.cc
@@ -22,12 +22,12 @@
 #include "api/audio_codecs/audio_encoder.h"
 #include "api/audio_codecs/audio_format.h"
 #include "api/audio_codecs/builtin_audio_encoder_factory.h"
-#include "api/environment/environment_factory.h"
 #include "modules/audio_coding/include/audio_coding_module.h"
 #include "modules/audio_coding/include/audio_coding_module_typedefs.h"
 #include "modules/audio_coding/neteq/tools/input_audio_file.h"
 #include "modules/rtp_rtcp/source/rtp_packet_received.h"
 #include "rtc_base/checks.h"
+#include "test/create_test_environment.h"
 
 namespace webrtc {
 namespace test {
@@ -36,7 +36,7 @@
                                      int source_rate_hz,
                                      int test_duration_ms)
     : clock_(0),
-      env_(CreateEnvironment(&clock_)),
+      env_(CreateTestEnvironment({.time = &clock_})),
       acm_(AudioCodingModule::Create()),
       audio_source_(audio_source),
       source_rate_hz_(source_rate_hz),
diff --git a/modules/audio_coding/codecs/opus/audio_decoder_opus_unittest.cc b/modules/audio_coding/codecs/opus/audio_decoder_opus_unittest.cc
index b4d5df5..46d2fbd 100644
--- a/modules/audio_coding/codecs/opus/audio_decoder_opus_unittest.cc
+++ b/modules/audio_coding/codecs/opus/audio_decoder_opus_unittest.cc
@@ -25,15 +25,13 @@
 #include "api/audio_codecs/audio_encoder.h"
 #include "api/audio_codecs/opus/audio_encoder_opus_config.h"
 #include "api/environment/environment.h"
-#include "api/environment/environment_factory.h"
-#include "api/field_trials.h"
 #include "modules/audio_coding/codecs/opus/audio_encoder_opus.h"
 #include "modules/audio_coding/test/PCMFile.h"
 #include "rtc_base/buffer.h"
 #include "rtc_base/checks.h"
 #include "rtc_base/numerics/safe_conversions.h"
 #include "rtc_base/random.h"
-#include "test/create_test_field_trials.h"
+#include "test/create_test_environment.h"
 #include "test/gmock.h"
 #include "test/gtest.h"
 #include "test/testsupport/file_utils.h"
@@ -246,7 +244,7 @@
 }  // namespace
 
 TEST(AudioDecoderOpusTest, MonoEncoderStereoDecoderOutputsTrivialStereo) {
-  const Environment env = EnvironmentFactory().Create();
+  const Environment env = CreateTestEnvironment();
   WhiteNoiseGenerator generator(/*amplitude_dbfs=*/-70.0);
   std::array<int16_t, kInputFrameLength> input_frame;
   // Create a mono encoder.
@@ -284,7 +282,7 @@
 
 TEST(AudioDecoderOpusTest,
      MonoEncoderStereoDecoderOutputsTrivialStereoComfortNoise) {
-  const Environment env = EnvironmentFactory().Create();
+  const Environment env = CreateTestEnvironment();
   // Create a mono encoder.
   AudioEncoderOpusConfig encoder_config =
       GetEncoderConfig(/*num_channels=*/1, /*dtx_enabled=*/true);
@@ -328,9 +326,8 @@
 }
 
 TEST(AudioDecoderOpusTest, MonoEncoderStereoDecoderOutputsTrivialStereoPlc) {
-  const FieldTrials trials =
-      CreateTestFieldTrials("WebRTC-Audio-OpusGeneratePlc/Enabled/");
-  const Environment env = CreateEnvironment(&trials);
+  const Environment env = CreateTestEnvironment(
+      {.field_trials = "WebRTC-Audio-OpusGeneratePlc/Enabled/"});
   // Create a mono encoder.
   AudioEncoderOpusConfig encoder_config =
       GetEncoderConfig(/*num_channels=*/1, /*dtx_enabled=*/false);
@@ -367,7 +364,7 @@
 }
 
 TEST(AudioDecoderOpusTest, MonoEncoderStereoDecoderOutputsTrivialStereoFec) {
-  const Environment env = EnvironmentFactory().Create();
+  const Environment env = CreateTestEnvironment();
   AudioEncoderOpusConfig encoder_config =
       GetEncoderConfig(/*num_channels=*/1, /*dtx_enabled=*/false);
   encoder_config.fec_enabled = true;
@@ -422,7 +419,7 @@
 
 TEST(AudioDecoderOpusTest,
      StereoEncoderStereoDecoderOutputsNonTrivialStereoComfortNoise) {
-  const Environment env = EnvironmentFactory().Create();
+  const Environment env = CreateTestEnvironment();
   // Create a stereo encoder.
   AudioEncoderOpusConfig encoder_config =
       GetEncoderConfig(/*num_channels=*/2, /*dtx_enabled=*/true);
@@ -460,9 +457,8 @@
 
 TEST(AudioDecoderOpusTest,
      StereoEncoderStereoDecoderOutputsNonTrivialStereoPlc) {
-  const FieldTrials trials =
-      CreateTestFieldTrials("WebRTC-Audio-OpusGeneratePlc/Enabled/");
-  const Environment env = CreateEnvironment(&trials);
+  const Environment env = CreateTestEnvironment(
+      {.field_trials = "WebRTC-Audio-OpusGeneratePlc/Enabled/"});
   // Create a stereo encoder.
   AudioEncoderOpusConfig encoder_config =
       GetEncoderConfig(/*num_channels=*/2, /*dtx_enabled=*/false);
diff --git a/modules/audio_coding/neteq/mock/mock_decoder_database.h b/modules/audio_coding/neteq/mock/mock_decoder_database.h
index c323237..3401980 100644
--- a/modules/audio_coding/neteq/mock/mock_decoder_database.h
+++ b/modules/audio_coding/neteq/mock/mock_decoder_database.h
@@ -15,9 +15,9 @@
 
 #include "api/audio_codecs/audio_decoder.h"
 #include "api/audio_codecs/audio_format.h"
-#include "api/environment/environment_factory.h"
 #include "modules/audio_coding/codecs/cng/webrtc_cng.h"
 #include "modules/audio_coding/neteq/decoder_database.h"
+#include "test/create_test_environment.h"
 #include "test/gmock.h"
 
 namespace webrtc {
@@ -25,7 +25,7 @@
 class MockDecoderDatabase : public DecoderDatabase {
  public:
   MockDecoderDatabase()
-      : DecoderDatabase(CreateEnvironment(),
+      : DecoderDatabase(CreateTestEnvironment(),
                         /*decoder_factory=*/nullptr) {}
   ~MockDecoderDatabase() override { Die(); }
   MOCK_METHOD(void, Die, ());
diff --git a/modules/audio_coding/neteq/neteq_decoder_plc_unittest.cc b/modules/audio_coding/neteq/neteq_decoder_plc_unittest.cc
index 116892a..2c9e6c1 100644
--- a/modules/audio_coding/neteq/neteq_decoder_plc_unittest.cc
+++ b/modules/audio_coding/neteq/neteq_decoder_plc_unittest.cc
@@ -21,6 +21,7 @@
 
 #include "api/audio_codecs/audio_decoder.h"
 #include "api/audio_codecs/audio_format.h"
+#include "api/field_trials.h"
 #include "api/make_ref_counted.h"
 #include "api/neteq/neteq.h"
 #include "modules/audio_coding/codecs/pcm16b/audio_encoder_pcm16b.h"
@@ -34,6 +35,7 @@
 #include "rtc_base/checks.h"
 #include "rtc_base/numerics/safe_conversions.h"
 #include "test/audio_decoder_proxy_factory.h"
+#include "test/create_test_field_trials.h"
 #include "test/gtest.h"
 #include "test/testsupport/file_utils.h"
 
@@ -223,11 +225,13 @@
   // No callback objects.
   NetEqTest::Callbacks callbacks;
 
-  NetEqTest neteq_test(
-      config, /*decoder_factory=*/
-      make_ref_counted<test::AudioDecoderProxyFactory>(&dec),
-      /*codecs=*/decoders, /*text_log=*/nullptr, /*neteq_factory=*/nullptr,
-      /*input=*/std::move(lossy_input), std::move(output), callbacks);
+  FieldTrials field_trials = CreateTestFieldTrials("");
+  NetEqTest neteq_test(config, /*decoder_factory=*/
+                       make_ref_counted<test::AudioDecoderProxyFactory>(&dec),
+                       /*codecs=*/decoders, /*text_log=*/nullptr,
+                       /*neteq_factory=*/nullptr,
+                       /*input=*/std::move(lossy_input), std::move(output),
+                       callbacks, &field_trials);
   EXPECT_LE(kRunTimeMs, neteq_test.Run());
 
   auto lifetime_stats = neteq_test.LifetimeStats();
diff --git a/modules/audio_coding/neteq/neteq_impl_unittest.cc b/modules/audio_coding/neteq/neteq_impl_unittest.cc
index 30bf865..18b3177 100644
--- a/modules/audio_coding/neteq/neteq_impl_unittest.cc
+++ b/modules/audio_coding/neteq/neteq_impl_unittest.cc
@@ -24,7 +24,6 @@
 #include "api/audio_codecs/audio_format.h"
 #include "api/audio_codecs/builtin_audio_decoder_factory.h"
 #include "api/environment/environment.h"
-#include "api/environment/environment_factory.h"
 #include "api/make_ref_counted.h"
 #include "api/neteq/default_neteq_controller_factory.h"
 #include "api/neteq/default_neteq_factory.h"
@@ -86,7 +85,7 @@
 
 class NetEqImplTest : public ::testing::Test {
  protected:
-  NetEqImplTest() : clock_(0), env_(CreateEnvironment(&clock_)) {
+  NetEqImplTest() : clock_(0), env_(CreateTestEnvironment({.time = &clock_})) {
     config_.sample_rate_hz = 8000;
   }
 
diff --git a/modules/audio_coding/neteq/neteq_stereo_unittest.cc b/modules/audio_coding/neteq/neteq_stereo_unittest.cc
index 54c81b9..5979081 100644
--- a/modules/audio_coding/neteq/neteq_stereo_unittest.cc
+++ b/modules/audio_coding/neteq/neteq_stereo_unittest.cc
@@ -24,7 +24,6 @@
 #include "api/audio_codecs/audio_format.h"
 #include "api/audio_codecs/builtin_audio_decoder_factory.h"
 #include "api/environment/environment.h"
-#include "api/environment/environment_factory.h"
 #include "api/neteq/default_neteq_factory.h"
 #include "api/neteq/neteq.h"
 #include "api/rtp_headers.h"
@@ -35,6 +34,7 @@
 #include "rtc_base/checks.h"
 #include "rtc_base/strings/string_builder.h"
 #include "system_wrappers/include/clock.h"
+#include "test/create_test_environment.h"
 #include "test/gtest.h"
 #include "test/testsupport/file_utils.h"
 
@@ -71,7 +71,7 @@
             static_cast<size_t>(frame_size_ms_ * samples_per_ms_)),
         output_size_samples_(10 * samples_per_ms_),
         clock_(0),
-        env_(CreateEnvironment(&clock_)),
+        env_(CreateTestEnvironment({.time = &clock_})),
         rtp_generator_mono_(samples_per_ms_),
         rtp_generator_(samples_per_ms_),
         payload_size_bytes_(0),
diff --git a/modules/audio_coding/neteq/neteq_unittest.cc b/modules/audio_coding/neteq/neteq_unittest.cc
index 4a25d56..7a96403 100644
--- a/modules/audio_coding/neteq/neteq_unittest.cc
+++ b/modules/audio_coding/neteq/neteq_unittest.cc
@@ -25,6 +25,7 @@
 #include "absl/flags/flag.h"
 #include "api/audio/audio_frame.h"
 #include "api/audio_codecs/builtin_audio_decoder_factory.h"
+#include "api/field_trials.h"
 #include "api/rtp_headers.h"
 #include "api/units/time_delta.h"
 #include "modules/audio_coding/codecs/pcm16b/pcm16b.h"
@@ -39,6 +40,7 @@
 #include "rtc_base/numerics/safe_conversions.h"
 #include "rtc_base/strings/string_builder.h"
 #include "rtc_base/system/arch.h"
+#include "test/create_test_field_trials.h"
 #include "test/gtest.h"
 #include "test/testsupport/file_utils.h"
 
@@ -1005,10 +1007,11 @@
       new TimeLimitedNetEqInput(std::move(input), 20000));
   std::unique_ptr<AudioSink> output(new VoidAudioSink);
   NetEqTest::Callbacks callbacks;
+  FieldTrials field_trials = CreateTestFieldTrials("");
   NetEqTest test(config, CreateBuiltinAudioDecoderFactory(), codecs,
                  /*text_log=*/nullptr, /*neteq_factory=*/nullptr,
                  /*input=*/std::move(input_time_limit), std::move(output),
-                 callbacks);
+                 callbacks, &field_trials);
   test.Run();
   const auto stats = test.SimulationStats();
   EXPECT_EQ(0, stats.accelerate_rate);
diff --git a/modules/audio_coding/neteq/test/neteq_decoding_test.cc b/modules/audio_coding/neteq/test/neteq_decoding_test.cc
index 45c3d6f..6619500 100644
--- a/modules/audio_coding/neteq/test/neteq_decoding_test.cc
+++ b/modules/audio_coding/neteq/test/neteq_decoding_test.cc
@@ -21,7 +21,6 @@
 #include "api/audio/audio_frame.h"
 #include "api/audio_codecs/audio_format.h"
 #include "api/audio_codecs/builtin_audio_decoder_factory.h"
-#include "api/environment/environment_factory.h"
 #include "api/neteq/default_neteq_factory.h"
 #include "api/neteq/neteq.h"
 #include "api/rtp_headers.h"
@@ -29,6 +28,7 @@
 #include "modules/audio_coding/neteq/test/result_sink.h"
 #include "modules/audio_coding/neteq/tools/rtp_file_source.h"
 #include "rtc_base/strings/string_builder.h"
+#include "test/create_test_environment.h"
 #include "test/gtest.h"
 #include "test/testsupport/file_utils.h"
 
@@ -72,7 +72,7 @@
 
 NetEqDecodingTest::NetEqDecodingTest()
     : clock_(0),
-      env_(CreateEnvironment(&clock_)),
+      env_(CreateTestEnvironment({.time = &clock_})),
       config_(),
       output_sample_rate_(kInitSampleRateHz),
       algorithmic_delay_ms_(0) {
diff --git a/modules/audio_device/audio_device_unittest.cc b/modules/audio_device/audio_device_unittest.cc
index b75043b..d230b12 100644
--- a/modules/audio_device/audio_device_unittest.cc
+++ b/modules/audio_device/audio_device_unittest.cc
@@ -511,9 +511,11 @@
 // Both the tests and the code under test are very old, unstaffed and not
 // a part of webRTC stack.
 // Here sanitizers make the tests hang, without providing usefull report.
+// It also hangs under some Linux configurations.
 // So we are just disabling them, without intention to re-enable them.
-#if defined(ADDRESS_SANITIZER) || defined(MEMORY_SANITIZER) || \
-    defined(THREAD_SANITIZER) || defined(UNDEFINED_SANITIZER)
+#if defined(ADDRESS_SANITIZER) || defined(MEMORY_SANITIZER) ||   \
+    defined(THREAD_SANITIZER) || defined(UNDEFINED_SANITIZER) || \
+    defined(WEBRTC_LINUX)
 #define MAYBE_AudioDeviceTest DISABLED_AudioDeviceTest
 #else
 #define MAYBE_AudioDeviceTest AudioDeviceTest
diff --git a/modules/audio_device/include/test_audio_device_unittest.cc b/modules/audio_device/include/test_audio_device_unittest.cc
index b78c31b..90611e4 100644
--- a/modules/audio_device/include/test_audio_device_unittest.cc
+++ b/modules/audio_device/include/test_audio_device_unittest.cc
@@ -28,7 +28,6 @@
 #include "api/audio/audio_device.h"
 #include "api/audio/audio_device_defines.h"
 #include "api/environment/environment.h"
-#include "api/environment/environment_factory.h"
 #include "api/scoped_refptr.h"
 #include "api/units/time_delta.h"
 #include "api/units/timestamp.h"
@@ -37,6 +36,7 @@
 #include "rtc_base/checks.h"
 #include "rtc_base/synchronization/mutex.h"
 #include "rtc_base/thread_annotations.h"
+#include "test/create_test_environment.h"
 #include "test/gmock.h"
 #include "test/gtest.h"
 #include "test/testsupport/file_utils.h"
@@ -484,8 +484,7 @@
 
 TEST(TestAudioDeviceModuleTest, CreatedADMCanRecord) {
   GlobalSimulatedTimeController time_controller(kStartTime);
-  const Environment env = CreateEnvironment(
-      time_controller.GetClock(), time_controller.GetTaskQueueFactory());
+  const Environment env = CreateTestEnvironment({.time = &time_controller});
   TestAudioTransport audio_transport(TestAudioTransport::Mode::kRecording);
   std::unique_ptr<TestAudioDeviceModule::PulsedNoiseCapturer> capturer =
       TestAudioDeviceModule::CreatePulsedNoiseCapturer(
@@ -518,8 +517,7 @@
 
 TEST(TestAudioDeviceModuleTest, CreatedADMCanPlay) {
   GlobalSimulatedTimeController time_controller(kStartTime);
-  const Environment env = CreateEnvironment(
-      time_controller.GetClock(), time_controller.GetTaskQueueFactory());
+  const Environment env = CreateTestEnvironment({.time = &time_controller});
   TestAudioTransport audio_transport(TestAudioTransport::Mode::kPlaying);
   std::unique_ptr<TestAudioDeviceModule::Renderer> renderer =
       TestAudioDeviceModule::CreateDiscardRenderer(
diff --git a/modules/audio_processing/aec_dump/BUILD.gn b/modules/audio_processing/aec_dump/BUILD.gn
index 586a38e..9bab8d7 100644
--- a/modules/audio_processing/aec_dump/BUILD.gn
+++ b/modules/audio_processing/aec_dump/BUILD.gn
@@ -51,6 +51,7 @@
       "../../../api/audio:builtin_audio_processing_builder",
       "../../../api/environment:environment_factory",
       "../../../rtc_base:checks",
+      "../../../test:create_test_environment",
       "../../../test:test_support",
       "//testing/gtest",
     ]
diff --git a/modules/audio_processing/aec_dump/aec_dump_integration_test.cc b/modules/audio_processing/aec_dump/aec_dump_integration_test.cc
index 7701877..04e7db1 100644
--- a/modules/audio_processing/aec_dump/aec_dump_integration_test.cc
+++ b/modules/audio_processing/aec_dump/aec_dump_integration_test.cc
@@ -15,10 +15,10 @@
 
 #include "api/audio/audio_processing.h"
 #include "api/audio/builtin_audio_processing_builder.h"
-#include "api/environment/environment_factory.h"
 #include "api/scoped_refptr.h"
 #include "modules/audio_processing/aec_dump/mock_aec_dump.h"
 #include "rtc_base/checks.h"
+#include "test/create_test_environment.h"
 #include "test/gmock.h"
 #include "test/gtest.h"
 
@@ -32,7 +32,7 @@
 webrtc::scoped_refptr<webrtc::AudioProcessing> CreateAudioProcessing() {
   webrtc::scoped_refptr<webrtc::AudioProcessing> apm =
       webrtc::BuiltinAudioProcessingBuilder().Build(
-          webrtc::CreateEnvironment());
+          webrtc::CreateTestEnvironment());
   RTC_DCHECK(apm);
   return apm;
 }
diff --git a/modules/audio_processing/test/debug_dump_replayer.cc b/modules/audio_processing/test/debug_dump_replayer.cc
index ca09367..d8ff50d 100644
--- a/modules/audio_processing/test/debug_dump_replayer.cc
+++ b/modules/audio_processing/test/debug_dump_replayer.cc
@@ -20,11 +20,11 @@
 #include "absl/strings/string_view.h"
 #include "api/audio/audio_processing.h"
 #include "api/audio/builtin_audio_processing_builder.h"
-#include "api/environment/environment_factory.h"
 #include "common_audio/channel_buffer.h"
 #include "modules/audio_processing/test/protobuf_utils.h"
 #include "modules/audio_processing/test/runtime_setting_util.h"
 #include "rtc_base/checks.h"
+#include "test/create_test_environment.h"
 
 namespace webrtc {
 namespace test {
@@ -197,7 +197,7 @@
   // We only create APM once, since changes on these fields should not
   // happen in current implementation.
   if (apm_ == nullptr) {
-    apm_ = BuiltinAudioProcessingBuilder().Build(CreateEnvironment());
+    apm_ = BuiltinAudioProcessingBuilder().Build(CreateTestEnvironment());
   }
 }
 
diff --git a/modules/audio_processing/test/debug_dump_test.cc b/modules/audio_processing/test/debug_dump_test.cc
index b6a5f84..12c57de 100644
--- a/modules/audio_processing/test/debug_dump_test.cc
+++ b/modules/audio_processing/test/debug_dump_test.cc
@@ -22,7 +22,6 @@
 #include "absl/strings/string_view.h"
 #include "api/audio/audio_processing.h"
 #include "api/audio/builtin_audio_processing_builder.h"
-#include "api/environment/environment_factory.h"
 #include "api/scoped_refptr.h"
 #include "common_audio/channel_buffer.h"
 #include "common_audio/include/audio_util.h"
@@ -32,6 +31,7 @@
 #include "modules/audio_processing/test/protobuf_utils.h"
 #include "rtc_base/checks.h"
 #include "rtc_base/task_queue_for_test.h"
+#include "test/create_test_environment.h"
 #include "test/gtest.h"
 #include "test/testsupport/file_utils.h"
 
@@ -150,7 +150,7 @@
       enable_pre_amplifier_(enable_pre_amplifier),
       worker_queue_("debug_dump_generator_worker_queue"),
       dump_file_name_(dump_file_name) {
-  apm_ = BuiltinAudioProcessingBuilder().Build(CreateEnvironment());
+  apm_ = BuiltinAudioProcessingBuilder().Build(CreateTestEnvironment());
 }
 
 DebugDumpGenerator::DebugDumpGenerator(
diff --git a/modules/congestion_controller/BUILD.gn b/modules/congestion_controller/BUILD.gn
index 81973e7..de70698 100644
--- a/modules/congestion_controller/BUILD.gn
+++ b/modules/congestion_controller/BUILD.gn
@@ -64,6 +64,7 @@
       "../../api/units:timestamp",
       "../../rtc_base:buffer",
       "../../system_wrappers",
+      "../../test:create_test_environment",
       "../../test:create_test_field_trials",
       "../../test:test_support",
       "../../test/scenario",
diff --git a/modules/congestion_controller/goog_cc/BUILD.gn b/modules/congestion_controller/goog_cc/BUILD.gn
index a8c9da4..b52738a 100644
--- a/modules/congestion_controller/goog_cc/BUILD.gn
+++ b/modules/congestion_controller/goog_cc/BUILD.gn
@@ -288,6 +288,7 @@
         "../../../rtc_base:stringutils",
         "../../../rtc_base/experiments:alr_experiment",
         "../../../system_wrappers",
+        "../../../test:create_test_environment",
         "../../../test:create_test_field_trials",
         "../../../test:test_support",
         "../../../test/network:emulated_network",
diff --git a/modules/congestion_controller/goog_cc/goog_cc_network_control_unittest.cc b/modules/congestion_controller/goog_cc/goog_cc_network_control_unittest.cc
index 225ba8a..aa6f2fc 100644
--- a/modules/congestion_controller/goog_cc/goog_cc_network_control_unittest.cc
+++ b/modules/congestion_controller/goog_cc/goog_cc_network_control_unittest.cc
@@ -19,7 +19,6 @@
 
 #include "absl/strings/string_view.h"
 #include "api/environment/environment.h"
-#include "api/environment/environment_factory.h"
 #include "api/field_trials.h"
 #include "api/test/network_emulation/create_cross_traffic.h"
 #include "api/test/network_emulation/cross_traffic.h"
@@ -31,6 +30,7 @@
 #include "api/units/time_delta.h"
 #include "api/units/timestamp.h"
 #include "call/video_receive_stream.h"
+#include "test/create_test_environment.h"
 #include "test/create_test_field_trials.h"
 #include "test/gmock.h"
 #include "test/gtest.h"
@@ -161,7 +161,7 @@
   GoogCcNetworkControllerFactory factory;
   Scenario s("googcc_unit/target_capacity" + std::string(test_name), false);
   CallClientConfig config;
-  config.field_trials.Merge(FieldTrials(field_trials));
+  config.field_trials.Merge(CreateTestFieldTrials(field_trials));
   config.transport.cc_factory = &factory;
   config.transport.rates.min_rate = DataRate::KilobitsPerSec(10);
   config.transport.rates.max_rate = DataRate::KilobitsPerSec(1500);
@@ -269,7 +269,8 @@
   }
 
   FieldTrials field_trials_ = CreateTestFieldTrials();
-  const Environment env_ = CreateEnvironment(&field_trials_);
+  const Environment env_ =
+      CreateTestEnvironment({.field_trials = &field_trials_});
   GoogCcNetworkControllerFactory factory_;
 };
 
diff --git a/modules/congestion_controller/receive_side_congestion_controller_unittest.cc b/modules/congestion_controller/receive_side_congestion_controller_unittest.cc
index fb91272..f5ef560 100644
--- a/modules/congestion_controller/receive_side_congestion_controller_unittest.cc
+++ b/modules/congestion_controller/receive_side_congestion_controller_unittest.cc
@@ -14,7 +14,6 @@
 #include <memory>
 #include <vector>
 
-#include "api/environment/environment_factory.h"
 #include "api/field_trials.h"
 #include "api/media_types.h"
 #include "api/rtp_header_extension_id.h"
@@ -34,6 +33,7 @@
 #include "modules/rtp_rtcp/source/rtp_packet_received.h"
 #include "rtc_base/buffer.h"
 #include "system_wrappers/include/clock.h"
+#include "test/create_test_environment.h"
 #include "test/create_test_field_trials.h"
 #include "test/gmock.h"
 #include "test/gtest.h"
@@ -59,9 +59,9 @@
   MockFunction<void(uint64_t, std::vector<uint32_t>)> remb_sender;
   SimulatedClock clock(123456);
 
-  ReceiveSideCongestionController controller(CreateEnvironment(&clock),
-                                             feedback_sender.AsStdFunction(),
-                                             remb_sender.AsStdFunction());
+  ReceiveSideCongestionController controller(
+      CreateTestEnvironment({.time = &clock}), feedback_sender.AsStdFunction(),
+      remb_sender.AsStdFunction());
 
   RtpHeaderExtensionMap extensions;
   extensions.Register<AbsoluteSendTime>(RtpHeaderExtensionId(1));
@@ -89,9 +89,9 @@
   MockFunction<void(uint64_t, std::vector<uint32_t>)> remb_sender;
   SimulatedClock clock(123456);
 
-  ReceiveSideCongestionController controller(CreateEnvironment(&clock),
-                                             feedback_sender.AsStdFunction(),
-                                             remb_sender.AsStdFunction());
+  ReceiveSideCongestionController controller(
+      CreateTestEnvironment({.time = &clock}), feedback_sender.AsStdFunction(),
+      remb_sender.AsStdFunction());
   EXPECT_CALL(remb_sender, Call(123, _));
   controller.SetMaxDesiredReceiveBitrate(DataRate::BitsPerSec(123));
 }
@@ -124,8 +124,8 @@
   MockFunction<void(uint64_t, std::vector<uint32_t>)> remb_sender;
   SimulatedClock clock(123456);
   ReceiveSideCongestionController controller(
-      CreateEnvironment(&clock, &field_trials), rtcp_sender.AsStdFunction(),
-      remb_sender.AsStdFunction());
+      CreateTestEnvironment({.field_trials = &field_trials, .time = &clock}),
+      rtcp_sender.AsStdFunction(), remb_sender.AsStdFunction());
 
   // Expect that RTCP feedback is sent.
   EXPECT_CALL(rtcp_sender, Call)
@@ -149,9 +149,9 @@
       rtcp_sender;
   MockFunction<void(uint64_t, std::vector<uint32_t>)> remb_sender;
   SimulatedClock clock(123456);
-  ReceiveSideCongestionController controller(CreateEnvironment(&clock),
-                                             rtcp_sender.AsStdFunction(),
-                                             remb_sender.AsStdFunction());
+  ReceiveSideCongestionController controller(
+      CreateTestEnvironment({.time = &clock}), rtcp_sender.AsStdFunction(),
+      remb_sender.AsStdFunction());
   controller.SetPreferredRtcpCcAckType(RtcpFeedbackType::CCFB);
 
   // Expect that RTCP feedback is sent.
@@ -177,9 +177,9 @@
       rtcp_sender;
   MockFunction<void(uint64_t, std::vector<uint32_t>)> remb_sender;
   SimulatedClock clock(123456);
-  ReceiveSideCongestionController controller(CreateEnvironment(&clock),
-                                             rtcp_sender.AsStdFunction(),
-                                             remb_sender.AsStdFunction());
+  ReceiveSideCongestionController controller(
+      CreateTestEnvironment({.time = &clock}), rtcp_sender.AsStdFunction(),
+      remb_sender.AsStdFunction());
   controller.SetPreferredRtcpCcAckType(RtcpFeedbackType::TRANSPORT_CC);
 
   // Expect that RTCP feedback is sent.
@@ -208,9 +208,9 @@
       rtcp_sender;
   MockFunction<void(uint64_t, std::vector<uint32_t>)> remb_sender;
   SimulatedClock clock(123456);
-  ReceiveSideCongestionController controller(CreateEnvironment(&clock),
-                                             rtcp_sender.AsStdFunction(),
-                                             remb_sender.AsStdFunction());
+  ReceiveSideCongestionController controller(
+      CreateTestEnvironment({.time = &clock}), rtcp_sender.AsStdFunction(),
+      remb_sender.AsStdFunction());
 
   // No Transport feedback is sent because received packet does not have
   // transport sequence number rtp header extension.
@@ -272,9 +272,9 @@
   MockFunction<void(uint64_t, std::vector<uint32_t>)> remb_sender;
   SimulatedClock clock(123456);
 
-  ReceiveSideCongestionController controller(CreateEnvironment(&clock),
-                                             feedback_sender.AsStdFunction(),
-                                             remb_sender.AsStdFunction());
+  ReceiveSideCongestionController controller(
+      CreateTestEnvironment({.time = &clock}), feedback_sender.AsStdFunction(),
+      remb_sender.AsStdFunction());
 
   // Test new overload.
   controller.OnBitrateChanged(DataRate::BitsPerSec(500'000),
diff --git a/modules/remote_bitrate_estimator/BUILD.gn b/modules/remote_bitrate_estimator/BUILD.gn
index 70bbfaf..b7f4727 100644
--- a/modules/remote_bitrate_estimator/BUILD.gn
+++ b/modules/remote_bitrate_estimator/BUILD.gn
@@ -192,6 +192,7 @@
       "../../rtc_base:logging",
       "../../rtc_base:random",
       "../../system_wrappers",
+      "../../test:create_test_environment",
       "../../test:create_test_field_trials",
       "../../test:fileutils",
       "../../test:test_support",
diff --git a/modules/remote_bitrate_estimator/congestion_control_feedback_generator_unittest.cc b/modules/remote_bitrate_estimator/congestion_control_feedback_generator_unittest.cc
index da1e300..29fba5f 100644
--- a/modules/remote_bitrate_estimator/congestion_control_feedback_generator_unittest.cc
+++ b/modules/remote_bitrate_estimator/congestion_control_feedback_generator_unittest.cc
@@ -14,11 +14,8 @@
 #include <cstddef>
 #include <cstdint>
 #include <memory>
-#include <utility>
 #include <vector>
 
-#include "api/environment/environment_factory.h"
-#include "api/field_trials.h"
 #include "api/transport/ecn_marking.h"
 #include "api/units/data_rate.h"
 #include "api/units/data_size.h"
@@ -30,6 +27,7 @@
 #include "modules/rtp_rtcp/source/rtp_packet_received.h"
 #include "rtc_base/buffer.h"
 #include "system_wrappers/include/clock.h"
+#include "test/create_test_environment.h"
 #include "test/gmock.h"
 #include "test/gtest.h"
 
@@ -63,8 +61,8 @@
   MockFunction<void(std::vector<std::unique_ptr<rtcp::RtcpPacket>>)>
       rtcp_sender;
   SimulatedClock clock(123456);
-  CongestionControlFeedbackGenerator generator(CreateEnvironment(&clock),
-                                               rtcp_sender.AsStdFunction());
+  CongestionControlFeedbackGenerator generator(
+      CreateTestEnvironment({.time = &clock}), rtcp_sender.AsStdFunction());
 
   EXPECT_GT(generator.Process(clock.CurrentTime()), TimeDelta::Millis(10));
   clock.AdvanceTimeMilliseconds(10);
@@ -81,8 +79,8 @@
   MockFunction<void(std::vector<std::unique_ptr<rtcp::RtcpPacket>>)>
       rtcp_sender;
   SimulatedClock clock(123456);
-  CongestionControlFeedbackGenerator generator(CreateEnvironment(&clock),
-                                               rtcp_sender.AsStdFunction());
+  CongestionControlFeedbackGenerator generator(
+      CreateTestEnvironment({.time = &clock}), rtcp_sender.AsStdFunction());
 
   TimeDelta time_to_next = generator.Process(clock.CurrentTime());
   EXPECT_EQ(time_to_next, TimeDelta::Millis(25));
@@ -108,8 +106,8 @@
       rtcp_sender;
   constexpr TimeDelta kSmallTimeInterval = TimeDelta::Millis(2);
   SimulatedClock clock(123456);
-  CongestionControlFeedbackGenerator generator(CreateEnvironment(&clock),
-                                               rtcp_sender.AsStdFunction());
+  CongestionControlFeedbackGenerator generator(
+      CreateTestEnvironment({.time = &clock}), rtcp_sender.AsStdFunction());
 
   TimeDelta time_to_next_process = generator.Process(clock.CurrentTime());
   Timestamp expected_feedback_time = clock.CurrentTime();
@@ -137,8 +135,8 @@
   MockFunction<void(std::vector<std::unique_ptr<rtcp::RtcpPacket>>)>
       rtcp_sender;
   SimulatedClock clock(123456);
-  CongestionControlFeedbackGenerator generator(CreateEnvironment(&clock),
-                                               rtcp_sender.AsStdFunction());
+  CongestionControlFeedbackGenerator generator(
+      CreateTestEnvironment({.time = &clock}), rtcp_sender.AsStdFunction());
 
   int number_of_feedback_packets = 0;
   DataSize total_feedback_size;
@@ -178,8 +176,8 @@
   MockFunction<void(std::vector<std::unique_ptr<rtcp::RtcpPacket>>)>
       rtcp_sender;
   SimulatedClock clock(123456);
-  CongestionControlFeedbackGenerator generator(CreateEnvironment(&clock),
-                                               rtcp_sender.AsStdFunction());
+  CongestionControlFeedbackGenerator generator(
+      CreateTestEnvironment({.time = &clock}), rtcp_sender.AsStdFunction());
 
   int number_of_feedback_packets = 0;
   DataSize total_feedback_size = DataSize::Zero();
@@ -236,8 +234,8 @@
       rtcp_sender;
   SimulatedClock clock(123456);
   constexpr TimeDelta kSmallTimeInterval = TimeDelta::Millis(2);
-  CongestionControlFeedbackGenerator generator(CreateEnvironment(&clock),
-                                               rtcp_sender.AsStdFunction());
+  CongestionControlFeedbackGenerator generator(
+      CreateTestEnvironment({.time = &clock}), rtcp_sender.AsStdFunction());
 
   TimeDelta time_to_next_process = generator.Process(clock.CurrentTime());
 
@@ -299,8 +297,8 @@
       rtcp_sender;
   SimulatedClock clock(123456);
   constexpr TimeDelta kSmallTimeInterval = TimeDelta::Millis(2);
-  CongestionControlFeedbackGenerator generator(CreateEnvironment(&clock),
-                                               rtcp_sender.AsStdFunction());
+  CongestionControlFeedbackGenerator generator(
+      CreateTestEnvironment({.time = &clock}), rtcp_sender.AsStdFunction());
 
   TimeDelta time_to_next_process = generator.Process(clock.CurrentTime());
   RtpPacketReceived packet_1 =
@@ -341,10 +339,11 @@
   SimulatedClock clock(123456);
 
   // Enable 5% feedback fraction limit via field trial
-  auto field_trials = std::make_unique<FieldTrials>(
-      "WebRTC-RFC8888CongestionControlFeedback/feedback_fraction:0.05/");
   CongestionControlFeedbackGenerator generator(
-      CreateEnvironment(&clock, std::move(field_trials)),
+      CreateTestEnvironment({.field_trials =
+                                 "WebRTC-RFC8888CongestionControlFeedback/"
+                                 "feedback_fraction:0.05/",
+                             .time = &clock}),
       rtcp_sender.AsStdFunction());
 
   // Notify the generator that send BWE is 100 kbps.
@@ -398,10 +397,11 @@
   SimulatedClock clock(123456);
 
   // Enable 5% feedback fraction limit via field trial
-  auto field_trials = std::make_unique<FieldTrials>(
-      "WebRTC-RFC8888CongestionControlFeedback/feedback_fraction:0.05/");
   CongestionControlFeedbackGenerator generator(
-      CreateEnvironment(&clock, std::move(field_trials)),
+      CreateTestEnvironment({.field_trials =
+                                 "WebRTC-RFC8888CongestionControlFeedback/"
+                                 "feedback_fraction:0.05/",
+                             .time = &clock}),
       rtcp_sender.AsStdFunction());
 
   // Notify the generator that send BWE is extremely low (10 kbps).
@@ -457,10 +457,11 @@
   SimulatedClock clock(123456);
 
   // Enable 5% feedback fraction limit via field trial
-  auto field_trials = std::make_unique<FieldTrials>(
-      "WebRTC-RFC8888CongestionControlFeedback/feedback_fraction:0.05/");
   CongestionControlFeedbackGenerator generator(
-      CreateEnvironment(&clock, std::move(field_trials)),
+      CreateTestEnvironment({.field_trials =
+                                 "WebRTC-RFC8888CongestionControlFeedback/"
+                                 "feedback_fraction:0.05/",
+                             .time = &clock}),
       rtcp_sender.AsStdFunction());
 
   // Notify the generator that send BWE is extremely low (10 kbps) but we are
diff --git a/modules/remote_bitrate_estimator/remote_bitrate_estimator_abs_send_time_unittest.cc b/modules/remote_bitrate_estimator/remote_bitrate_estimator_abs_send_time_unittest.cc
index 4f6c94d..7129255 100644
--- a/modules/remote_bitrate_estimator/remote_bitrate_estimator_abs_send_time_unittest.cc
+++ b/modules/remote_bitrate_estimator/remote_bitrate_estimator_abs_send_time_unittest.cc
@@ -13,8 +13,8 @@
 #include <cstdint>
 #include <memory>
 
-#include "api/environment/environment_factory.h"
 #include "modules/remote_bitrate_estimator/remote_bitrate_estimator_unittest_helper.h"
+#include "test/create_test_environment.h"
 #include "test/gtest.h"
 
 namespace webrtc {
@@ -31,7 +31,7 @@
 
   void SetUp() override {
     bitrate_estimator_ = std::make_unique<RemoteBitrateEstimatorAbsSendTime>(
-        CreateEnvironment(&clock_), bitrate_observer_.get());
+        CreateTestEnvironment({.time = &clock_}), bitrate_observer_.get());
   }
 };
 
diff --git a/modules/remote_bitrate_estimator/remote_bitrate_estimator_single_stream_unittest.cc b/modules/remote_bitrate_estimator/remote_bitrate_estimator_single_stream_unittest.cc
index 15696dc..7c6faca 100644
--- a/modules/remote_bitrate_estimator/remote_bitrate_estimator_single_stream_unittest.cc
+++ b/modules/remote_bitrate_estimator/remote_bitrate_estimator_single_stream_unittest.cc
@@ -12,8 +12,8 @@
 
 #include <memory>
 
-#include "api/environment/environment_factory.h"
 #include "modules/remote_bitrate_estimator/remote_bitrate_estimator_unittest_helper.h"
+#include "test/create_test_environment.h"
 #include "test/gtest.h"
 
 namespace webrtc {
@@ -29,7 +29,7 @@
 
   void SetUp() override {
     bitrate_estimator_ = std::make_unique<RemoteBitrateEstimatorSingleStream>(
-        CreateEnvironment(&clock_), bitrate_observer_.get());
+        CreateTestEnvironment({.time = &clock_}), bitrate_observer_.get());
   }
 };
 
diff --git a/modules/rtp_rtcp/BUILD.gn b/modules/rtp_rtcp/BUILD.gn
index 75bc1b7..6876cbe 100644
--- a/modules/rtp_rtcp/BUILD.gn
+++ b/modules/rtp_rtcp/BUILD.gn
@@ -703,6 +703,7 @@
       "../../rtc_base:threading",
       "../../system_wrappers",
       "../../system_wrappers:metrics",
+      "../../test:create_test_environment",
       "../../test:create_test_field_trials",
       "../../test:mock_transport",
       "../../test:near_matcher",
diff --git a/modules/rtp_rtcp/source/flexfec_sender_unittest.cc b/modules/rtp_rtcp/source/flexfec_sender_unittest.cc
index 61d1d33..3f8c82e 100644
--- a/modules/rtp_rtcp/source/flexfec_sender_unittest.cc
+++ b/modules/rtp_rtcp/source/flexfec_sender_unittest.cc
@@ -18,7 +18,6 @@
 #include <vector>
 
 #include "api/environment/environment.h"
-#include "api/environment/environment_factory.h"
 #include "api/rtp_header_extension_id.h"
 #include "api/rtp_parameters.h"
 #include "modules/include/module_fec_types.h"
@@ -29,6 +28,7 @@
 #include "modules/rtp_rtcp/source/rtp_packet_to_send.h"
 #include "modules/rtp_rtcp/source/rtp_sender.h"
 #include "system_wrappers/include/clock.h"
+#include "test/create_test_environment.h"
 #include "test/gtest.h"
 
 namespace webrtc {
@@ -90,7 +90,7 @@
 
 TEST(FlexfecSenderTest, Ssrc) {
   SimulatedClock clock(kInitialSimulatedClockTime);
-  const Environment env = CreateEnvironment(&clock);
+  const Environment env = CreateTestEnvironment({.time = &clock});
   FlexfecSender sender(env, kFlexfecPayloadType, kFlexfecSsrc, kMediaSsrc,
                        kNoMid, kNoRtpHeaderExtensions,
                        kNoRtpHeaderExtensionSizes, nullptr /* rtp_state */);
@@ -100,7 +100,7 @@
 
 TEST(FlexfecSenderTest, NoFecAvailableBeforeMediaAdded) {
   SimulatedClock clock(kInitialSimulatedClockTime);
-  const Environment env = CreateEnvironment(&clock);
+  const Environment env = CreateTestEnvironment({.time = &clock});
   FlexfecSender sender(env, kFlexfecPayloadType, kFlexfecSsrc, kMediaSsrc,
                        kNoMid, kNoRtpHeaderExtensions,
                        kNoRtpHeaderExtensionSizes, nullptr /* rtp_state */);
@@ -110,7 +110,7 @@
 
 TEST(FlexfecSenderTest, ProtectOneFrameWithOneFecPacket) {
   SimulatedClock clock(kInitialSimulatedClockTime);
-  const Environment env = CreateEnvironment(&clock);
+  const Environment env = CreateTestEnvironment({.time = &clock});
   FlexfecSender sender(env, kFlexfecPayloadType, kFlexfecSsrc, kMediaSsrc,
                        kNoMid, kNoRtpHeaderExtensions,
                        kNoRtpHeaderExtensionSizes, nullptr /* rtp_state */);
@@ -127,7 +127,7 @@
 
 TEST(FlexfecSenderTest, ProtectTwoFramesWithOneFecPacket) {
   SimulatedClock clock(kInitialSimulatedClockTime);
-  const Environment env = CreateEnvironment(&clock);
+  const Environment env = CreateTestEnvironment({.time = &clock});
   // FEC parameters selected to generate a single FEC packet per frame.
   FecProtectionParams params;
   params.fec_rate = 15;
@@ -165,7 +165,7 @@
 
 TEST(FlexfecSenderTest, ProtectTwoFramesWithTwoFecPackets) {
   SimulatedClock clock(kInitialSimulatedClockTime);
-  const Environment env = CreateEnvironment(&clock);
+  const Environment env = CreateTestEnvironment({.time = &clock});
   // FEC parameters selected to generate a single FEC packet per frame.
   FecProtectionParams params;
   params.fec_rate = 30;
@@ -205,7 +205,7 @@
 // In the tests, we only consider RTP header extensions that are useful for BWE.
 TEST(FlexfecSenderTest, NoRtpHeaderExtensionsForBweByDefault) {
   SimulatedClock clock(kInitialSimulatedClockTime);
-  const Environment env = CreateEnvironment(&clock);
+  const Environment env = CreateTestEnvironment({.time = &clock});
   const std::vector<RtpExtension> kRtpHeaderExtensions{};
   FlexfecSender sender(env, kFlexfecPayloadType, kFlexfecSsrc, kMediaSsrc,
                        kNoMid, kRtpHeaderExtensions, kNoRtpHeaderExtensionSizes,
@@ -219,7 +219,7 @@
 
 TEST(FlexfecSenderTest, RegisterAbsoluteSendTimeRtpHeaderExtension) {
   SimulatedClock clock(kInitialSimulatedClockTime);
-  const Environment env = CreateEnvironment(&clock);
+  const Environment env = CreateTestEnvironment({.time = &clock});
   const std::vector<RtpExtension> kRtpHeaderExtensions{
       {RtpExtension::kAbsSendTimeUri, RtpHeaderExtensionId(1)}};
   FlexfecSender sender(env, kFlexfecPayloadType, kFlexfecSsrc, kMediaSsrc,
@@ -234,7 +234,7 @@
 
 TEST(FlexfecSenderTest, RegisterTransmissionOffsetRtpHeaderExtension) {
   SimulatedClock clock(kInitialSimulatedClockTime);
-  const Environment env = CreateEnvironment(&clock);
+  const Environment env = CreateTestEnvironment({.time = &clock});
   const std::vector<RtpExtension> kRtpHeaderExtensions{
       {RtpExtension::kTimestampOffsetUri, RtpHeaderExtensionId(1)}};
   FlexfecSender sender(env, kFlexfecPayloadType, kFlexfecSsrc, kMediaSsrc,
@@ -249,7 +249,7 @@
 
 TEST(FlexfecSenderTest, RegisterTransportSequenceNumberRtpHeaderExtension) {
   SimulatedClock clock(kInitialSimulatedClockTime);
-  const Environment env = CreateEnvironment(&clock);
+  const Environment env = CreateTestEnvironment({.time = &clock});
   const std::vector<RtpExtension> kRtpHeaderExtensions{
       {RtpExtension::kTransportSequenceNumberUri, RtpHeaderExtensionId(1)}};
   FlexfecSender sender(env, kFlexfecPayloadType, kFlexfecSsrc, kMediaSsrc,
@@ -264,7 +264,7 @@
 
 TEST(FlexfecSenderTest, RegisterAllRtpHeaderExtensionsForBwe) {
   SimulatedClock clock(kInitialSimulatedClockTime);
-  const Environment env = CreateEnvironment(&clock);
+  const Environment env = CreateTestEnvironment({.time = &clock});
   const std::vector<RtpExtension> kRtpHeaderExtensions{
       {RtpExtension::kAbsSendTimeUri, RtpHeaderExtensionId(1)},
       {RtpExtension::kTimestampOffsetUri, RtpHeaderExtensionId(2)},
@@ -281,7 +281,7 @@
 
 TEST(FlexfecSenderTest, MaxPacketOverhead) {
   SimulatedClock clock(kInitialSimulatedClockTime);
-  const Environment env = CreateEnvironment(&clock);
+  const Environment env = CreateTestEnvironment({.time = &clock});
   FlexfecSender sender(env, kFlexfecPayloadType, kFlexfecSsrc, kMediaSsrc,
                        kNoMid, kNoRtpHeaderExtensions,
                        kNoRtpHeaderExtensionSizes, nullptr /* rtp_state */);
@@ -291,7 +291,7 @@
 
 TEST(FlexfecSenderTest, MaxPacketOverheadWithExtensions) {
   SimulatedClock clock(kInitialSimulatedClockTime);
-  const Environment env = CreateEnvironment(&clock);
+  const Environment env = CreateTestEnvironment({.time = &clock});
   const std::vector<RtpExtension> kRtpHeaderExtensions{
       {RtpExtension::kAbsSendTimeUri, RtpHeaderExtensionId(1)},
       {RtpExtension::kTimestampOffsetUri, RtpHeaderExtensionId(2)},
@@ -313,7 +313,7 @@
 
 TEST(FlexfecSenderTest, MidIncludedInPacketsWhenSet) {
   SimulatedClock clock(kInitialSimulatedClockTime);
-  const Environment env = CreateEnvironment(&clock);
+  const Environment env = CreateTestEnvironment({.time = &clock});
   const std::vector<RtpExtension> kRtpHeaderExtensions{
       {RtpExtension::kMidUri, RtpHeaderExtensionId(1)}};
   const char kMid[] = "mid";
@@ -330,7 +330,7 @@
 
 TEST(FlexfecSenderTest, SetsAndGetsRtpState) {
   SimulatedClock clock(kInitialSimulatedClockTime);
-  const Environment env = CreateEnvironment(&clock);
+  const Environment env = CreateTestEnvironment({.time = &clock});
   RtpState initial_rtp_state;
   initial_rtp_state.sequence_number = 100;
   initial_rtp_state.start_timestamp = 200;
diff --git a/modules/rtp_rtcp/source/nack_rtx_unittest.cc b/modules/rtp_rtcp/source/nack_rtx_unittest.cc
index f03cfcc..23a80bc 100644
--- a/modules/rtp_rtcp/source/nack_rtx_unittest.cc
+++ b/modules/rtp_rtcp/source/nack_rtx_unittest.cc
@@ -20,7 +20,6 @@
 #include "absl/algorithm/container.h"
 #include "api/call/transport.h"
 #include "api/environment/environment.h"
-#include "api/environment/environment_factory.h"
 #include "api/rtp_headers.h"
 #include "api/task_queue/task_queue_base.h"
 #include "api/units/time_delta.h"
@@ -39,6 +38,7 @@
 #include "modules/rtp_rtcp/source/rtp_sender_video.h"
 #include "rtc_base/rate_limiter.h"
 #include "system_wrappers/include/clock.h"
+#include "test/create_test_environment.h"
 #include "test/gtest.h"
 #include "test/run_loop.h"
 
@@ -149,7 +149,7 @@
  protected:
   RtpRtcpRtxNackTest()
       : fake_clock_(123456),
-        env_(CreateEnvironment(&fake_clock_)),
+        env_(CreateTestEnvironment({.time = &fake_clock_})),
         transport_(main_thread_.task_queue(),
                    main_thread_.task_queue(),
                    kTestRtxSsrc),
diff --git a/modules/rtp_rtcp/source/rtcp_sender_unittest.cc b/modules/rtp_rtcp/source/rtcp_sender_unittest.cc
index 40f7c92..e3c9823 100644
--- a/modules/rtp_rtcp/source/rtcp_sender_unittest.cc
+++ b/modules/rtp_rtcp/source/rtcp_sender_unittest.cc
@@ -20,7 +20,6 @@
 
 #include "api/call/transport.h"
 #include "api/environment/environment.h"
-#include "api/environment/environment_factory.h"
 #include "api/rtp_headers.h"
 #include "api/units/time_delta.h"
 #include "api/units/timestamp.h"
@@ -42,6 +41,7 @@
 #include "rtc_base/rate_limiter.h"
 #include "system_wrappers/include/clock.h"
 #include "system_wrappers/include/ntp_time.h"
+#include "test/create_test_environment.h"
 #include "test/gmock.h"
 #include "test/gtest.h"
 #include "test/mock_transport.h"
@@ -97,7 +97,7 @@
  protected:
   RtcpSenderTest()
       : clock_(1335900000),
-        env_(CreateEnvironment(&clock_)),
+        env_(CreateTestEnvironment({.time = &clock_})),
         receive_statistics_(ReceiveStatistics::Create(&clock_)),
         rtp_rtcp_impl_(
             ModuleRtpRtcpImpl2::CreateSendModule(env_,
diff --git a/modules/rtp_rtcp/source/rtp_packet_history_unittest.cc b/modules/rtp_rtcp/source/rtp_packet_history_unittest.cc
index a5531ef..a265483 100644
--- a/modules/rtp_rtcp/source/rtp_packet_history_unittest.cc
+++ b/modules/rtp_rtcp/source/rtp_packet_history_unittest.cc
@@ -18,13 +18,13 @@
 #include <vector>
 
 #include "api/environment/environment.h"
-#include "api/environment/environment_factory.h"
 #include "api/units/time_delta.h"
 #include "api/units/timestamp.h"
 #include "modules/rtp_rtcp/include/rtp_rtcp_defines.h"
 #include "modules/rtp_rtcp/source/rtp_packet_to_send.h"
 #include "rtc_base/copy_on_write_buffer.h"
 #include "system_wrappers/include/clock.h"
+#include "test/create_test_environment.h"
 #include "test/gmock.h"
 #include "test/gtest.h"
 
@@ -62,7 +62,7 @@
  protected:
   RtpPacketHistoryTest()
       : fake_clock_(123456),
-        env_(CreateEnvironment(&fake_clock_)),
+        env_(CreateTestEnvironment({.time = &fake_clock_})),
         hist_(env_, /*enable_padding_prio=*/GetParam()) {}
 
   SimulatedClock fake_clock_;
@@ -633,7 +633,7 @@
 TEST(RtpPacketHistoryRecentLargePacketMode,
      GetPayloadPaddingPacketAfterCullWithAcksReturnOldPacket) {
   SimulatedClock fake_clock(1234);
-  Environment env = CreateEnvironment(&fake_clock);
+  Environment env = CreateTestEnvironment({.time = &fake_clock});
   RtpPacketHistory history(env,
                            RtpPacketHistory::PaddingMode::kRecentLargePacket);
 
@@ -654,7 +654,7 @@
 TEST(RtpPacketHistoryRecentLargePacketMode,
      GetPayloadPaddingPacketIgnoreSmallRecentPackets) {
   SimulatedClock fake_clock(1234);
-  Environment env = CreateEnvironment(&fake_clock);
+  Environment env = CreateTestEnvironment({.time = &fake_clock});
   RtpPacketHistory history(env,
                            RtpPacketHistory::PaddingMode::kRecentLargePacket);
   history.SetStorePacketsStatus(StorageMode::kStoreAndCull, 10);
@@ -676,7 +676,7 @@
 TEST(RtpPacketHistoryRecentLargePacketMode,
      GetPayloadPaddingPacketReturnsRecentPacketIfSizeNearMax) {
   SimulatedClock fake_clock(1234);
-  Environment env = CreateEnvironment(&fake_clock);
+  Environment env = CreateTestEnvironment({.time = &fake_clock});
   RtpPacketHistory history(env,
                            RtpPacketHistory::PaddingMode::kRecentLargePacket);
   history.SetStorePacketsStatus(StorageMode::kStoreAndCull, 10);
@@ -698,7 +698,7 @@
 TEST(RtpPacketHistoryRecentLargePacketMode,
      GetPayloadPaddingPacketReturnsLastPacketAfterLargeSequenceNumberGap) {
   SimulatedClock fake_clock(1234);
-  Environment env = CreateEnvironment(&fake_clock);
+  Environment env = CreateTestEnvironment({.time = &fake_clock});
   RtpPacketHistory history(env,
                            RtpPacketHistory::PaddingMode::kRecentLargePacket);
   history.SetStorePacketsStatus(StorageMode::kStoreAndCull, 10);
diff --git a/modules/rtp_rtcp/source/rtp_rtcp_impl2_unittest.cc b/modules/rtp_rtcp/source/rtp_rtcp_impl2_unittest.cc
index ba5a175..39cd0c2 100644
--- a/modules/rtp_rtcp/source/rtp_rtcp_impl2_unittest.cc
+++ b/modules/rtp_rtcp/source/rtp_rtcp_impl2_unittest.cc
@@ -22,7 +22,6 @@
 #include "absl/strings/string_view.h"
 #include "api/call/transport.h"
 #include "api/environment/environment.h"
-#include "api/environment/environment_factory.h"
 #include "api/rtp_header_extension_id.h"
 #include "api/rtp_headers.h"
 #include "api/rtp_parameters.h"
@@ -57,6 +56,7 @@
 #include "rtc_base/buffer.h"
 #include "rtc_base/rate_limiter.h"
 #include "system_wrappers/include/ntp_time.h"
+#include "test/create_test_environment.h"
 #include "test/gmock.h"
 #include "test/gtest.h"
 #include "test/near_matcher.h"
@@ -282,8 +282,7 @@
  protected:
   RtpRtcpImpl2Test()
       : time_controller_(Timestamp::Micros(133590000000000)),
-        env_(CreateEnvironment(time_controller_.GetClock(),
-                               time_controller_.CreateTaskQueueFactory())),
+        env_(CreateTestEnvironment({.time = &time_controller_})),
         sender_(env_, /*is_sender=*/true),
         receiver_(env_, /*is_sender=*/false) {}
 
diff --git a/modules/rtp_rtcp/source/rtp_sender_audio_unittest.cc b/modules/rtp_rtcp/source/rtp_sender_audio_unittest.cc
index 8fd6f44..5c4d4e5 100644
--- a/modules/rtp_rtcp/source/rtp_sender_audio_unittest.cc
+++ b/modules/rtp_rtcp/source/rtp_sender_audio_unittest.cc
@@ -17,7 +17,6 @@
 
 #include "api/call/transport.h"
 #include "api/environment/environment.h"
-#include "api/environment/environment_factory.h"
 #include "api/rtp_header_extension_id.h"
 #include "api/rtp_headers.h"
 #include "api/units/timestamp.h"
@@ -28,6 +27,7 @@
 #include "modules/rtp_rtcp/source/rtp_rtcp_impl2.h"
 #include "system_wrappers/include/clock.h"
 #include "system_wrappers/include/ntp_time.h"
+#include "test/create_test_environment.h"
 #include "test/gmock.h"
 #include "test/gtest.h"
 #include "test/run_loop.h"
@@ -76,7 +76,7 @@
  public:
   RtpSenderAudioTest()
       : fake_clock_(kStartTime),
-        env_(CreateEnvironment(&fake_clock_)),
+        env_(CreateTestEnvironment({.time = &fake_clock_})),
         rtp_module_(ModuleRtpRtcpImpl2::CreateSendModule(
             env_,
             {.audio = true,
diff --git a/modules/rtp_rtcp/source/rtp_sender_egress_unittest.cc b/modules/rtp_rtcp/source/rtp_sender_egress_unittest.cc
index 40bca50..68476ca 100644
--- a/modules/rtp_rtcp/source/rtp_sender_egress_unittest.cc
+++ b/modules/rtp_rtcp/source/rtp_sender_egress_unittest.cc
@@ -20,7 +20,6 @@
 
 #include "api/call/transport.h"
 #include "api/environment/environment.h"
-#include "api/environment/environment_factory.h"
 #include "api/rtp_header_extension_id.h"
 #include "api/transport/network_types.h"
 #include "api/units/data_size.h"
@@ -37,6 +36,7 @@
 #include "modules/rtp_rtcp/source/rtp_packet_to_send.h"
 #include "modules/rtp_rtcp/source/rtp_rtcp_interface.h"
 #include "rtc_base/checks.h"
+#include "test/create_test_environment.h"
 #include "test/gmock.h"
 #include "test/gtest.h"
 #include "test/time_controller/simulated_time_controller.h"
@@ -133,7 +133,7 @@
  protected:
   RtpSenderEgressTest()
       : time_controller_(kStartTime),
-        env_(CreateEnvironment(time_controller_.GetClock())),
+        env_(CreateTestEnvironment({.time = &time_controller_})),
         transport_(&header_extensions_),
         packet_history_(env_,
                         RtpPacketHistory::PaddingMode::kRecentLargePacket),
diff --git a/modules/rtp_rtcp/source/rtp_sender_unittest.cc b/modules/rtp_rtcp/source/rtp_sender_unittest.cc
index a8e3e8b..1c89d3d 100644
--- a/modules/rtp_rtcp/source/rtp_sender_unittest.cc
+++ b/modules/rtp_rtcp/source/rtp_sender_unittest.cc
@@ -20,7 +20,6 @@
 
 #include "absl/strings/string_view.h"
 #include "api/environment/environment.h"
-#include "api/environment/environment_factory.h"
 #include "api/rtp_header_extension_id.h"
 #include "api/rtp_packet_sender.h"
 #include "api/rtp_parameters.h"
@@ -41,6 +40,7 @@
 #include "modules/rtp_rtcp/source/rtp_sender_video.h"
 #include "modules/rtp_rtcp/source/video_fec_generator.h"
 #include "rtc_base/rate_limiter.h"
+#include "test/create_test_environment.h"
 #include "test/gmock.h"
 #include "test/gtest.h"
 #include "test/time_controller/simulated_time_controller.h"
@@ -109,7 +109,7 @@
  protected:
   RtpSenderTest()
       : time_controller_(Timestamp::Millis(kStartTime)),
-        env_(CreateEnvironment(time_controller_.GetClock())),
+        env_(CreateTestEnvironment({.time = &time_controller_})),
         retransmission_rate_limiter_(&env_.clock(), 1000),
         flexfec_sender_(env_,
                         0,
diff --git a/modules/rtp_rtcp/source/rtp_sender_video_unittest.cc b/modules/rtp_rtcp/source/rtp_sender_video_unittest.cc
index 42998b8..7466255 100644
--- a/modules/rtp_rtcp/source/rtp_sender_video_unittest.cc
+++ b/modules/rtp_rtcp/source/rtp_sender_video_unittest.cc
@@ -22,7 +22,6 @@
 #include "absl/memory/memory.h"
 #include "api/call/transport.h"
 #include "api/environment/environment.h"
-#include "api/environment/environment_factory.h"
 #include "api/field_trials_view.h"
 #include "api/frame_transformer_factory.h"
 #include "api/frame_transformer_interface.h"
@@ -71,6 +70,7 @@
 #include "rtc_base/rate_limiter.h"
 #include "system_wrappers/include/clock.h"
 #include "system_wrappers/include/ntp_time.h"
+#include "test/create_test_environment.h"
 #include "test/gmock.h"
 #include "test/gtest.h"
 #include "test/run_loop.h"
@@ -191,7 +191,7 @@
  public:
   explicit RtpSenderVideoTest(bool raw_packetization = false)
       : fake_clock_(kStartTime),
-        env_(CreateEnvironment(&fake_clock_)),
+        env_(CreateTestEnvironment({.time = &fake_clock_})),
         retransmission_rate_limiter_(&fake_clock_, 1000),
         rtp_module_(ModuleRtpRtcpImpl2::CreateSendModule(
             env_,
@@ -1573,8 +1573,7 @@
  public:
   RtpSenderVideoWithFrameTransformerTest()
       : time_controller_(kStartTime),
-        env_(CreateEnvironment(time_controller_.GetClock(),
-                               time_controller_.GetTaskQueueFactory())),
+        env_(CreateTestEnvironment({.time = &time_controller_})),
         retransmission_rate_limiter_(time_controller_.GetClock(), 1000),
         rtp_module_(ModuleRtpRtcpImpl2::CreateSendModule(
             env_,
diff --git a/modules/rtp_rtcp/source/ulpfec_generator_unittest.cc b/modules/rtp_rtcp/source/ulpfec_generator_unittest.cc
index cbaf916..40bbeba 100644
--- a/modules/rtp_rtcp/source/ulpfec_generator_unittest.cc
+++ b/modules/rtp_rtcp/source/ulpfec_generator_unittest.cc
@@ -16,7 +16,6 @@
 #include <vector>
 
 #include "api/environment/environment.h"
-#include "api/environment/environment_factory.h"
 #include "modules/include/module_fec_types.h"
 #include "modules/rtp_rtcp/include/rtp_rtcp_defines.h"
 #include "modules/rtp_rtcp/source/fec_test_helper.h"
@@ -24,6 +23,7 @@
 #include "modules/rtp_rtcp/source/rtp_packet_to_send.h"
 #include "rtc_base/copy_on_write_buffer.h"
 #include "system_wrappers/include/clock.h"
+#include "test/create_test_environment.h"
 #include "test/gtest.h"
 
 namespace webrtc {
@@ -55,10 +55,12 @@
 class UlpfecGeneratorTest : public ::testing::Test {
  protected:
   UlpfecGeneratorTest()
-      : env_(CreateEnvironment(std::make_unique<SimulatedClock>(1))),
+      : clock_(1),
+        env_(CreateTestEnvironment({.time = &clock_})),
         ulpfec_generator_(env_, kRedPayloadType, kFecPayloadType),
         packet_generator_(kMediaSsrc) {}
 
+  SimulatedClock clock_;
   const Environment env_;
   UlpfecGenerator ulpfec_generator_;
   AugmentedPacketGenerator packet_generator_;
diff --git a/modules/video_coding/codecs/av1/libaom_av1_unittest.cc b/modules/video_coding/codecs/av1/libaom_av1_unittest.cc
index 46859dc..b6f90e0 100644
--- a/modules/video_coding/codecs/av1/libaom_av1_unittest.cc
+++ b/modules/video_coding/codecs/av1/libaom_av1_unittest.cc
@@ -20,8 +20,6 @@
 #include <vector>
 
 #include "api/environment/environment.h"
-#include "api/environment/environment_factory.h"
-#include "api/field_trials.h"
 #include "api/make_ref_counted.h"
 #include "api/scoped_refptr.h"
 #include "api/test/mock_video_encoder.h"
@@ -180,11 +178,10 @@
 }
 
 TEST(LibaomAv1Test, EncodeDecodeWithSpeedController) {
-  EnvironmentFactory factory;
-  factory.Set(std::make_unique<FieldTrials>(
-      "WebRTC-EncoderSpeed/"
-      "dynamic_speed:true,av1_camera:high,av1_screenshare:low/"));
-  const Environment env = factory.Create();
+  const Environment env = CreateTestEnvironment(
+      {.field_trials =
+           "WebRTC-EncoderSpeed/"
+           "dynamic_speed:true,av1_camera:high,av1_screenshare:low/"});
 
   TestAv1Decoder decoder(env, /*decoder_id=*/0);
   std::unique_ptr<VideoEncoder> encoder = CreateLibaomAv1Encoder(env);
@@ -213,11 +210,10 @@
 }
 
 TEST(LibaomAv1Test, InitReleaseRepeatedly) {
-  EnvironmentFactory factory;
-  factory.Set(FieldTrials::Create(
-      "WebRTC-EncoderSpeed/"
-      "dynamic_speed:true,av1_camera:high,av1_screenshare:low/"));
-  const Environment env = factory.Create();
+  const Environment env = CreateTestEnvironment(
+      {.field_trials =
+           "WebRTC-EncoderSpeed/"
+           "dynamic_speed:true,av1_camera:high,av1_screenshare:low/"});
 
   std::unique_ptr<VideoEncoder> encoder = CreateLibaomAv1Encoder(env);
   VideoCodec codec_settings = DefaultCodecSettings();
diff --git a/modules/video_coding/codecs/av1/libaom_speed_config_factory_unittest.cc b/modules/video_coding/codecs/av1/libaom_speed_config_factory_unittest.cc
index 3e9beee..589ff00 100644
--- a/modules/video_coding/codecs/av1/libaom_speed_config_factory_unittest.cc
+++ b/modules/video_coding/codecs/av1/libaom_speed_config_factory_unittest.cc
@@ -20,6 +20,7 @@
 #include "api/video_codecs/video_codec.h"
 #include "rtc_base/checks.h"
 #include "test/create_test_environment.h"
+#include "test/create_test_field_trials.h"
 #include "test/gtest.h"
 
 namespace webrtc {
@@ -39,7 +40,7 @@
 
 // Test that the number of speed levels increases with complexity.
 TEST(LibaomSpeedConfigFactoryTest, NumLevelsIncreaseWithComplexity) {
-  FieldTrials empty_trial("");
+  FieldTrials empty_trial = CreateTestFieldTrials("");
   LibaomSpeedConfigFactory factory_low(VideoCodecComplexity::kComplexityLow,
                                        VideoCodecMode::kRealtimeVideo);
   EncoderSpeedController::Config config_low =
@@ -74,11 +75,10 @@
 
 // Test that speeds within each level are monotonic.
 TEST(LibaomSpeedConfigFactoryTest, SpeedsAreMonotonic) {
-  FieldTrials empty_trial("");
   LibaomSpeedConfigFactory factory(VideoCodecComplexity::kComplexityMax,
                                    VideoCodecMode::kRealtimeVideo);
   EncoderSpeedController::Config config =
-      factory.GetSpeedConfig(1280, 720, 3, empty_trial);
+      factory.GetSpeedConfig(1280, 720, 3, CreateTestFieldTrials(""));
 
   for (const auto& level : config.speed_levels) {
     // Lower reference class index means more important, so speed should be
@@ -100,11 +100,10 @@
 
 // Test that keyframe and base layer speeds between levels are monotonic.
 TEST(LibaomSpeedConfigFactoryTest, KeyAndMainSpeedsIncreaseBetweenLevels) {
-  FieldTrials empty_trial("");
   LibaomSpeedConfigFactory factory(VideoCodecComplexity::kComplexityMax,
                                    VideoCodecMode::kRealtimeVideo);
   EncoderSpeedController::Config config =
-      factory.GetSpeedConfig(1280, 720, 3, empty_trial);
+      factory.GetSpeedConfig(1280, 720, 3, CreateTestFieldTrials(""));
 
   for (size_t i = 0; i < config.speed_levels.size() - 1; ++i) {
     const auto& current_level = config.speed_levels[i];
@@ -141,9 +140,8 @@
   const ResolutionParams& params = GetParam();
   LibaomSpeedConfigFactory factory(VideoCodecComplexity::kComplexityMax,
                                    VideoCodecMode::kRealtimeVideo);
-  FieldTrials empty_trial("");
-  EncoderSpeedController::Config config =
-      factory.GetSpeedConfig(params.width, params.height, 3, empty_trial);
+  EncoderSpeedController::Config config = factory.GetSpeedConfig(
+      params.width, params.height, 3, CreateTestFieldTrials(""));
   int expected_index =
       std::max(0, static_cast<int>(config.speed_levels.size()) -
                       params.expected_start_index_offset);
@@ -155,9 +153,8 @@
   RTC_DCHECK_GT(num_temporal_layers, 0);
   RTC_DCHECK_LE(num_temporal_layers, 3);
 
-  FieldTrials empty_trial("");
-  EncoderSpeedController::Config config =
-      factory.GetSpeedConfig(640, 360, num_temporal_layers, empty_trial);
+  EncoderSpeedController::Config config = factory.GetSpeedConfig(
+      640, 360, num_temporal_layers, CreateTestFieldTrials(""));
 
   std::set<EncoderSpeedController::Config::SpeedLevel> unique_configs(
       config.speed_levels.begin(), config.speed_levels.end());
@@ -183,9 +180,9 @@
 }
 
 TEST(LibaomSpeedConfigFactoryTest, PropagatesPsnrExperimentSettings) {
-  const std::string kFieldTrials =
-      "WebRTC-Video-CalculatePsnr/Enabled,sampling_interval:3000ms/";
-  Environment env = CreateTestEnvironment({.field_trials = kFieldTrials});
+  Environment env = CreateTestEnvironment(
+      {.field_trials =
+           "WebRTC-Video-CalculatePsnr/Enabled,sampling_interval:3000ms/"});
 
   LibaomSpeedConfigFactory factory(VideoCodecComplexity::kComplexityMax,
                                    VideoCodecMode::kRealtimeVideo);
diff --git a/modules/video_coding/fec_controller_unittest.cc b/modules/video_coding/fec_controller_unittest.cc
index 88579af..5585446 100644
--- a/modules/video_coding/fec_controller_unittest.cc
+++ b/modules/video_coding/fec_controller_unittest.cc
@@ -13,10 +13,10 @@
 #include <cstdint>
 #include <vector>
 
-#include "api/environment/environment_factory.h"
 #include "modules/include/module_fec_types.h"
 #include "modules/video_coding/fec_controller_default.h"
 #include "system_wrappers/include/clock.h"
+#include "test/create_test_environment.h"
 #include "test/gtest.h"
 
 namespace webrtc {
@@ -51,7 +51,8 @@
   // a special case (e.g. frame rate in media optimization).
   ProtectionBitrateCalculatorTest()
       : clock_(1000),
-        fec_controller_(CreateEnvironment(&clock_), &protection_callback_) {}
+        fec_controller_(CreateTestEnvironment({.time = &clock_}),
+                        &protection_callback_) {}
 
   SimulatedClock clock_;
   ProtectionCallback protection_callback_;