fix(benchmark): ensure UiAutomator is able to correctly find UI elements

This commit is contained in:
Harsh Shandilya 2022-11-29 21:22:14 +05:30
parent 3601c190ac
commit ce37523e11
No known key found for this signature in database
4 changed files with 52 additions and 13 deletions

View file

@ -9,19 +9,51 @@ package dev.msfjarvis.claw.benchmark
import androidx.benchmark.macro.MacrobenchmarkScope
import androidx.test.uiautomator.By
import androidx.test.uiautomator.UiDevice
import androidx.test.uiautomator.Until
const val PACKAGE_NAME = "dev.msfjarvis.claw.android"
private const val AWAIT_TIMEOUT = 10_000L
private const val SAVE_BUTTON_DESC = "Add to saved posts"
private const val NAV_ID_HOTTEST = "HOTTEST"
private const val NAV_ID_NEWEST = "NEWEST"
private const val NAV_ID_SAVED = "SAVED"
private const val COMMENT_BUTTON_DESC = "Open comments"
fun MacrobenchmarkScope.exploreUI(device: UiDevice) {
startActivityAndWait()
device.run {
listOf("HOTTEST", "NEWEST", "SAVED").forEach { desc ->
findObject(By.desc(desc)).click()
waitForIdle()
}
findObject(By.desc("HOTTEST")).click()
waitForIdle()
findObjects(By.desc("Open comments")).first().click()
waitForIdle()
savePosts()
exploreScreens()
returnToHottestScreen()
openCommentsScreen()
}
}
private fun UiDevice.waitForSubmitterName() {
wait(Until.hasObject(By.textContains("Submitted by")), AWAIT_TIMEOUT)
}
private fun UiDevice.savePosts() {
waitForSubmitterName()
findObjects(By.desc(SAVE_BUTTON_DESC)).forEach { btn -> btn.click() }
}
private fun UiDevice.exploreScreens() {
listOf(NAV_ID_HOTTEST, NAV_ID_NEWEST, NAV_ID_SAVED).forEach { tag ->
findObject(By.res(tag)).click()
waitForSubmitterName()
}
}
private fun UiDevice.returnToHottestScreen() {
findObject(By.res(NAV_ID_HOTTEST)).click()
waitForSubmitterName()
}
private fun UiDevice.openCommentsScreen() {
findObjects(By.desc(COMMENT_BUTTON_DESC)).first().click()
waitForSubmitterName()
}