diff --git a/fml/platform/fuchsia/message_loop_fuchsia.cc b/fml/platform/fuchsia/message_loop_fuchsia.cc
index 4e44c91..9a3c1c0 100644
--- a/fml/platform/fuchsia/message_loop_fuchsia.cc
+++ b/fml/platform/fuchsia/message_loop_fuchsia.cc
@@ -6,14 +6,23 @@
 
 #include <lib/async-loop/default.h>
 #include <lib/async/cpp/task.h>
+#include <lib/async/default.h>
 #include <lib/zx/time.h>
 
 namespace fml {
 
 MessageLoopFuchsia::MessageLoopFuchsia()
-    : loop_(&kAsyncLoopConfigAttachToCurrentThread) {}
+    : loop_(&kAsyncLoopConfigNoAttachToCurrentThread) {
+  async_set_default_dispatcher(loop_.dispatcher());
+}
 
-MessageLoopFuchsia::~MessageLoopFuchsia() = default;
+MessageLoopFuchsia::~MessageLoopFuchsia() {
+  // It is only safe to unset the current thread's default dispatcher if it is
+  // already pointing to this loop.
+  if (async_get_default_dispatcher() == loop_.dispatcher()) {
+    async_set_default_dispatcher(nullptr);
+  }
+}
 
 void MessageLoopFuchsia::Run() {
   loop_.Run();
diff --git a/shell/common/animator_unittests.cc b/shell/common/animator_unittests.cc
index bf2ac9f..34acb1d 100644
--- a/shell/common/animator_unittests.cc
+++ b/shell/common/animator_unittests.cc
@@ -46,9 +46,9 @@
   };
 
   // create a shell with a constant firing vsync waiter.
-  fml::AutoResetWaitableEvent shell_creation;
-
   auto platform_task = std::async(std::launch::async, [&]() {
+    fml::MessageLoop::EnsureInitializedForCurrentThread();
+
     shell = Shell::Create(
         task_runners, settings,
         [vsync_clock, &create_vsync_waiter](Shell& shell) {
@@ -67,10 +67,8 @@
     configuration.SetEntrypoint("onBeginFrameMain");
 
     RunEngine(shell.get(), std::move(configuration));
-    shell_creation.Signal();
   });
-
-  shell_creation.Wait();
+  platform_task.wait();
 
   // schedule a frame to trigger window.onBeginFrame
   fml::TaskRunner::RunNowOrPostTask(shell->GetTaskRunners().GetUITaskRunner(),
diff --git a/testing/fuchsia/meta/fuchsia_test.cmx b/testing/fuchsia/meta/fuchsia_test.cmx
index 2d9addc..02ac947 100644
--- a/testing/fuchsia/meta/fuchsia_test.cmx
+++ b/testing/fuchsia/meta/fuchsia_test.cmx
@@ -13,6 +13,7 @@
       "fuchsia.process.Launcher",
       "fuchsia.deprecatedtimezone.Timezone",
       "fuchsia.netstack.Netstack",
+      "fuchsia.sysmem.Allocator",
       "fuchsia.vulkan.loader.Loader",
       "fuchsia.logger.LogSink",
       "fuchsia.tracing.provider.Registry"
diff --git a/testing/fuchsia/run_tests.sh b/testing/fuchsia/run_tests.sh
index 05ffac4..2c39beb 100755
--- a/testing/fuchsia/run_tests.sh
+++ b/testing/fuchsia/run_tests.sh
@@ -76,7 +76,6 @@
 
 
 # TODO(gw280): Enable tests using JIT runner
-
 echo "$(date) START:flutter_runner_tests ----------------------------"
 ./fuchsia_ctl -d $device_name test \
     -f flutter_aot_runner-0.far    \
@@ -93,14 +92,15 @@
     --identity-file $pkey \
     --timeout-seconds $test_timeout_seconds \
     --packages-directory packages
+echo "$(date) DONE:flutter_runner_tests ----------------------------"
 
-# TODO(https://github.com/flutter/flutter/issues/50032) Enable after the
-# Fuchsia message loop migration is complete.
+# TODO(https://github.com/flutter/flutter/issues/??): Re-enable
+# FileTest's once they pass on Fuchsia.
 echo "$(date) START:fml_tests ---------------------------------------"
 ./fuchsia_ctl -d $device_name test \
     -f fml_tests-0.far  \
     -t fml_tests \
-    -a "--gtest_filter=-MessageLoop*:Message*:FileTest*" \
+    -a "--gtest_filter=-FileTest*" \
     --identity-file $pkey \
     --timeout-seconds $test_timeout_seconds \
     --packages-directory packages
@@ -117,26 +117,24 @@
 echo "$(date) DONE:flow_tests ---------------------------------------"
 
 
-# TODO(kaushikiska): Runtime and shell tests are failing with
-# async_dispatcher failures. Re-enable them once this gets fixed.
-
-# echo "$(date) START:runtime_tests -----------------------------------"
-# ./fuchsia_ctl -d $device_name test \
-#     -f runtime_tests-0.far  \
-#     -t runtime_tests \
-#     --identity-file $pkey \
-#     --timeout-seconds $test_timeout_seconds \
-#     --packages-directory packages
-
+echo "$(date) START:runtime_tests -----------------------------------"
+./fuchsia_ctl -d $device_name test \
+    -f runtime_tests-0.far  \
+    -t runtime_tests \
+    --identity-file $pkey \
+    --timeout-seconds $test_timeout_seconds \
+    --packages-directory packages
+echo "$(date) DONE:runtime_tests -----------------------------------"
 
 # TODO(https://github.com/flutter/flutter/issues/53399): Re-enable
 # OnServiceProtocolGetSkSLsWorks, CanLoadSkSLsFromAsset, and
 # CanRemoveOldPersistentCache once they pass on Fuchsia.
-# echo "$(date) START:shell_tests -------------------------------------"
-# ./fuchsia_ctl -d $device_name test \
-#     -f shell_tests-0.far  \
-#     -t shell_tests \
-#     -a "--gtest_filter=-ShellTest.CacheSkSLWorks:ShellTest.SetResourceCacheSize*:ShellTest.OnServiceProtocolGetSkSLsWorks:ShellTest.CanLoadSkSLsFromAsset:ShellTest.CanRemoveOldPersistentCache" \
-#     --identity-file $pkey \
-#     --timeout-seconds $test_timeout_seconds \
-#     --packages-directory packages
+echo "$(date) START:shell_tests -------------------------------------"
+./fuchsia_ctl -d $device_name test \
+    -f shell_tests-0.far  \
+    -t shell_tests \
+    -a "--gtest_filter=-ShellTest.CacheSkSLWorks:ShellTest.SetResourceCacheSize*:ShellTest.OnServiceProtocolGetSkSLsWorks:ShellTest.CanLoadSkSLsFromAsset:ShellTest.CanRemoveOldPersistentCache" \
+    --identity-file $pkey \
+    --timeout-seconds $test_timeout_seconds \
+    --packages-directory packages
+echo "$(date) DONE:shell_tests -----------------------------------"
