Resolve Flaky work tab tests
In cases where test execution and launcher relayout overlap, mLauncher.getAppsView().getContentView() returns a recyclerview instead of pagedView. This is resolved when rebindAdapters is later called with showTabs=true. The issue here is we are keeping a stale value of mLauncher.getAppsView().getContentView() in WorkEduView which is problematic as pagedView is required to set the right tab index for the test. This behavior also affects work testWorkEduIntermittent as we need to verify the a pagedView is visible before text execution. Bug: 149867607 Bug: 159671700 Test: flake -t com.android.launcher3.ui.WorkTabTest Change-Id: I4b0968d6b9daa5c8fe741d4b1ed090f9c7acabed
This commit is contained in:
parent
df0ae18170
commit
b8df6a573a
|
@ -60,7 +60,6 @@ public class WorkEduView extends AbstractSlideInView
|
|||
private View mViewWrapper;
|
||||
private Button mProceedButton;
|
||||
private TextView mContentText;
|
||||
private AllAppsPagedView mAllAppsPagedView;
|
||||
|
||||
private int mNextWorkEduStep = WORK_EDU_PERSONAL_APPS;
|
||||
|
||||
|
@ -101,13 +100,10 @@ public class WorkEduView extends AbstractSlideInView
|
|||
|
||||
// make sure layout does not shrink when we change the text
|
||||
mContentText.post(() -> mContentText.setMinLines(mContentText.getLineCount()));
|
||||
if (mLauncher.getAppsView().getContentView() instanceof AllAppsPagedView) {
|
||||
mAllAppsPagedView = (AllAppsPagedView) mLauncher.getAppsView().getContentView();
|
||||
}
|
||||
|
||||
mProceedButton.setOnClickListener(view -> {
|
||||
if (mAllAppsPagedView != null) {
|
||||
mAllAppsPagedView.snapToPage(AllAppsContainerView.AdapterHolder.WORK);
|
||||
if (getAllAppsPagedView() != null) {
|
||||
getAllAppsPagedView().snapToPage(AllAppsContainerView.AdapterHolder.WORK);
|
||||
}
|
||||
goToWorkTab(true);
|
||||
});
|
||||
|
@ -155,8 +151,8 @@ public class WorkEduView extends AbstractSlideInView
|
|||
}
|
||||
|
||||
private void goToFirstPage() {
|
||||
if (mAllAppsPagedView != null) {
|
||||
mAllAppsPagedView.snapToPageImmediately(AllAppsContainerView.AdapterHolder.MAIN);
|
||||
if (getAllAppsPagedView() != null) {
|
||||
getAllAppsPagedView().snapToPageImmediately(AllAppsContainerView.AdapterHolder.MAIN);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -171,6 +167,11 @@ public class WorkEduView extends AbstractSlideInView
|
|||
mOpenCloseAnimator.start();
|
||||
}
|
||||
|
||||
private AllAppsPagedView getAllAppsPagedView() {
|
||||
View v = mLauncher.getAppsView().getContentView();
|
||||
return (v instanceof AllAppsPagedView) ? (AllAppsPagedView) v : null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if user has not seen onboarding UI yet and shows it when user navigates to all apps
|
||||
*/
|
||||
|
|
|
@ -82,6 +82,7 @@ public class WorkTabTest extends AbstractLauncherUiTest {
|
|||
mDevice.pressHome();
|
||||
waitForLauncherCondition("Launcher didn't start", Objects::nonNull);
|
||||
executeOnLauncher(launcher -> launcher.getStateManager().goToState(ALL_APPS));
|
||||
waitForState("Launcher internal state didn't switch to All Apps", () -> ALL_APPS);
|
||||
waitForLauncherCondition("Personal tab is missing",
|
||||
launcher -> launcher.getAppsView().isPersonalTabVisible(), 60000);
|
||||
waitForLauncherCondition("Work tab is missing",
|
||||
|
@ -180,6 +181,10 @@ public class WorkTabTest extends AbstractLauncherUiTest {
|
|||
// open work tab
|
||||
executeOnLauncher(launcher -> launcher.getStateManager().goToState(ALL_APPS));
|
||||
waitForState("Launcher did not switch to all apps", () -> ALL_APPS);
|
||||
waitForLauncherCondition("Work tab not setup",
|
||||
launcher -> launcher.getAppsView().getContentView() instanceof AllAppsPagedView,
|
||||
60000);
|
||||
|
||||
executeOnLauncher(launcher -> {
|
||||
AllAppsPagedView pagedView = (AllAppsPagedView) launcher.getAppsView().getContentView();
|
||||
pagedView.setCurrentPage(WORK_PAGE);
|
||||
|
@ -199,7 +204,7 @@ public class WorkTabTest extends AbstractLauncherUiTest {
|
|||
DragLayer dragLayer = l.getDragLayer();
|
||||
return dragLayer.getChildCount() > 0 && dragLayer.getChildAt(
|
||||
dragLayer.getChildCount() - 1) instanceof WorkEduView;
|
||||
});
|
||||
}, 6000);
|
||||
return getFromLauncher(launcher -> (WorkEduView) launcher.getDragLayer().getChildAt(
|
||||
launcher.getDragLayer().getChildCount() - 1));
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue