diff --git a/src/com/android/launcher3/LauncherModel.java b/src/com/android/launcher3/LauncherModel.java
index 316e23f..5424d97 100644
--- a/src/com/android/launcher3/LauncherModel.java
+++ b/src/com/android/launcher3/LauncherModel.java
@@ -563,6 +563,11 @@
             synchronized (mLock) {
                 // Everything loaded bind the data.
                 mModelLoaded = true;
+                if (com.android.launcher3.Utilities.IS_RUNNING_IN_TEST_HARNESS
+                        && com.android.launcher3.Utilities.IS_DEBUG_DEVICE) {
+                    android.util.Log.d("b/117332845",
+                            android.util.Log.getStackTraceString(new Throwable()));
+                }
             }
         }
 
diff --git a/tests/src/com/android/launcher3/ui/AbstractLauncherUiTest.java b/tests/src/com/android/launcher3/ui/AbstractLauncherUiTest.java
index f820ff9..00df4e7 100644
--- a/tests/src/com/android/launcher3/ui/AbstractLauncherUiTest.java
+++ b/tests/src/com/android/launcher3/ui/AbstractLauncherUiTest.java
@@ -298,6 +298,11 @@
     }
 
     protected void resetLoaderState() {
+        if (com.android.launcher3.Utilities.IS_RUNNING_IN_TEST_HARNESS
+                && com.android.launcher3.Utilities.IS_DEBUG_DEVICE) {
+            android.util.Log.d("b/117332845",
+                    "START " + android.util.Log.getStackTraceString(new Throwable()));
+        }
         try {
             mMainThreadExecutor.execute(new Runnable() {
                 @Override
@@ -308,6 +313,13 @@
         } catch (Throwable t) {
             throw new IllegalArgumentException(t);
         }
+        waitForLauncherCondition(launcher ->
+                LauncherAppState.getInstance(mTargetContext).getModel().isModelLoaded());
+        if (com.android.launcher3.Utilities.IS_RUNNING_IN_TEST_HARNESS
+                && com.android.launcher3.Utilities.IS_DEBUG_DEVICE) {
+            android.util.Log.d("b/117332845",
+                    "FINISH " + android.util.Log.getStackTraceString(new Throwable()));
+        }
     }
 
     /**
diff --git a/tests/src/com/android/launcher3/ui/widget/BindWidgetTest.java b/tests/src/com/android/launcher3/ui/widget/BindWidgetTest.java
index a00b035..c1dc43b 100644
--- a/tests/src/com/android/launcher3/ui/widget/BindWidgetTest.java
+++ b/tests/src/com/android/launcher3/ui/widget/BindWidgetTest.java
@@ -84,6 +84,11 @@
     @Override
     @Before
     public void setUp() throws Exception {
+        if (com.android.launcher3.Utilities.IS_RUNNING_IN_TEST_HARNESS
+                && com.android.launcher3.Utilities.IS_DEBUG_DEVICE) {
+            android.util.Log.d("b/117332845",
+                    android.util.Log.getStackTraceString(new Throwable()));
+        }
         super.setUp();
 
         mResolver = mTargetContext.getContentResolver();
@@ -105,6 +110,11 @@
         }
 
         super.tearDown();
+        if (com.android.launcher3.Utilities.IS_RUNNING_IN_TEST_HARNESS
+                && com.android.launcher3.Utilities.IS_DEBUG_DEVICE) {
+            android.util.Log.d("b/117332845",
+                    android.util.Log.getStackTraceString(new Throwable()));
+        }
     }
 
     @Test
