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(); }