Fixing Launcher3 tests
Adding an atest config. Correctly calculating display height. Allowing scrolling from a partially visible bottom row in AllApps Test: presubmit Bug: 182006150 Change-Id: I5f3b976ac05ed1c2e1ffbb67cc6db0c0ee13ae6c
This commit is contained in:
parent
c668a2a5bb
commit
730b9d60a4
|
@ -0,0 +1,50 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Copyright (C) 2021 The Android Open Source Project
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
-->
|
||||
<!-- This test config file is auto-generated. -->
|
||||
<configuration description="Runs Launcher3 tests.">
|
||||
<option name="test-suite-tag" value="apct" />
|
||||
<option name="test-suite-tag" value="apct-instrumentation" />
|
||||
|
||||
<target_preparer class="com.android.tradefed.targetprep.DeviceSetup">
|
||||
<option name="set-test-harness" value="true" />
|
||||
<option name="run-command" value="am force-stop com.android.launcher3" />
|
||||
<option name="run-command" value="pm uninstall com.google.android.apps.nexuslauncher" />
|
||||
<option name="run-command" value="pm uninstall com.google.android.apps.nexuslauncher.out_of_proc_tests" />
|
||||
<option name="run-command" value="pm uninstall com.google.android.apps.nexuslauncher.tests" />
|
||||
<option name="run-command" value="pm disable com.google.android.googlequicksearchbox" />
|
||||
|
||||
<option name="run-command" value="input keyevent 82" />
|
||||
<option name="run-command" value="settings delete secure assistant" />
|
||||
<option name="run-command" value="settings put global airplane_mode_on 1" />
|
||||
<option name="run-command" value="am broadcast -a android.intent.action.AIRPLANE_MODE" />
|
||||
</target_preparer>
|
||||
|
||||
<target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
|
||||
<option name="cleanup-apks" value="true" />
|
||||
<option name="test-file-name" value="Launcher3Tests.apk" />
|
||||
<option name="test-file-name" value="Launcher3.apk" />
|
||||
</target_preparer>
|
||||
|
||||
<metrics_collector class="com.android.tradefed.device.metric.FilePullerLogCollector">
|
||||
<option name="directory-keys" value="/data/user/0/com.android.launcher3/files" />
|
||||
<option name="collect-on-run-ended-only" value="true" />
|
||||
</metrics_collector>
|
||||
|
||||
<test class="com.android.tradefed.testtype.AndroidJUnitTest" >
|
||||
<option name="package" value="com.android.launcher3.tests" />
|
||||
<option name="runner" value="androidx.test.runner.AndroidJUnitRunner" />
|
||||
</test>
|
||||
</configuration>
|
|
@ -27,7 +27,6 @@ import androidx.test.uiautomator.BySelector;
|
|||
import androidx.test.uiautomator.Direction;
|
||||
import androidx.test.uiautomator.UiObject2;
|
||||
|
||||
import com.android.launcher3.ResourceUtils;
|
||||
import com.android.launcher3.testing.TestProtocol;
|
||||
|
||||
import java.util.stream.Collectors;
|
||||
|
@ -108,26 +107,24 @@ public class AllApps extends LauncherInstrumentation.VisibleContainer {
|
|||
"apps_list_view");
|
||||
final UiObject2 searchBox = getSearchBox(allAppsContainer);
|
||||
|
||||
int bottomGestureMargin = ResourceUtils.getNavbarSize(
|
||||
ResourceUtils.NAVBAR_BOTTOM_GESTURE_SIZE, mLauncher.getResources()) + 1;
|
||||
int deviceHeight = mLauncher.getDevice().getDisplayHeight();
|
||||
int displayBottom = deviceHeight - bottomGestureMargin;
|
||||
int deviceHeight = mLauncher.getRealDisplaySize().y;
|
||||
int bottomGestureStartOnScreen = mLauncher.getBottomGestureStartOnScreen();
|
||||
final BySelector appIconSelector = AppIcon.getAppIconSelector(appName, mLauncher);
|
||||
if (!hasClickableIcon(allAppsContainer, appListRecycler, appIconSelector,
|
||||
displayBottom)) {
|
||||
bottomGestureStartOnScreen)) {
|
||||
scrollBackToBeginning();
|
||||
int attempts = 0;
|
||||
int scroll = getAllAppsScroll();
|
||||
try (LauncherInstrumentation.Closable c1 = mLauncher.addContextLayer("scrolled")) {
|
||||
while (!hasClickableIcon(allAppsContainer, appListRecycler, appIconSelector,
|
||||
displayBottom)) {
|
||||
bottomGestureStartOnScreen)) {
|
||||
mLauncher.scrollToLastVisibleRow(
|
||||
allAppsContainer,
|
||||
mLauncher.getObjectsInContainer(allAppsContainer, "icon")
|
||||
.stream()
|
||||
.filter(icon ->
|
||||
mLauncher.getVisibleBounds(icon).bottom
|
||||
<= displayBottom)
|
||||
mLauncher.getVisibleBounds(icon).top
|
||||
< bottomGestureStartOnScreen)
|
||||
.collect(Collectors.toList()),
|
||||
mLauncher.getVisibleBounds(searchBox).bottom
|
||||
- mLauncher.getVisibleBounds(allAppsContainer).top);
|
||||
|
|
|
@ -1028,16 +1028,20 @@ public final class LauncherInstrumentation {
|
|||
expectedState);
|
||||
}
|
||||
|
||||
int getBottomGestureSize() {
|
||||
private int getBottomGestureSize() {
|
||||
return ResourceUtils.getNavbarSize(
|
||||
ResourceUtils.NAVBAR_BOTTOM_GESTURE_SIZE, getResources()) + 1;
|
||||
}
|
||||
|
||||
int getBottomGestureMarginInContainer(UiObject2 container) {
|
||||
final int bottomGestureStartOnScreen = getRealDisplaySize().y - getBottomGestureSize();
|
||||
final int bottomGestureStartOnScreen = getBottomGestureStartOnScreen();
|
||||
return getVisibleBounds(container).bottom - bottomGestureStartOnScreen;
|
||||
}
|
||||
|
||||
int getBottomGestureStartOnScreen() {
|
||||
return getRealDisplaySize().y - getBottomGestureSize();
|
||||
}
|
||||
|
||||
void clickLauncherObject(UiObject2 object) {
|
||||
expectEvent(TestProtocol.SEQUENCE_MAIN, LauncherInstrumentation.EVENT_TOUCH_DOWN);
|
||||
expectEvent(TestProtocol.SEQUENCE_MAIN, LauncherInstrumentation.EVENT_TOUCH_UP);
|
||||
|
|
Loading…
Reference in New Issue