diff --git a/wlauto/workloads/gmail/__init__.py b/wlauto/workloads/gmail/__init__.py index 28828f89..e8e686aa 100755 --- a/wlauto/workloads/gmail/__init__.py +++ b/wlauto/workloads/gmail/__init__.py @@ -39,7 +39,7 @@ class Gmail(AndroidUxPerfWorkload): 6. Enter text in the Compose field 7. Click the Send mail button - Known working APK version: 6.7.128801648 + Known working APK version: 7.6.18.160170480 ''' parameters = [ @@ -59,6 +59,10 @@ class Gmail(AndroidUxPerfWorkload): # internet connection requires_network = True + def initialize(self, context): + if self.device.get_sdk_version() >= 24 and 'com.google.android.apps.photos' not in self.device.list_packages(): + raise WorkloadError('gmail workload requires Google Photos to be installed for Android N onwards') + def __init__(self, device, **kwargs): super(Gmail, self).__init__(device, **kwargs) self.deployable_assets = [self.test_image] diff --git a/wlauto/workloads/gmail/com.arm.wlauto.uiauto.gmail.apk b/wlauto/workloads/gmail/com.arm.wlauto.uiauto.gmail.apk index 6e6cc4f4..4a7ac687 100644 Binary files a/wlauto/workloads/gmail/com.arm.wlauto.uiauto.gmail.apk and b/wlauto/workloads/gmail/com.arm.wlauto.uiauto.gmail.apk differ diff --git a/wlauto/workloads/gmail/uiauto/app/src/main/java/com/arm/wlauto/uiauto/gmail/UiAutomation.java b/wlauto/workloads/gmail/uiauto/app/src/main/java/com/arm/wlauto/uiauto/gmail/UiAutomation.java index c086110d..a5954477 100755 --- a/wlauto/workloads/gmail/uiauto/app/src/main/java/com/arm/wlauto/uiauto/gmail/UiAutomation.java +++ b/wlauto/workloads/gmail/uiauto/app/src/main/java/com/arm/wlauto/uiauto/gmail/UiAutomation.java @@ -155,44 +155,65 @@ public void runUiAutomation() throws Exception { getUiObjectByText("Attach file", "android.widget.TextView"); attachFile.clickAndWaitForNewWindow(uiAutoTimeout); - UiObject waFolder = - mDevice.findObject(new UiSelector().textContains("wa-working") + // Show Roots menu + UiObject rootMenu = + mDevice.findObject(new UiSelector().descriptionContains("Show roots") + .className("android.widget.ImageButton")); + if (rootMenu.exists()){ + rootMenu.click(); + } + // Check for Photos + UiObject photos = + mDevice.findObject(new UiSelector().text("Photos") .className("android.widget.TextView")); - // Some devices use a FrameLayout as oppoised to a view Group so treat them differently - if (!waFolder.waitForExists(uiAutoTimeout)) { - UiObject rootMenu = - mDevice.findObject(new UiSelector().descriptionContains("Show roots") - .className("android.widget.ImageButton")); - // Portrait devices will roll the menu up so click the root menu icon - if (rootMenu.exists()) { - rootMenu.click(); - } - + // If Photos does not exist use the images folder + if (!photos.waitForExists (uiAutoTimeout)) { UiObject imagesEntry = mDevice.findObject(new UiSelector().textContains("Images") .className("android.widget.TextView")); - // Go to the 'Images' section if (imagesEntry.waitForExists(uiAutoTimeout)) { imagesEntry.click(); } - // Find and select the folder selectGalleryFolder("wa-working"); - } - UiObject imageFileButton = + UiObject imageButton = mDevice.findObject(new UiSelector().resourceId("com.android.documentsui:id/grid") - .className("android.widget.GridView") + .className("android.widget.Gridview") .childSelector(new UiSelector().index(0) .className("android.widget.FrameLayout"))); - if (!imageFileButton.exists()){ - imageFileButton = + if (!imageButton.exists()){ + imageButton = mDevice.findObject(new UiSelector().resourceId("com.android.documentsui:id/dir_list") - .childSelector(new UiSelector().index(0) - .classNameMatches("android.widget..*Layout"))); + .childSelector(new UiSelector().index(0) + .classNameMatches("android.widget..*Layout"))); + } + imageButton.click(); + imageButton.waitUntilGone(uiAutoTimeout); + } else { + photos.click(); + //Click wa folder image + UiObject waFolder = + mDevice.findObject(new UiSelector().textContains("wa-working") + .className("android.widget.TextView")); + if (!waFolder.waitForExists (uiAutoTimeout)) { + UiObject refresh = + getUiObjectByResourceId("com.google.android.apps.photos:id/image"); + refresh.clickAndWaitForNewWindow(); + UiObject back = + getUiObjectByResourceId("com.google.android.apps.photos:id/action_mode_close_button"); + back.clickAndWaitForNewWindow(); + } + waFolder.waitForExists (uiAutoTimeout); + waFolder.click(); + //Click test image + UiObject imageFileButton = + mDevice.findObject(new UiSelector().descriptionContains("Photo")); + imageFileButton.click(); + UiObject accept = getUiObjectByText("DONE"); + if (accept.waitForExists (uiAutoTimeout)) { + accept.click(); + } } - imageFileButton.click(); - imageFileButton.waitUntilGone(uiAutoTimeout); - logger.stop(); } diff --git a/wlauto/workloads/googleplaybooks/__init__.py b/wlauto/workloads/googleplaybooks/__init__.py index e486a490..ee2b23b2 100755 --- a/wlauto/workloads/googleplaybooks/__init__.py +++ b/wlauto/workloads/googleplaybooks/__init__.py @@ -52,7 +52,7 @@ class Googleplaybooks(AndroidUxPerfWorkload): Tip: Install the 'Google Opinion Rewards' app to bypass the need to enter valid card/bank detail. - Known working APK version: 3.9.37 + Known working APK version: 3.13.17 ''' parameters = [ diff --git a/wlauto/workloads/googleplaybooks/com.arm.wlauto.uiauto.googleplaybooks.apk b/wlauto/workloads/googleplaybooks/com.arm.wlauto.uiauto.googleplaybooks.apk index 485b87b5..e738fc57 100644 Binary files a/wlauto/workloads/googleplaybooks/com.arm.wlauto.uiauto.googleplaybooks.apk and b/wlauto/workloads/googleplaybooks/com.arm.wlauto.uiauto.googleplaybooks.apk differ diff --git a/wlauto/workloads/googleplaybooks/uiauto/app/src/main/java/com/arm/wlauto/uiauto/googleplaybooks/UiAutomation.java b/wlauto/workloads/googleplaybooks/uiauto/app/src/main/java/com/arm/wlauto/uiauto/googleplaybooks/UiAutomation.java index 152fa56d..3a199fae 100755 --- a/wlauto/workloads/googleplaybooks/uiauto/app/src/main/java/com/arm/wlauto/uiauto/googleplaybooks/UiAutomation.java +++ b/wlauto/workloads/googleplaybooks/uiauto/app/src/main/java/com/arm/wlauto/uiauto/googleplaybooks/UiAutomation.java @@ -200,7 +200,7 @@ public void runUiAutomation() throws Exception { mDevice.findObject(new UiSelector().resourceId(packageID + "menu_search")); if (!search.exists()) { search = - mDevice.findObject(new UiSelector().resourceId(packageID + "search_box_active_text_view")); + mDevice.findObject(new UiSelector().resourceId(packageID + "search_box_idle_text")); } search.click(); @@ -278,15 +278,21 @@ public void runUiAutomation() throws Exception { ActionLogger logger = new ActionLogger(testTag, parameters); logger.start(); - clickUiObject(BY_DESC, "Show navigation drawer"); + //clickUiObject(BY_DESC, "Show navigation drawer"); // To correctly find the UiObject we need to specify the index also here UiObject myLibrary = mDevice.findObject(new UiSelector().className("android.widget.TextView") .textMatches(".*[lL]ibrary") .index(3)); - myLibrary.clickAndWaitForNewWindow(uiAutoTimeout); - logger.stop(); - } + if (myLibrary.exists()) { + myLibrary.clickAndWaitForNewWindow(uiAutoTimeout); + } else if (!myLibrary.exists()) { + UiObject library = + getUiObjectByResourceId("com.google.android.apps.books:id/jump_text"); + library.click(); + } + logger.stop(); + } private void openBook(final String bookTitle) throws Exception { String testTag = "open_book"; @@ -316,7 +322,7 @@ public void runUiAutomation() throws Exception { } logger.start(); - book.click(); + book.click(); waitForPage(); logger.stop(); }