Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 007755f3 authored by Pablo Gamito's avatar Pablo Gamito
Browse files

Make 90 degree app launch less flaky

When apps are launched during a rotation there maybe a moment where the launcher is no longer visible and where the app also isn't visible. A Rotation Layer is shown instead to fill the gap. We now check for this layer.

Test: atest FlickerLibTests:OpenAppColdTest#appLayerReplacesLauncher

Bug: 209593837
Change-Id: Ic2810eed27f25398d4dc9748329729ea6213a9eb
parent 9758a66a
Loading
Loading
Loading
Loading
+11 −4
Original line number Diff line number Diff line
@@ -141,6 +141,10 @@ fun FlickerTestParameter.statusBarLayerRotatesScales() {
 *
 * @param originalLayer Layer that should be visible at the start
 * @param newLayer Layer that should be visible at the end
 * @param ignoreEntriesWithRotationLayer If entries with a visible rotation layer should be ignored
 *      when checking the transition. If true we will not fail the assertion if a rotation layer is
 *      visible to fill the gap between the [originalLayer] being visible and the [newLayer] being
 *      visible.
 * @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.
@@ -150,20 +154,23 @@ fun FlickerTestParameter.statusBarLayerRotatesScales() {
fun FlickerTestParameter.replacesLayer(
    originalLayer: FlickerComponentName,
    newLayer: FlickerComponentName,
    ignoreEntriesWithRotationLayer: Boolean = false,
    ignoreSnapshot: Boolean = false,
    ignoreSplashscreen: Boolean = true
) {
    assertLayers {
        val assertion = this.isVisible(originalLayer)
        if (ignoreSnapshot || ignoreSplashscreen) {
            assertion.then()

        if (ignoreEntriesWithRotationLayer) {
            assertion.then().isVisible(FlickerComponentName.ROTATION, isOptional = true)
        }
        if (ignoreSnapshot) {
            assertion.isVisible(FlickerComponentName.SNAPSHOT, isOptional = true)
            assertion.then().isVisible(FlickerComponentName.SNAPSHOT, isOptional = true)
        }
        if (ignoreSplashscreen) {
            assertion.isSplashScreenVisibleFor(newLayer, isOptional = true)
            assertion.then().isSplashScreenVisibleFor(newLayer, isOptional = true)
        }

        assertion.then().isVisible(newLayer)
    }

+2 −1
Original line number Diff line number Diff line
@@ -166,7 +166,8 @@ 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, ignoreSnapshot = true)
        testSpec.replacesLayer(LAUNCHER_COMPONENT, testApp.component,
                ignoreEntriesWithRotationLayer = true, ignoreSnapshot = true)
    }

    /**