From 4fcc867dd445b58f2a4b50a4e2ebe4d2c73d79f1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1=C5=A1=20Mlynari=C4=8D?= Date: Mon, 29 May 2023 17:33:25 +0200 Subject: [PATCH] Move waitAndFind + dumpWindowHierarchy to Utils Change-Id: Id4e05bf2392553179672155b9c1f935a933525dc --- .../test/uiautomator/UiAutomatorHelpers.kt | 12 ---------- .../google/samples/apps/nowinandroid/Utils.kt | 24 +++++++++++++++++++ .../apps/nowinandroid/foryou/ForYouActions.kt | 2 +- 3 files changed, 25 insertions(+), 13 deletions(-) diff --git a/benchmarks/src/main/java/androidx/test/uiautomator/UiAutomatorHelpers.kt b/benchmarks/src/main/java/androidx/test/uiautomator/UiAutomatorHelpers.kt index 766de00e1..85867b982 100644 --- a/benchmarks/src/main/java/androidx/test/uiautomator/UiAutomatorHelpers.kt +++ b/benchmarks/src/main/java/androidx/test/uiautomator/UiAutomatorHelpers.kt @@ -46,15 +46,3 @@ enum class HasChildrenOp { EXACTLY, AT_MOST, } - -/** - * Waits until an object with [selector] if visible on screen and returns the object. - * If the element is not available in [timeout], throws [AssertionError] - */ -fun UiDevice.waitAndFindObject(selector: BySelector, timeout: Long): UiObject2 { - if (!wait(Until.hasObject(selector), timeout)) { - throw AssertionError("Element not found on screen in ${timeout}ms (selector=$selector)") - } - - return findObject(selector) -} diff --git a/benchmarks/src/main/java/com/google/samples/apps/nowinandroid/Utils.kt b/benchmarks/src/main/java/com/google/samples/apps/nowinandroid/Utils.kt index 494e451d0..9ece991c4 100644 --- a/benchmarks/src/main/java/com/google/samples/apps/nowinandroid/Utils.kt +++ b/benchmarks/src/main/java/com/google/samples/apps/nowinandroid/Utils.kt @@ -16,10 +16,13 @@ package com.google.samples.apps.nowinandroid +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.google.samples.apps.nowinandroid.benchmarks.BuildConfig +import java.io.ByteArrayOutputStream /** * Convenience parameter to use proper package name with regards to build type and build flavor. @@ -38,3 +41,24 @@ fun UiDevice.flingElementDownUp(element: UiObject2) { waitForIdle() element.fling(Direction.UP) } + +/** + * Waits until an object with [selector] if visible on screen and returns the object. + * If the element is not available in [timeout], throws [AssertionError] + */ +fun UiDevice.waitAndFindObject(selector: BySelector, timeout: Long): UiObject2 { + if (!wait(Until.hasObject(selector), timeout)) { + throw AssertionError("Element not found on screen in ${timeout}ms (selector=$selector)") + } + + return findObject(selector) +} + +/** + * Helper to dump window hierarchy into a string. + */ +fun UiDevice.dumpWindowHierarchy(): String { + val buffer = ByteArrayOutputStream() + dumpWindowHierarchy(buffer) + return buffer.toString() +} diff --git a/benchmarks/src/main/java/com/google/samples/apps/nowinandroid/foryou/ForYouActions.kt b/benchmarks/src/main/java/com/google/samples/apps/nowinandroid/foryou/ForYouActions.kt index bb21f3d39..9dea9dc4a 100644 --- a/benchmarks/src/main/java/com/google/samples/apps/nowinandroid/foryou/ForYouActions.kt +++ b/benchmarks/src/main/java/com/google/samples/apps/nowinandroid/foryou/ForYouActions.kt @@ -20,8 +20,8 @@ import androidx.benchmark.macro.MacrobenchmarkScope import androidx.test.uiautomator.By import androidx.test.uiautomator.Until import androidx.test.uiautomator.untilHasChildren -import androidx.test.uiautomator.waitAndFindObject import com.google.samples.apps.nowinandroid.flingElementDownUp +import com.google.samples.apps.nowinandroid.waitAndFindObject fun MacrobenchmarkScope.forYouWaitForContent() { // Wait until content is loaded by checking if topics are loaded