summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorvadimt <vadimt@google.com>2019-06-26 13:40:42 -0700
committervadimt <vadimt@google.com>2019-06-26 13:58:33 -0700
commit406d49bdd724a9707a218f6b7ba3d40bdfb87028 (patch)
treeb8a215d1e5e745513edd1f694780bb49efd70501 /tests
parenta730a233b8b5d70ae535cd18a9084626253dfb9b (diff)
downloadandroid_packages_apps_Trebuchet-406d49bdd724a9707a218f6b7ba3d40bdfb87028.tar.gz
android_packages_apps_Trebuchet-406d49bdd724a9707a218f6b7ba3d40bdfb87028.tar.bz2
android_packages_apps_Trebuchet-406d49bdd724a9707a218f6b7ba3d40bdfb87028.zip
Converting even more tests to TAPL
Bug: 131116002 Bug: 115582915 Change-Id: I08587e7a50420e57970ed8feec4524111145dc31
Diffstat (limited to 'tests')
-rw-r--r--tests/src/com/android/launcher3/ui/AbstractLauncherUiTest.java31
-rw-r--r--tests/src/com/android/launcher3/ui/TaplTestsLauncher3.java19
-rw-r--r--tests/src/com/android/launcher3/ui/TestViewHelpers.java114
-rw-r--r--tests/src/com/android/launcher3/ui/widget/AddConfigWidgetTest.java16
-rw-r--r--tests/src/com/android/launcher3/ui/widget/AddWidgetTest.java32
-rw-r--r--tests/tapl/com/android/launcher3/tapl/Launchable.java6
-rw-r--r--tests/tapl/com/android/launcher3/tapl/LauncherInstrumentation.java4
-rw-r--r--tests/tapl/com/android/launcher3/tapl/Widget.java13
-rw-r--r--tests/tapl/com/android/launcher3/tapl/Widgets.java30
9 files changed, 63 insertions, 202 deletions
diff --git a/tests/src/com/android/launcher3/ui/AbstractLauncherUiTest.java b/tests/src/com/android/launcher3/ui/AbstractLauncherUiTest.java
index 4a0ca5c24..abaad20b2 100644
--- a/tests/src/com/android/launcher3/ui/AbstractLauncherUiTest.java
+++ b/tests/src/com/android/launcher3/ui/AbstractLauncherUiTest.java
@@ -20,7 +20,6 @@ import static androidx.test.InstrumentationRegistry.getInstrumentation;
import static com.android.launcher3.ui.TaplTestsLauncher3.getAppPackageName;
import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
import static java.lang.System.exit;
@@ -38,10 +37,7 @@ import android.util.Log;
import androidx.test.InstrumentationRegistry;
import androidx.test.uiautomator.By;
-import androidx.test.uiautomator.BySelector;
-import androidx.test.uiautomator.Direction;
import androidx.test.uiautomator.UiDevice;
-import androidx.test.uiautomator.UiObject2;
import androidx.test.uiautomator.Until;
import com.android.launcher3.Launcher;
@@ -50,7 +46,6 @@ import com.android.launcher3.LauncherModel;
import com.android.launcher3.LauncherSettings;
import com.android.launcher3.LauncherState;
import com.android.launcher3.MainThreadExecutor;
-import com.android.launcher3.ResourceUtils;
import com.android.launcher3.Utilities;
import com.android.launcher3.compat.LauncherAppsCompat;
import com.android.launcher3.model.AppLaunchTracker;
@@ -86,7 +81,6 @@ public abstract class AbstractLauncherUiTest {
public static final long DEFAULT_ACTIVITY_TIMEOUT = TimeUnit.SECONDS.toMillis(10);
public static final long DEFAULT_BROADCAST_TIMEOUT_SECS = 5;
- public static final long SHORT_UI_TIMEOUT = 300;
public static final long DEFAULT_UI_TIMEOUT = 10000;
private static final String TAG = "AbstractLauncherUiTest";
@@ -181,31 +175,6 @@ public abstract class AbstractLauncherUiTest {
}
/**
- * Scrolls the {@param container} until it finds an object matching {@param condition}.
- *
- * @return the matching object.
- */
- protected UiObject2 scrollAndFind(UiObject2 container, BySelector condition) {
- final int margin = ResourceUtils.getNavbarSize(
- ResourceUtils.NAVBAR_BOTTOM_GESTURE_SIZE, mLauncher.getResources()) + 1;
- container.setGestureMargins(0, 0, 0, margin);
-
- int i = 0;
- for (; ; ) {
- // findObject can only execute after spring settles.
- mDevice.wait(Until.findObject(condition), SHORT_UI_TIMEOUT);
- UiObject2 widget = container.findObject(condition);
- if (widget != null && widget.getVisibleBounds().intersects(
- 0, 0, mDevice.getDisplayWidth(),
- mDevice.getDisplayHeight() - margin)) {
- return widget;
- }
- if (++i > 40) fail("Too many attempts");
- container.scroll(Direction.DOWN, 1f);
- }
- }
-
- /**
* Removes all icons from homescreen and hotseat.
*/
public void clearHomescreen() throws Throwable {
diff --git a/tests/src/com/android/launcher3/ui/TaplTestsLauncher3.java b/tests/src/com/android/launcher3/ui/TaplTestsLauncher3.java
index 06c56f2c4..25c461b59 100644
--- a/tests/src/com/android/launcher3/ui/TaplTestsLauncher3.java
+++ b/tests/src/com/android/launcher3/ui/TaplTestsLauncher3.java
@@ -216,7 +216,8 @@ public class TaplTestsLauncher3 extends AbstractLauncherUiTest {
final AppIcon app = allApps.getAppIcon("TestActivity7");
assertNotNull("AppIcon.launch returned null", app.launch(getAppPackageName()));
test.executeOnLauncher(launcher -> assertTrue(
- "Launcher activity is the top activity; expecting another activity to be the top "
+ "Launcher activity is the top activity; expecting another activity to be the "
+ + "top "
+ "one",
test.isInBackground(launcher)));
} finally {
@@ -306,11 +307,8 @@ public class TaplTestsLauncher3 extends AbstractLauncherUiTest {
switchToAllApps();
allApps.freeze();
try {
- allApps.
- getAppIcon(APP_NAME).
- dragToWorkspace().
- getWorkspaceAppIcon(APP_NAME).
- launch(getAppPackageName());
+ allApps.getAppIcon(APP_NAME).dragToWorkspace();
+ mLauncher.getWorkspace().getWorkspaceAppIcon(APP_NAME).launch(getAppPackageName());
} finally {
allApps.unfreeze();
}
@@ -339,13 +337,8 @@ public class TaplTestsLauncher3 extends AbstractLauncherUiTest {
getMenuItem(0);
final String shortcutName = menuItem.getText();
- // 4. Drag the first shortcut to the home screen.
- // 5. Verify that the shortcut works on home screen
- // (the app opens and has the same text as the shortcut).
- menuItem.
- dragToWorkspace().
- getWorkspaceAppIcon(shortcutName).
- launch(getAppPackageName());
+ menuItem.dragToWorkspace();
+ mLauncher.getWorkspace().getWorkspaceAppIcon(shortcutName).launch(getAppPackageName());
} finally {
allApps.unfreeze();
}
diff --git a/tests/src/com/android/launcher3/ui/TestViewHelpers.java b/tests/src/com/android/launcher3/ui/TestViewHelpers.java
index d13d31952..d0df66485 100644
--- a/tests/src/com/android/launcher3/ui/TestViewHelpers.java
+++ b/tests/src/com/android/launcher3/ui/TestViewHelpers.java
@@ -18,28 +18,15 @@ package com.android.launcher3.ui;
import static androidx.test.InstrumentationRegistry.getInstrumentation;
import static androidx.test.InstrumentationRegistry.getTargetContext;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertNull;
-
import android.content.ComponentName;
-import android.content.Context;
-import android.graphics.Point;
import android.os.Process;
-import android.os.SystemClock;
import android.util.Log;
-import android.view.KeyEvent;
-import android.view.MotionEvent;
import android.view.View;
import android.view.ViewGroup;
-import androidx.test.uiautomator.By;
-import androidx.test.uiautomator.BySelector;
import androidx.test.uiautomator.UiDevice;
-import androidx.test.uiautomator.UiObject2;
-import androidx.test.uiautomator.Until;
import com.android.launcher3.LauncherAppWidgetProviderInfo;
-import com.android.launcher3.R;
import com.android.launcher3.compat.AppWidgetManagerCompat;
import com.android.launcher3.testcomponent.AppWidgetNoConfig;
import com.android.launcher3.testcomponent.AppWidgetWithConfig;
@@ -50,21 +37,6 @@ import java.util.function.Function;
public class TestViewHelpers {
private static final String TAG = "TestViewHelpers";
- private static UiDevice getDevice() {
- return UiDevice.getInstance(getInstrumentation());
- }
-
- public static UiObject2 findViewById(int id) {
- return getDevice().wait(Until.findObject(getSelectorForId(id)),
- AbstractLauncherUiTest.DEFAULT_UI_TIMEOUT);
- }
-
- public static BySelector getSelectorForId(int id) {
- final Context targetContext = getTargetContext();
- String name = targetContext.getResources().getResourceEntryName(id);
- return By.res(targetContext.getPackageName(), name);
- }
-
/**
* Finds a widget provider which can fit on the home screen.
*
@@ -91,92 +63,6 @@ public class TestViewHelpers {
return info;
}
- /**
- * Drags an icon to the center of homescreen.
- *
- * @param icon object that is either app icon or shortcut icon
- */
- public static void dragToWorkspace(UiObject2 icon, boolean expectedToShowShortcuts) {
- Point center = icon.getVisibleCenter();
-
- // Action Down
- final long downTime = SystemClock.uptimeMillis();
- sendPointer(downTime, MotionEvent.ACTION_DOWN, center);
-
- UiObject2 dragLayer = findViewById(R.id.drag_layer);
-
- if (expectedToShowShortcuts) {
- // Make sure shortcuts show up, and then move a bit to hide them.
- assertNotNull(findViewById(R.id.deep_shortcuts_container));
-
- Point moveLocation = new Point(center);
- int distanceToMove =
- getTargetContext().getResources().getDimensionPixelSize(
- R.dimen.deep_shortcuts_start_drag_threshold) + 50;
- if (moveLocation.y - distanceToMove >= dragLayer.getVisibleBounds().top) {
- moveLocation.y -= distanceToMove;
- } else {
- moveLocation.y += distanceToMove;
- }
- movePointer(downTime, center, moveLocation);
-
- assertNull(findViewById(R.id.deep_shortcuts_container));
- }
-
- // Wait until Remove/Delete target is visible
- assertNotNull(findViewById(R.id.delete_target_text));
-
- Point moveLocation = dragLayer.getVisibleCenter();
-
- // Move to center
- movePointer(downTime, center, moveLocation);
- sendPointer(downTime, MotionEvent.ACTION_UP, moveLocation);
-
- // Wait until remove target is gone.
- getDevice().wait(Until.gone(getSelectorForId(R.id.delete_target_text)),
- AbstractLauncherUiTest.DEFAULT_UI_TIMEOUT);
- }
-
- private static void movePointer(long downTime, Point from, Point to) {
- while (!from.equals(to)) {
- try {
- Thread.sleep(20);
- } catch (InterruptedException e) {
- e.printStackTrace();
- }
- from.x = getNextMoveValue(to.x, from.x);
- from.y = getNextMoveValue(to.y, from.y);
- sendPointer(downTime, MotionEvent.ACTION_MOVE, from);
- }
- }
-
- private static int getNextMoveValue(int targetValue, int oldValue) {
- if (targetValue - oldValue > 10) {
- return oldValue + 10;
- } else if (targetValue - oldValue < -10) {
- return oldValue - 10;
- } else {
- return targetValue;
- }
- }
-
- public static void sendPointer(long downTime, int action, Point point) {
- MotionEvent event = MotionEvent.obtain(downTime,
- SystemClock.uptimeMillis(), action, point.x, point.y, 0);
- getInstrumentation().sendPointerSync(event);
- event.recycle();
- }
-
- /**
- * Opens widget tray and returns the recycler view.
- */
- public static UiObject2 openWidgetsTray() {
- final UiDevice device = getDevice();
- device.pressKeyCode(KeyEvent.KEYCODE_W, KeyEvent.META_CTRL_ON);
- device.waitForIdle();
- return findViewById(R.id.widgets_list_view);
- }
-
public static View findChildView(ViewGroup parent, Function<View, Boolean> condition) {
for (int i = 0; i < parent.getChildCount(); ++i) {
final View child = parent.getChildAt(i);
diff --git a/tests/src/com/android/launcher3/ui/widget/AddConfigWidgetTest.java b/tests/src/com/android/launcher3/ui/widget/AddConfigWidgetTest.java
index 5eb5f1992..dc72bda9a 100644
--- a/tests/src/com/android/launcher3/ui/widget/AddConfigWidgetTest.java
+++ b/tests/src/com/android/launcher3/ui/widget/AddConfigWidgetTest.java
@@ -27,20 +27,18 @@ import android.view.View;
import androidx.test.filters.LargeTest;
import androidx.test.runner.AndroidJUnit4;
-import androidx.test.uiautomator.By;
-import androidx.test.uiautomator.UiObject2;
import com.android.launcher3.ItemInfo;
import com.android.launcher3.LauncherAppWidgetInfo;
import com.android.launcher3.LauncherAppWidgetProviderInfo;
import com.android.launcher3.Workspace;
+import com.android.launcher3.tapl.Widgets;
import com.android.launcher3.testcomponent.WidgetConfigActivity;
import com.android.launcher3.ui.AbstractLauncherUiTest;
import com.android.launcher3.ui.TestViewHelpers;
import com.android.launcher3.util.Condition;
import com.android.launcher3.util.Wait;
import com.android.launcher3.util.rule.ShellCommandRule;
-import com.android.launcher3.widget.WidgetCell;
import org.junit.Before;
import org.junit.Ignore;
@@ -71,7 +69,6 @@ public class AddConfigWidgetTest extends AbstractLauncherUiTest {
}
@Test
- // Convert test to TAPL b/131116002
public void testWidgetConfig() throws Throwable {
runTest(false, true);
}
@@ -83,7 +80,6 @@ public class AddConfigWidgetTest extends AbstractLauncherUiTest {
}
@Test
- // Convert test to TAPL b/131116002
public void testConfigCancelled() throws Throwable {
runTest(false, false);
}
@@ -104,15 +100,13 @@ public class AddConfigWidgetTest extends AbstractLauncherUiTest {
clearHomescreen();
mActivityMonitor.startLauncher();
- // Open widget tray and wait for load complete.
- final UiObject2 widgetContainer = TestViewHelpers.openWidgetsTray();
- Wait.atMost(null, Condition.minChildCount(widgetContainer, 2), DEFAULT_UI_TIMEOUT);
+ final Widgets widgets = mLauncher.getWorkspace().openAllWidgets();
// Drag widget to homescreen
WidgetConfigStartupMonitor monitor = new WidgetConfigStartupMonitor();
- UiObject2 widget = scrollAndFind(widgetContainer, By.clazz(WidgetCell.class)
- .hasDescendant(By.text(mWidgetInfo.getLabel(mTargetContext.getPackageManager()))));
- TestViewHelpers.dragToWorkspace(widget, false);
+ widgets.
+ getWidget(mWidgetInfo.getLabel(mTargetContext.getPackageManager())).
+ dragToWorkspace();
// Widget id for which the config activity was opened
mWidgetId = monitor.getWidgetId();
diff --git a/tests/src/com/android/launcher3/ui/widget/AddWidgetTest.java b/tests/src/com/android/launcher3/ui/widget/AddWidgetTest.java
index 0061568cc..4529a80d1 100644
--- a/tests/src/com/android/launcher3/ui/widget/AddWidgetTest.java
+++ b/tests/src/com/android/launcher3/ui/widget/AddWidgetTest.java
@@ -19,20 +19,12 @@ import static org.junit.Assert.assertTrue;
import androidx.test.filters.LargeTest;
import androidx.test.runner.AndroidJUnit4;
-import androidx.test.uiautomator.By;
-import androidx.test.uiautomator.UiObject2;
-import android.view.View;
-import com.android.launcher3.ItemInfo;
import com.android.launcher3.LauncherAppWidgetInfo;
import com.android.launcher3.LauncherAppWidgetProviderInfo;
-import com.android.launcher3.Workspace.ItemOperator;
import com.android.launcher3.ui.AbstractLauncherUiTest;
import com.android.launcher3.ui.TestViewHelpers;
-import com.android.launcher3.util.Condition;
-import com.android.launcher3.util.Wait;
import com.android.launcher3.util.rule.ShellCommandRule;
-import com.android.launcher3.widget.WidgetCell;
import org.junit.Ignore;
import org.junit.Rule;
@@ -61,7 +53,6 @@ public class AddWidgetTest extends AbstractLauncherUiTest {
performTest();
}
- // Convert to TAPL b/131116002
private void performTest() throws Throwable {
clearHomescreen();
mActivityMonitor.startLauncher();
@@ -69,22 +60,15 @@ public class AddWidgetTest extends AbstractLauncherUiTest {
final LauncherAppWidgetProviderInfo widgetInfo =
TestViewHelpers.findWidgetProvider(this, false /* hasConfigureScreen */);
- // Open widget tray and wait for load complete.
- final UiObject2 widgetContainer = TestViewHelpers.openWidgetsTray();
- Wait.atMost(null, Condition.minChildCount(widgetContainer, 2), DEFAULT_UI_TIMEOUT);
+ mLauncher.
+ getWorkspace().
+ openAllWidgets().
+ getWidget(widgetInfo.getLabel(mTargetContext.getPackageManager())).
+ dragToWorkspace();
- // Drag widget to homescreen
- UiObject2 widget = scrollAndFind(widgetContainer, By.clazz(WidgetCell.class)
- .hasDescendant(By.text(widgetInfo.getLabel(mTargetContext.getPackageManager()))));
- TestViewHelpers.dragToWorkspace(widget, false);
-
- assertTrue(mActivityMonitor.itemExists(new ItemOperator() {
- @Override
- public boolean evaluate(ItemInfo info, View view) {
- return info instanceof LauncherAppWidgetInfo &&
+ assertTrue(mActivityMonitor.itemExists(
+ (info, view) -> info instanceof LauncherAppWidgetInfo &&
((LauncherAppWidgetInfo) info).providerName.getClassName().equals(
- widgetInfo.provider.getClassName());
- }
- }).call());
+ widgetInfo.provider.getClassName())).call());
}
}
diff --git a/tests/tapl/com/android/launcher3/tapl/Launchable.java b/tests/tapl/com/android/launcher3/tapl/Launchable.java
index d4bdafa76..04b801945 100644
--- a/tests/tapl/com/android/launcher3/tapl/Launchable.java
+++ b/tests/tapl/com/android/launcher3/tapl/Launchable.java
@@ -68,7 +68,7 @@ abstract class Launchable {
/**
* Drags an object to the center of homescreen.
*/
- public Workspace dragToWorkspace() {
+ public void dragToWorkspace() {
final Point launchableCenter = getObject().getVisibleCenter();
final Point displaySize = mLauncher.getRealDisplaySize();
final int width = displaySize.x / 2;
@@ -80,10 +80,6 @@ abstract class Launchable {
launchableCenter.x - width / 2 : launchableCenter.x + width / 2,
displaySize.y / 2),
getLongPressIndicator());
- try (LauncherInstrumentation.Closable c = mLauncher.addContextLayer(
- "dragged launchable to workspace")) {
- return new Workspace(mLauncher);
- }
}
protected abstract String getLongPressIndicator();
diff --git a/tests/tapl/com/android/launcher3/tapl/LauncherInstrumentation.java b/tests/tapl/com/android/launcher3/tapl/LauncherInstrumentation.java
index a7e633619..1641d702d 100644
--- a/tests/tapl/com/android/launcher3/tapl/LauncherInstrumentation.java
+++ b/tests/tapl/com/android/launcher3/tapl/LauncherInstrumentation.java
@@ -614,12 +614,12 @@ public final class LauncherInstrumentation {
@NonNull
UiObject2 waitForLauncherObject(BySelector selector) {
- return waitForObjectBySelector(selector.pkg(getLauncherPackageName()));
+ return waitForObjectBySelector(By.copy(selector).pkg(getLauncherPackageName()));
}
@NonNull
UiObject2 tryWaitForLauncherObject(BySelector selector, long timeout) {
- return tryWaitForObjectBySelector(selector.pkg(getLauncherPackageName()), timeout);
+ return tryWaitForObjectBySelector(By.copy(selector).pkg(getLauncherPackageName()), timeout);
}
@NonNull
diff --git a/tests/tapl/com/android/launcher3/tapl/Widget.java b/tests/tapl/com/android/launcher3/tapl/Widget.java
index 128789dbc..1b6d8c4a6 100644
--- a/tests/tapl/com/android/launcher3/tapl/Widget.java
+++ b/tests/tapl/com/android/launcher3/tapl/Widget.java
@@ -18,7 +18,16 @@ package com.android.launcher3.tapl;
import androidx.test.uiautomator.UiObject2;
-public class Widget {
- Widget(LauncherInstrumentation launcher, UiObject2 widget) {
+/**
+ * Widget in workspace or a widget list.
+ */
+public final class Widget extends Launchable {
+ Widget(LauncherInstrumentation launcher, UiObject2 icon) {
+ super(launcher, icon);
+ }
+
+ @Override
+ protected String getLongPressIndicator() {
+ return "drop_target_bar";
}
}
diff --git a/tests/tapl/com/android/launcher3/tapl/Widgets.java b/tests/tapl/com/android/launcher3/tapl/Widgets.java
index 94003be91..cbc3a815f 100644
--- a/tests/tapl/com/android/launcher3/tapl/Widgets.java
+++ b/tests/tapl/com/android/launcher3/tapl/Widgets.java
@@ -16,6 +16,12 @@
package com.android.launcher3.tapl;
+import static org.junit.Assert.fail;
+
+import android.graphics.Point;
+
+import androidx.test.uiautomator.By;
+import androidx.test.uiautomator.BySelector;
import androidx.test.uiautomator.Direction;
import androidx.test.uiautomator.UiObject2;
@@ -75,4 +81,28 @@ public final class Widgets extends LauncherInstrumentation.VisibleContainer {
protected LauncherInstrumentation.ContainerType getContainerType() {
return LauncherInstrumentation.ContainerType.WIDGETS;
}
+
+ public Widget getWidget(String label) {
+ final int margin = ResourceUtils.getNavbarSize(
+ ResourceUtils.NAVBAR_BOTTOM_GESTURE_SIZE, mLauncher.getResources()) + 1;
+ final UiObject2 widgetsContainer = verifyActiveContainer();
+ widgetsContainer.setGestureMargins(0, 0, 0, margin);
+
+ final Point displaySize = mLauncher.getRealDisplaySize();
+
+ int i = 0;
+ final BySelector selector = By.
+ clazz("com.android.launcher3.widget.WidgetCell").
+ hasDescendant(By.text(label));
+
+ for (; ; ) {
+ final UiObject2 widget = mLauncher.tryWaitForLauncherObject(selector, 300);
+ if (widget != null && widget.getVisibleBounds().intersects(
+ 0, 0, displaySize.x, displaySize.y - margin)) {
+ return new Widget(mLauncher, widget);
+ }
+ if (++i > 40) fail("Too many attempts");
+ widgetsContainer.scroll(Direction.DOWN, 1f);
+ }
+ }
}