zsperske
09/26/2023, 8:47 PMperformClick
on it, sometimes nothing will happen as it is not displayed yet. If I hack it to wait briefly before trying to click it, the click goes through successfully. It seems intentional that there is no SemanticsMatcher
for isDisplayed
but what is the alternative?Zach Klippenstein (he/him) [MOD]
09/26/2023, 9:00 PMassertIsDisplayed
zsperske
09/26/2023, 9:01 PMZach Klippenstein (he/him) [MOD]
09/26/2023, 9:13 PMrule.waitUntil { isDisplayed() }
zsperske
09/26/2023, 9:13 PMzsperske
09/26/2023, 9:15 PMfun ComposeTestRule.waitUntilDisplayed(
matcher: SemanticsMatcher,
timeoutMillis: Long = DEFAULT_WAIT_TIMEOUT
): SemanticsNodeInteraction {
val deadline = System.currentTimeMillis() + timeoutMillis
while (true) {
try {
return waitUntilExists(matcher).assertIsDisplayed()
} catch (error: AssertionError) {
if (System.currentTimeMillis() < deadline) {
android.os.SystemClock.sleep(50)
} else {
throw error
}
}
}
}
Zach Klippenstein (he/him) [MOD]
09/26/2023, 9:21 PMZach Klippenstein (he/him) [MOD]
09/26/2023, 9:21 PMcheckIsDisplayed
method, don’t see any reason why that couldn’t be publiczsperske
09/26/2023, 9:22 PMZach Klippenstein (he/him) [MOD]
09/26/2023, 9:22 PMzsperske
09/26/2023, 9:24 PMZach Klippenstein (he/him) [MOD]
09/26/2023, 9:26 PMOutputTransformation
soon 😅Zach Klippenstein (he/him) [MOD]
09/26/2023, 9:27 PMzsperske
09/26/2023, 9:34 PMZach Klippenstein (he/him) [MOD]
09/26/2023, 9:35 PMzsperske
09/26/2023, 9:36 PMzsperske
09/26/2023, 9:36 PMZach Klippenstein (he/him) [MOD]
09/26/2023, 9:36 PMzsperske
09/26/2023, 9:38 PMJacob Ras
09/26/2023, 9:56 PMcomposeRule.waitUntilAtLeastOneExists(hasTestTag("x"))
which works, but doesn't mean displayed yet.Zach Klippenstein (he/him) [MOD]
09/26/2023, 9:57 PMJacob Ras
09/26/2023, 10:13 PMvide
09/26/2023, 10:14 PM