From 2d4b05f295449107906ed1644646c3489154ebfa Mon Sep 17 00:00:00 2001 From: vadimt Date: Tue, 25 Jun 2019 19:57:13 -0700 Subject: Converting more tests to TAPL Bug: 131116002 Bug: 115582915 Change-Id: I3346f96ddba3224eb4b92b15344d71b8ed6e32e0 --- .../launcher3/ui/DefaultLayoutProviderTest.java | 29 +++++---------- .../launcher3/ui/widget/RequestPinItemTest.java | 10 ++---- .../launcher3/tapl/AddToHomeScreenPrompt.java | 41 ++++++++++++++++++++++ tests/tapl/com/android/launcher3/tapl/Folder.java | 35 ++++++++++++++++++ .../launcher3/tapl/LauncherInstrumentation.java | 4 +-- .../com/android/launcher3/tapl/WidgetCell.java | 28 --------------- .../tapl/com/android/launcher3/tapl/Workspace.java | 8 ++++- 7 files changed, 96 insertions(+), 59 deletions(-) create mode 100644 tests/tapl/com/android/launcher3/tapl/AddToHomeScreenPrompt.java create mode 100644 tests/tapl/com/android/launcher3/tapl/Folder.java delete mode 100644 tests/tapl/com/android/launcher3/tapl/WidgetCell.java diff --git a/tests/src/com/android/launcher3/ui/DefaultLayoutProviderTest.java b/tests/src/com/android/launcher3/ui/DefaultLayoutProviderTest.java index 48335a602..58c74cef1 100644 --- a/tests/src/com/android/launcher3/ui/DefaultLayoutProviderTest.java +++ b/tests/src/com/android/launcher3/ui/DefaultLayoutProviderTest.java @@ -25,26 +25,23 @@ import android.net.Uri; import android.os.ParcelFileDescriptor; import android.os.ParcelFileDescriptor.AutoCloseOutputStream; +import androidx.test.InstrumentationRegistry; +import androidx.test.filters.MediumTest; +import androidx.test.runner.AndroidJUnit4; + import com.android.launcher3.LauncherAppWidgetProviderInfo; import com.android.launcher3.testcomponent.TestCommandReceiver; import com.android.launcher3.util.LauncherLayoutBuilder; import com.android.launcher3.util.rule.ShellCommandRule; -import com.android.launcher3.widget.LauncherAppWidgetHostView; import org.junit.After; import org.junit.Before; -import org.junit.Ignore; import org.junit.Rule; import org.junit.Test; import org.junit.runner.RunWith; import java.io.OutputStreamWriter; -import androidx.test.InstrumentationRegistry; -import androidx.test.filters.MediumTest; -import androidx.test.runner.AndroidJUnit4; -import androidx.test.uiautomator.UiSelector; - @MediumTest @RunWith(AndroidJUnit4.class) public class DefaultLayoutProviderTest extends AbstractLauncherUiTest { @@ -71,7 +68,6 @@ public class DefaultLayoutProviderTest extends AbstractLauncherUiTest { } @Test - // Convert test to TAPL; b/131116002 public void testCustomProfileLoaded_with_icon_on_hotseat() throws Exception { writeLayout(new LauncherLayoutBuilder().atHotseat(0).putApp(SETTINGS_APP, SETTINGS_APP)); @@ -79,14 +75,10 @@ public class DefaultLayoutProviderTest extends AbstractLauncherUiTest { mActivityMonitor.startLauncher(); waitForModelLoaded(); - // Verify widget present - UiSelector selector = new UiSelector().packageName(mTargetContext.getPackageName()) - .description(getSettingsApp().getLabel().toString()); - assertTrue(mDevice.findObject(selector).waitForExists(DEFAULT_UI_TIMEOUT)); + mLauncher.getWorkspace().getHotseatAppIcon(getSettingsApp().getLabel().toString()); } @Test - // Convert test to TAPL; b/131116002 public void testCustomProfileLoaded_with_widget() throws Exception { // A non-restored widget with no config screen gets restored automatically. LauncherAppWidgetProviderInfo info = TestViewHelpers.findWidgetProvider(this, false); @@ -100,13 +92,11 @@ public class DefaultLayoutProviderTest extends AbstractLauncherUiTest { waitForModelLoaded(); // Verify widget present - UiSelector selector = new UiSelector().packageName(mTargetContext.getPackageName()) - .className(LauncherAppWidgetHostView.class).description(info.label); - assertTrue(mDevice.findObject(selector).waitForExists(DEFAULT_UI_TIMEOUT)); + assertTrue("Widget is not present", + mLauncher.getWorkspace().tryGetWidget(info.label, DEFAULT_UI_TIMEOUT) != null); } @Test - // Convert test to TAPL; b/131116002 public void testCustomProfileLoaded_with_folder() throws Exception { writeLayout(new LauncherLayoutBuilder().atHotseat(0).putFolder(android.R.string.copy) .addApp(SETTINGS_APP, SETTINGS_APP) @@ -118,10 +108,7 @@ public class DefaultLayoutProviderTest extends AbstractLauncherUiTest { mActivityMonitor.startLauncher(); waitForModelLoaded(); - // Verify widget present - UiSelector selector = new UiSelector().packageName(mTargetContext.getPackageName()) - .descriptionContains(mTargetContext.getString(android.R.string.copy)); - assertTrue(mDevice.findObject(selector).waitForExists(DEFAULT_UI_TIMEOUT)); + mLauncher.getWorkspace().getHotseatFolder("Folder: Copy"); } @After diff --git a/tests/src/com/android/launcher3/ui/widget/RequestPinItemTest.java b/tests/src/com/android/launcher3/ui/widget/RequestPinItemTest.java index edec91419..6122daec2 100644 --- a/tests/src/com/android/launcher3/ui/widget/RequestPinItemTest.java +++ b/tests/src/com/android/launcher3/ui/widget/RequestPinItemTest.java @@ -28,8 +28,6 @@ import android.view.View; import androidx.test.filters.LargeTest; import androidx.test.runner.AndroidJUnit4; -import androidx.test.uiautomator.By; -import androidx.test.uiautomator.Until; import com.android.launcher3.ItemInfo; import com.android.launcher3.LauncherAppWidgetInfo; @@ -38,6 +36,7 @@ import com.android.launcher3.Utilities; import com.android.launcher3.Workspace.ItemOperator; import com.android.launcher3.WorkspaceItemInfo; import com.android.launcher3.shortcuts.ShortcutKey; +import com.android.launcher3.tapl.AddToHomeScreenPrompt; import com.android.launcher3.testcomponent.AppWidgetNoConfig; import com.android.launcher3.testcomponent.AppWidgetWithConfig; import com.android.launcher3.testcomponent.RequestPinItemActivity; @@ -45,7 +44,6 @@ import com.android.launcher3.ui.AbstractLauncherUiTest; 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.Rule; @@ -159,13 +157,11 @@ public class RequestPinItemTest extends AbstractLauncherUiTest { // call the requested method to start the flow mTargetContext.sendBroadcast(RequestPinItemActivity.getCommandIntent( RequestPinItemActivity.class, activityMethod)); - mLauncher.getWidgetCell(); + final AddToHomeScreenPrompt addToHomeScreenPrompt = mLauncher.getAddToHomeScreenPrompt(); // Accept confirmation: BlockingBroadcastReceiver resultReceiver = new BlockingBroadcastReceiver(mCallbackAction); - mDevice.wait(Until.findObject( - By.text(mLauncher.isAvd() ? "ADD AUTOMATICALLY" : "Add automatically")), - DEFAULT_UI_TIMEOUT).click(); + addToHomeScreenPrompt.addAutomatically(); Intent result = resultReceiver.blockingGetIntent(); assertNotNull(result); mAppWidgetId = result.getIntExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, -1); diff --git a/tests/tapl/com/android/launcher3/tapl/AddToHomeScreenPrompt.java b/tests/tapl/com/android/launcher3/tapl/AddToHomeScreenPrompt.java new file mode 100644 index 000000000..7f561a2af --- /dev/null +++ b/tests/tapl/com/android/launcher3/tapl/AddToHomeScreenPrompt.java @@ -0,0 +1,41 @@ +/* + * Copyright (C) 2019 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. + */ + +package com.android.launcher3.tapl; + +import androidx.test.uiautomator.By; +import androidx.test.uiautomator.UiObject2; + +public class AddToHomeScreenPrompt { + private final LauncherInstrumentation mLauncher; + private final UiObject2 mWidgetCell; + + AddToHomeScreenPrompt(LauncherInstrumentation launcher) { + mLauncher = launcher; + mWidgetCell = launcher.waitForLauncherObject(By.clazz( + "com.android.launcher3.widget.WidgetCell")); + mLauncher.assertNotNull("Can't find widget cell object", mWidgetCell); + } + + public void addAutomatically() { + mLauncher.waitForObjectInContainer( + mWidgetCell.getParent().getParent().getParent().getParent(), + By.text(LauncherInstrumentation.isAvd() + ? "ADD AUTOMATICALLY" + : "Add automatically")). + click(); + } +} diff --git a/tests/tapl/com/android/launcher3/tapl/Folder.java b/tests/tapl/com/android/launcher3/tapl/Folder.java new file mode 100644 index 000000000..6e6734d81 --- /dev/null +++ b/tests/tapl/com/android/launcher3/tapl/Folder.java @@ -0,0 +1,35 @@ +/* + * Copyright (C) 2019 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. + */ + +package com.android.launcher3.tapl; + +import android.widget.FrameLayout; + +import androidx.test.uiautomator.By; +import androidx.test.uiautomator.BySelector; +import androidx.test.uiautomator.UiObject2; + +/** + * App folder in workspace/ + */ +public final class Folder { + Folder(LauncherInstrumentation launcher, UiObject2 icon) { + } + + static BySelector getSelector(String folderName, LauncherInstrumentation launcher) { + return By.clazz(FrameLayout.class).desc(folderName).pkg(launcher.getLauncherPackageName()); + } +} diff --git a/tests/tapl/com/android/launcher3/tapl/LauncherInstrumentation.java b/tests/tapl/com/android/launcher3/tapl/LauncherInstrumentation.java index 671e8fdf9..a7e633619 100644 --- a/tests/tapl/com/android/launcher3/tapl/LauncherInstrumentation.java +++ b/tests/tapl/com/android/launcher3/tapl/LauncherInstrumentation.java @@ -503,9 +503,9 @@ public final class LauncherInstrumentation { } @NonNull - public WidgetCell getWidgetCell() { + public AddToHomeScreenPrompt getAddToHomeScreenPrompt() { try (LauncherInstrumentation.Closable c = addContextLayer("want to get widget cell")) { - return new WidgetCell(this); + return new AddToHomeScreenPrompt(this); } } diff --git a/tests/tapl/com/android/launcher3/tapl/WidgetCell.java b/tests/tapl/com/android/launcher3/tapl/WidgetCell.java deleted file mode 100644 index adb69ec5b..000000000 --- a/tests/tapl/com/android/launcher3/tapl/WidgetCell.java +++ /dev/null @@ -1,28 +0,0 @@ -/* - * Copyright (C) 2019 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. - */ - -package com.android.launcher3.tapl; - -import androidx.test.uiautomator.By; -import androidx.test.uiautomator.UiObject2; - -public class WidgetCell { - WidgetCell(LauncherInstrumentation launcher) { - final UiObject2 widgetCell = launcher.waitForLauncherObject(By.clazz( - "com.android.launcher3.widget.WidgetCell")); - launcher.assertNotNull("Can't find widget cell object", widgetCell); - } -} diff --git a/tests/tapl/com/android/launcher3/tapl/Workspace.java b/tests/tapl/com/android/launcher3/tapl/Workspace.java index fc0a79329..b01b6f363 100644 --- a/tests/tapl/com/android/launcher3/tapl/Workspace.java +++ b/tests/tapl/com/android/launcher3/tapl/Workspace.java @@ -143,11 +143,17 @@ public final class Workspace extends Home { } @NonNull - private AppIcon getHotseatAppIcon(String appName) { + public AppIcon getHotseatAppIcon(String appName) { return new AppIcon(mLauncher, mLauncher.getObjectInContainer( mHotseat, AppIcon.getAppIconSelector(appName, mLauncher))); } + @NonNull + public Folder getHotseatFolder(String appName) { + return new Folder(mLauncher, mLauncher.getObjectInContainer( + mHotseat, Folder.getSelector(appName, mLauncher))); + } + static void dragIconToWorkspace( LauncherInstrumentation launcher, Launchable launchable, Point dest, String longPressIndicator) { -- cgit v1.2.3