Fix flaky widget tapl tests

Potential issues:
1. Widgets floating tips view is being shown
2. Header visible height is too small to be considered as a scroll
   gesture

Test: Run AddConfigWidgetTest, AddWidgetTest, BindWidgetTest &
      RequestPinItemTest
Bug: 185733371
Change-Id: Ic3e9188724dd920349ce8d8e8d98392b94b40642
diff --git a/src/com/android/launcher3/widget/picker/WidgetsFullSheet.java b/src/com/android/launcher3/widget/picker/WidgetsFullSheet.java
index 5543256..5be9a95 100644
--- a/src/com/android/launcher3/widget/picker/WidgetsFullSheet.java
+++ b/src/com/android/launcher3/widget/picker/WidgetsFullSheet.java
@@ -50,6 +50,7 @@
 import com.android.launcher3.Launcher;
 import com.android.launcher3.LauncherAppState;
 import com.android.launcher3.R;
+import com.android.launcher3.Utilities;
 import com.android.launcher3.anim.PendingAnimation;
 import com.android.launcher3.compat.AccessibilityManagerCompat;
 import com.android.launcher3.model.WidgetItem;
@@ -649,7 +650,8 @@
     }
 
     private boolean hasSeenEducationTip() {
-        return mLauncher.getSharedPrefs().getBoolean(WIDGETS_EDUCATION_TIP_SEEN, false);
+        return mLauncher.getSharedPrefs().getBoolean(WIDGETS_EDUCATION_TIP_SEEN, false)
+                || Utilities.IS_RUNNING_IN_TEST_HARNESS;
     }
 
     /** A holder class for holding adapters & their corresponding recycler view. */
diff --git a/tests/tapl/com/android/launcher3/tapl/Widgets.java b/tests/tapl/com/android/launcher3/tapl/Widgets.java
index a3f9ade..51e331d 100644
--- a/tests/tapl/com/android/launcher3/tapl/Widgets.java
+++ b/tests/tapl/com/android/launcher3/tapl/Widgets.java
@@ -169,12 +169,16 @@
                 "widgets_table");
 
         boolean hasHeaderExpanded = false;
+        int scrollDistance = 0;
         for (int i = 0; i < SCROLL_ATTEMPTS; i++) {
             UiObject2 fullWidgetsPicker = verifyActiveContainer();
 
             UiObject2 header = mLauncher.waitForObjectInContainer(fullWidgetsPicker,
                     headerSelector);
-            int headerHeight = header.getVisibleBounds().height();
+            // If a header is barely visible in the bottom edge of the screen, its height could be
+            // too small for a scroll gesture. Since all header should have roughly the same height,
+            // let's pick the max height we have seen so far.
+            scrollDistance = Math.max(scrollDistance, header.getVisibleBounds().height());
 
             // Look for a header that has the test app name.
             UiObject2 headerTitle = mLauncher.findObjectInContainer(fullWidgetsPicker,
@@ -196,7 +200,8 @@
                     return widgetsContainer;
                 }
             }
-            mLauncher.scrollDownByDistance(fullWidgetsPicker, headerHeight);
+            log("Finding test widget package - scroll with distance: " + scrollDistance);
+            mLauncher.scrollDownByDistance(fullWidgetsPicker, scrollDistance);
         }
 
         return null;