Make replaceLayers less flaky

This is done by checking for a splash screen layer before app layer becomes visible

Test: atest FlickerTest:OpenAppTransition#appLayerReplacesLauncher

Bug: 208623073
Change-Id: I2c1a84ddde363facce645d08bd09b66e69d16586
This commit is contained in:
Pablo Gamito
2021-12-03 18:59:02 +01:00
parent cd35590771
commit 6d44d95aa2
2 changed files with 13 additions and 4 deletions

View File

@@ -143,17 +143,26 @@ fun FlickerTestParameter.statusBarLayerRotatesScales() {
* @param newLayer Layer that should be visible at the end
* @param ignoreSnapshot If the snapshot layer should be ignored during the transition
* (useful mostly for app launch)
* @param ignoreSplashscreen If the splashscreen layer should be ignored during the transition.
* If true then we will allow for a splashscreen to be shown before the layer is shown,
* otherwise we won't and the layer must appear immediately.
*/
fun FlickerTestParameter.replacesLayer(
originalLayer: FlickerComponentName,
newLayer: FlickerComponentName,
ignoreSnapshot: Boolean = false
ignoreSnapshot: Boolean = false,
ignoreSplashscreen: Boolean = true
) {
assertLayers {
val assertion = this.isVisible(originalLayer)
if (ignoreSnapshot) {
if (ignoreSnapshot || ignoreSplashscreen) {
assertion.then()
.isVisible(FlickerComponentName.SNAPSHOT, isOptional = true)
}
if (ignoreSnapshot) {
assertion.isVisible(FlickerComponentName.SNAPSHOT, isOptional = true)
}
if (ignoreSplashscreen) {
assertion.isSplashScreenVisibleFor(newLayer, isOptional = true)
}
assertion.then().isVisible(newLayer)
}

View File

@@ -166,7 +166,7 @@ abstract class OpenAppTransition(protected val testSpec: FlickerTestParameter) {
* is replaced by [testApp], which remains visible until the end
*/
open fun appLayerReplacesLauncher() {
testSpec.replacesLayer(LAUNCHER_COMPONENT, testApp.component)
testSpec.replacesLayer(LAUNCHER_COMPONENT, testApp.component, ignoreSnapshot = true)
}
/**