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

Commit db02059f authored by Nataniel Borges's avatar Nataniel Borges
Browse files

Compatibilize app close tests with ARM CF

Also ensure AssumptionViolationExceptions won't affect cujCompleted test

Fixes: 262248398
Fixes: 262247214
Bug: 262390300
Test: atest FlickerTest:com.android.server.wm.flicker.close
Change-Id: I06a63a1aff68350496175112a8a9b21fd5a25418
parent 9adfd2be
Loading
Loading
Loading
Loading
+29 −6
Original line number Diff line number Diff line
@@ -18,12 +18,14 @@ package com.android.server.wm.flicker

import android.app.Instrumentation
import android.platform.test.annotations.Presubmit
import android.util.Log
import androidx.test.platform.app.InstrumentationRegistry
import com.android.launcher3.tapl.LauncherInstrumentation
import com.android.server.wm.flicker.junit.FlickerBuilderProvider
import com.android.server.wm.traces.common.ComponentNameMatcher
import com.android.server.wm.traces.parser.windowmanager.WindowManagerStateHelper
import org.junit.Assume
import org.junit.AssumptionViolatedException
import org.junit.Test

/**
@@ -48,6 +50,8 @@ constructor(
        tapl.setExpectedRotationCheckEnabled(true)
    }

    private val logTag = this::class.java.simpleName

    /** Specification of the test transition to execute */
    abstract val transition: FlickerBuilder.() -> Unit

@@ -100,9 +104,23 @@ constructor(
    @Test
    open fun navBarWindowIsAlwaysVisible() {
        Assume.assumeFalse(flicker.scenario.isTablet)
        Assume.assumeFalse(flicker.scenario.isLandscapeOrSeascapeAtStart)
        flicker.navBarWindowIsAlwaysVisible()
    }

    /**
     * Checks that the [ComponentNameMatcher.NAV_BAR] window is visible at the start and end of
     * the transition
     *
     * Note: Phones only
     */
    @Presubmit
    @Test
    open fun navBarWindowIsVisibleAtStartAndEnd() {
        Assume.assumeFalse(flicker.scenario.isTablet)
        flicker.navBarWindowIsVisibleAtStartAndEnd()
    }

    /**
     * Checks that the [ComponentNameMatcher.TASK_BAR] window is visible at the start and end of the
     * transition
@@ -179,13 +197,18 @@ constructor(
        statusBarWindowIsAlwaysVisible()
        visibleLayersShownMoreThanOneConsecutiveEntry()
        visibleWindowsShownMoreThanOneConsecutiveEntry()
        runAndIgnoreAssumptionViolation { taskBarLayerIsVisibleAtStartAndEnd() }
        runAndIgnoreAssumptionViolation { taskBarWindowIsAlwaysVisible() }
        runAndIgnoreAssumptionViolation { navBarLayerIsVisibleAtStartAndEnd() }
        runAndIgnoreAssumptionViolation { navBarWindowIsAlwaysVisible() }
        runAndIgnoreAssumptionViolation { navBarWindowIsVisibleAtStartAndEnd() }
    }

        if (flicker.scenario.isTablet) {
            taskBarLayerIsVisibleAtStartAndEnd()
            taskBarWindowIsAlwaysVisible()
        } else {
            navBarLayerIsVisibleAtStartAndEnd()
            navBarWindowIsAlwaysVisible()
    protected fun runAndIgnoreAssumptionViolation(predicate: () -> Unit) {
        try {
            predicate()
        } catch (e: AssumptionViolatedException) {
            Log.e(logTag, "Assumption violation on CUJ complete", e)
        }
    }
}
+1 −3
Original line number Diff line number Diff line
@@ -106,12 +106,10 @@ class CloseImeWindowToAppTest(flicker: FlickerTest) : BaseTest(flicker) {
    @IwTest(focusArea = "ime")
    override fun cujCompleted() {
        super.cujCompleted()
        if (!flicker.scenario.isTablet) {
            navBarLayerPositionAtStartAndEnd()
        }
        imeLayerBecomesInvisible()
        imeAppLayerIsAlwaysVisible()
        imeAppWindowIsAlwaysVisible()
        runAndIgnoreAssumptionViolation { navBarLayerPositionAtStartAndEnd() }
    }

    companion object {
+1 −3
Original line number Diff line number Diff line
@@ -104,13 +104,11 @@ class CloseImeWindowToHomeTest(flicker: FlickerTest) : BaseTest(flicker) {
    @IwTest(focusArea = "ime")
    override fun cujCompleted() {
        super.cujCompleted()
        if (!flicker.scenario.isTablet) {
            navBarLayerPositionAtStartAndEnd()
        }
        imeLayerBecomesInvisible()
        imeAppWindowBecomesInvisible()
        imeWindowBecomesInvisible()
        imeLayerBecomesInvisible()
        runAndIgnoreAssumptionViolation { navBarLayerPositionAtStartAndEnd() }
    }

    companion object {
+0 −13
Original line number Diff line number Diff line
@@ -21,8 +21,6 @@ import androidx.test.filters.RequiresDevice
import com.android.server.wm.flicker.FlickerTest
import com.android.server.wm.flicker.helpers.isShellTransitionsEnabled
import com.android.server.wm.flicker.junit.FlickerParametersRunnerFactory
import com.android.server.wm.flicker.navBarWindowIsVisibleAtStartAndEnd
import com.android.server.wm.traces.common.ComponentNameMatcher
import org.junit.Assume
import org.junit.Before
import org.junit.FixMethodOrder
@@ -68,15 +66,4 @@ class SwitchImeWindowsFromGestureNavTest_ShellTransit(flicker: FlickerTest) :
    @Ignore("Nav bar window becomes invisible during quick switch")
    @Test
    override fun navBarWindowIsAlwaysVisible() = super.navBarWindowIsAlwaysVisible()

    /**
     * Checks that [ComponentNameMatcher.NAV_BAR] window is visible and above the app windows at the
     * start and end of the WM trace
     */
    @Presubmit
    @Test
    fun navBarWindowIsVisibleAtStartAndEnd() {
        Assume.assumeFalse(flicker.scenario.isTablet)
        flicker.navBarWindowIsVisibleAtStartAndEnd()
    }
}
+5 −0
Original line number Diff line number Diff line
@@ -89,6 +89,11 @@ open class OpenAppFromLockNotificationCold(flicker: FlickerTest) :
    override fun statusBarLayerIsVisibleAtStartAndEnd() =
        super.statusBarLayerIsVisibleAtStartAndEnd()

    /** {@inheritDoc} */
    @Test
    @Ignore("Not applicable to this CUJ. Display starts locked and app is full screen at the end")
    override fun navBarWindowIsVisibleAtStartAndEnd() = super.navBarWindowIsVisibleAtStartAndEnd()

    /**
     * Checks the position of the [ComponentNameMatcher.STATUS_BAR] at the start and end of the
     * transition
Loading