From c9ffbfb7cfe15039b803989d4d2d51b449acacc3 Mon Sep 17 00:00:00 2001 From: Luis Machado Date: Wed, 13 Nov 2024 17:48:41 +0000 Subject: [PATCH] [workloads/jetnews] Improve reliability of object detection I noticed we were sometimes getting stale object exceptions. To help prevent that situation from happening, pass around resource id's for the objects and only fetch an instance of the objects whenever we need to click/scroll. This means the time between fetching the object and using it is short, and hopefully the object won't go stale or get recycled in that brief moment, preventing the stale exceptions. --- .../jetnews/com.arm.wa.uiauto.jetnews.apk | Bin 1549135 -> 1549617 bytes .../uiauto/jetnews/UiAutomationJankTests.java | 255 +++++++++++------- 2 files changed, 159 insertions(+), 96 deletions(-) diff --git a/wa/workloads/jetnews/com.arm.wa.uiauto.jetnews.apk b/wa/workloads/jetnews/com.arm.wa.uiauto.jetnews.apk index c84b0faf45bbd17c56086164e1430b8ccbe8bbc1..d365b3d72ece889b865431d75ae450ac45e9af24 100644 GIT binary patch delta 11422 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 T 10000? 10000 : fling_speed); - article.fling(Direction.LEFT, fling_speed); - scrollTo(articles, BOTTOM_ARTICLE, true, TOP_ARTICLE, - BOTTOM_ARTICLE, false, true, fling_speed); - scrollTo(articles, TOP_ARTICLE, false, TOP_ARTICLE, - BOTTOM_ARTICLE, false, true, fling_speed); + assert(findMainView()); + scrollList(MAIN_VIEW, TOP_ARTICLE, BOTTOM_ARTICLE, false); + assert(scrollToArticle(MAIN_VIEW, "PostCardHistory0")); + assert(scrollToArticle(MAIN_VIEW, POPULAR_LIST)); + + // Scroll the horizontal list to the end and back. + scrollList(POPULAR_LIST, FIRST_POPULAR_CARD, LAST_POPULAR_CARD, true); + // Fetch the first article on the horizontal scroll list. + interactWithArticle(FIRST_POPULAR_CARD); } private void runLandscapeVerticalTests() throws Exception { // Flip the screen sideways to exercise the other layout // of the Jetnews app. mDevice.setOrientationLandscape(); - mDevice.wait(Until.findObject(By.res(MAIN_VIEW)), DEFAULT_TIMEOUT); - // On some devices with smaller screens, the landscape test may not - // be supported, as the screen space is too small to display both - // the list of articles and the article preview view. - // In that case, skip the portion of the test that interacts with - // the preview view. - UiObject2 articles = mDevice.findObject(By.res(MAIN_VIEW)); - ViewMatchers.assertThat(articles, CoreMatchers.notNullValue()); - - articles.setGestureMarginPercentage(0.2f); - scrollTo(articles, BOTTOM_ARTICLE, true, TOP_ARTICLE, - BOTTOM_ARTICLE, false, true, - fling_speed); - scrollTo(articles, TOP_ARTICLE, false, TOP_ARTICLE, - BOTTOM_ARTICLE, false, true, - fling_speed); - - // Scroll downwards until the first postcard in the list is on screen. - // We reduce the fling speed so we don't skip past it on devices with - // screens that are too small or too big (fast scrolling). - scrollTo(articles, "PostCardSimple0", true, TOP_ARTICLE, - BOTTOM_ARTICLE, false, true, - (fling_speed / 5) < 1000? 1000 : fling_speed); - - UiObject2 article_to_click = mDevice.findObject(By.res("PostCardSimple0")); - article_to_click.click(); - - // Wait for the clicked article to appear. - UiObject2 article = mDevice.wait( - Until.findObject(By.res(ARTICLE_VIEW)), - DEFAULT_TIMEOUT - ); - - article.setGestureMarginPercentage(0.2f); - article.fling(Direction.DOWN, fling_speed); - article.fling(Direction.UP, fling_speed); - - mDevice.setOrientationPortrait(); - mDevice.pressBack(); + assert(findMainView()); + scrollList(MAIN_VIEW, TOP_ARTICLE, BOTTOM_ARTICLE, false); + assert(scrollToArticle(MAIN_VIEW, FIRST_POST)); + interactWithArticle(FIRST_POST); } - private void scrollTo(UiObject2 element, - String resourceId, boolean downFirst, - String beginningId, String endId, boolean sideways, - boolean fling, int swipeSpeed) { + private boolean scrollTo(String element_id, + String resourceId, boolean downFirst, + String beginningId, String endId, boolean sideways, + boolean fling, int swipeSpeed) { // First check if the resource is in view. If it is, then just return. - if (element.hasObject(By.res(resourceId))) { + if (mDevice.wait(Until.findObject(By.res(resourceId)), + DEFAULT_TIMEOUT) != null) { Log.d(LOG_TAG, "Object " + resourceId + " was already in view."); - return; + return true; } Direction direction; @@ -230,19 +279,33 @@ public class UiAutomationJankTests extends JankTestBase { Log.d(LOG_TAG, "Object " + resourceId + " is not in view. Scrolling."); do { + UiObject2 element = mDevice.wait(Until.findObject(By.res(element_id)), + DEFAULT_TIMEOUT); + element.setGestureMarginPercentage(0.2f); + if (fling) element.fling(direction, swipeSpeed); else element.scroll(direction, 0.3f); - // If we found it, just return. Otherwise keep going. - if (element.findObject(By.res(resourceId)) != null) { - Log.d(LOG_TAG, - "Object " + resourceId + " found while scrolling."); - return; + UiObject2 refresh_button + = mDevice.wait(Until.findObject(By.text("Retry")), + DEFAULT_TIMEOUT); + + if (refresh_button != null) { + refresh_button.click(); } - } while (!mDevice.hasObject(By.res(markerId))); + // If we found it, just return. Otherwise keep going. + if (mDevice.wait(Until.findObject(By.res(resourceId)), + DEFAULT_TIMEOUT) != null) { + Log.d(LOG_TAG, + "Object " + resourceId + " found while scrolling."); + return true; + } + + } while (mDevice.wait(Until.findObject(By.res(markerId)), + DEFAULT_TIMEOUT) == null); if (direction == Direction.DOWN) direction = Direction.UP; @@ -261,7 +324,7 @@ public class UiAutomationJankTests extends JankTestBase { markerId = beginningId; } // We should've found it. If it is not here, it doesn't exist. - return; + return false; } @Override