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

Commit 42402af2 authored by Nataniel Borges's avatar Nataniel Borges
Browse files

1/ Unify waiting for Home or Recents activity to be visible

Previously there were multiple ways of checking is the home or recent activity were visible causing differences between tests

Bug: 236131465
Test: atest FlickerTests
Change-Id: I2cc8b0b82db482d6aeaa4cdf91a77ee74408f2b5
parent 469b1663
Loading
Loading
Loading
Loading
+6 −24
Original line number Original line Diff line number Diff line
@@ -17,12 +17,12 @@
package com.android.server.wm.flicker.ime
package com.android.server.wm.flicker.ime


import android.app.Instrumentation
import android.app.Instrumentation
import android.platform.test.annotations.FlakyTest
import android.platform.test.annotations.Postsubmit
import android.platform.test.annotations.Postsubmit
import android.platform.test.annotations.Presubmit
import android.platform.test.annotations.Presubmit
import android.platform.test.annotations.RequiresDevice
import android.platform.test.annotations.RequiresDevice
import android.view.Surface
import android.view.Surface
import android.view.WindowManagerPolicyConstants
import android.view.WindowManagerPolicyConstants
import android.platform.test.annotations.FlakyTest
import androidx.test.platform.app.InstrumentationRegistry
import androidx.test.platform.app.InstrumentationRegistry
import com.android.server.wm.flicker.FlickerBuilderProvider
import com.android.server.wm.flicker.FlickerBuilderProvider
import com.android.server.wm.flicker.FlickerParametersRunnerFactory
import com.android.server.wm.flicker.FlickerParametersRunnerFactory
@@ -30,8 +30,8 @@ import com.android.server.wm.flicker.FlickerTestParameter
import com.android.server.wm.flicker.FlickerTestParameterFactory
import com.android.server.wm.flicker.FlickerTestParameterFactory
import com.android.server.wm.flicker.annotation.Group4
import com.android.server.wm.flicker.annotation.Group4
import com.android.server.wm.flicker.dsl.FlickerBuilder
import com.android.server.wm.flicker.dsl.FlickerBuilder
import com.android.server.wm.flicker.helpers.isShellTransitionsEnabled
import com.android.server.wm.flicker.helpers.ImeAppAutoFocusHelper
import com.android.server.wm.flicker.helpers.ImeAppAutoFocusHelper
import com.android.server.wm.flicker.helpers.isShellTransitionsEnabled
import com.android.server.wm.flicker.navBarLayerIsVisible
import com.android.server.wm.flicker.navBarLayerIsVisible
import com.android.server.wm.flicker.navBarWindowIsVisible
import com.android.server.wm.flicker.navBarWindowIsVisible
import com.android.server.wm.flicker.statusBarLayerIsVisible
import com.android.server.wm.flicker.statusBarLayerIsVisible
@@ -39,8 +39,8 @@ import com.android.server.wm.flicker.statusBarWindowIsVisible
import com.android.server.wm.traces.common.FlickerComponentName
import com.android.server.wm.traces.common.FlickerComponentName
import com.android.server.wm.traces.common.WindowManagerConditionsFactory
import com.android.server.wm.traces.common.WindowManagerConditionsFactory
import com.android.server.wm.traces.parser.windowmanager.WindowManagerStateHelper
import com.android.server.wm.traces.parser.windowmanager.WindowManagerStateHelper
import org.junit.Assume.assumeTrue
import org.junit.Assume.assumeFalse
import org.junit.Assume.assumeFalse
import org.junit.Assume.assumeTrue
import org.junit.FixMethodOrder
import org.junit.FixMethodOrder
import org.junit.Test
import org.junit.Test
import org.junit.runner.RunWith
import org.junit.runner.RunWith
@@ -72,12 +72,13 @@ class OpenImeWindowToOverViewTest(private val testSpec: FlickerTestParameter) {
            }
            }
            transitions {
            transitions {
                device.pressRecentApps()
                device.pressRecentApps()
                waitForRecentsActivityVisible(wmHelper)
                wmHelper.waitForRecentsActivityVisible()
                waitNavStatusBarVisibility(wmHelper)
                waitNavStatusBarVisibility(wmHelper)
            }
            }
            teardown {
            teardown {
                test {
                test {
                    device.pressHome()
                    device.pressHome()
                    wmHelper.waitForHomeActivityVisible()
                    imeTestApp.exit(wmHelper)
                    imeTestApp.exit(wmHelper)
                }
                }
            }
            }
@@ -195,25 +196,6 @@ class OpenImeWindowToOverViewTest(private val testSpec: FlickerTestParameter) {
        }
        }
    }
    }


    private fun waitForRecentsActivityVisible(
        wmHelper: WindowManagerStateHelper
    ) {
        val waitMsg = "state of Recents activity to be visible"
        require(
                wmHelper.waitFor(waitMsg) {
                    it.wmState.homeActivity?.let { act ->
                        it.wmState.isActivityVisible(act.name)
                    } == true ||
                            it.wmState.recentsActivity?.let { act ->
                                it.wmState.isActivityVisible(act.name)
                            } == true
                }
        ) { "Recents activity should be visible" }
        wmHelper.waitForAppTransitionIdle()
        // Ensure WindowManagerService wait until all animations have completed
        instrumentation.uiAutomation.syncInputTransactions()
    }

    companion object {
    companion object {
        /**
        /**
         * Creates the test configurations.
         * Creates the test configurations.
+5 −14
Original line number Original line Diff line number Diff line
@@ -17,10 +17,9 @@
package com.android.server.wm.flicker.ime
package com.android.server.wm.flicker.ime


import android.app.Instrumentation
import android.app.Instrumentation
import android.platform.test.annotations.FlakyTest
import android.platform.test.annotations.Presubmit
import android.platform.test.annotations.Presubmit
import android.view.Display
import android.view.Surface
import android.view.Surface
import android.platform.test.annotations.FlakyTest
import androidx.test.filters.RequiresDevice
import androidx.test.filters.RequiresDevice
import androidx.test.platform.app.InstrumentationRegistry
import androidx.test.platform.app.InstrumentationRegistry
import com.android.server.wm.flicker.FlickerBuilderProvider
import com.android.server.wm.flicker.FlickerBuilderProvider
@@ -29,21 +28,19 @@ import com.android.server.wm.flicker.FlickerTestParameter
import com.android.server.wm.flicker.FlickerTestParameterFactory
import com.android.server.wm.flicker.FlickerTestParameterFactory
import com.android.server.wm.flicker.LAUNCHER_COMPONENT
import com.android.server.wm.flicker.LAUNCHER_COMPONENT
import com.android.server.wm.flicker.annotation.Group2
import com.android.server.wm.flicker.annotation.Group2
import com.android.server.wm.flicker.dsl.FlickerBuilder
import com.android.server.wm.flicker.entireScreenCovered
import com.android.server.wm.flicker.helpers.ImeAppAutoFocusHelper
import com.android.server.wm.flicker.helpers.ImeAppAutoFocusHelper
import com.android.server.wm.flicker.helpers.isShellTransitionsEnabled
import com.android.server.wm.flicker.helpers.reopenAppFromOverview
import com.android.server.wm.flicker.helpers.reopenAppFromOverview
import com.android.server.wm.flicker.helpers.setRotation
import com.android.server.wm.flicker.helpers.setRotation
import com.android.server.wm.flicker.navBarLayerIsVisible
import com.android.server.wm.flicker.navBarLayerIsVisible
import com.android.server.wm.flicker.navBarLayerRotatesAndScales
import com.android.server.wm.flicker.navBarLayerRotatesAndScales
import com.android.server.wm.flicker.navBarWindowIsVisible
import com.android.server.wm.flicker.navBarWindowIsVisible
import com.android.server.wm.flicker.dsl.FlickerBuilder
import com.android.server.wm.flicker.entireScreenCovered
import com.android.server.wm.flicker.helpers.isShellTransitionsEnabled
import com.android.server.wm.flicker.statusBarLayerIsVisible
import com.android.server.wm.flicker.statusBarLayerIsVisible
import com.android.server.wm.flicker.statusBarLayerRotatesScales
import com.android.server.wm.flicker.statusBarLayerRotatesScales
import com.android.server.wm.flicker.statusBarWindowIsVisible
import com.android.server.wm.flicker.statusBarWindowIsVisible
import com.android.server.wm.traces.common.ConditionList
import com.android.server.wm.traces.common.FlickerComponentName
import com.android.server.wm.traces.common.FlickerComponentName
import com.android.server.wm.traces.common.WindowManagerConditionsFactory
import org.junit.Assume.assumeFalse
import org.junit.Assume.assumeFalse
import org.junit.Assume.assumeTrue
import org.junit.Assume.assumeTrue
import org.junit.Before
import org.junit.Before
@@ -66,12 +63,6 @@ open class ReOpenImeWindowTest(private val testSpec: FlickerTestParameter) {
    private val instrumentation: Instrumentation = InstrumentationRegistry.getInstrumentation()
    private val instrumentation: Instrumentation = InstrumentationRegistry.getInstrumentation()
    private val testApp = ImeAppAutoFocusHelper(instrumentation, testSpec.startRotation)
    private val testApp = ImeAppAutoFocusHelper(instrumentation, testSpec.startRotation)


    private val waitConditionSetup = ConditionList(listOf(
        WindowManagerConditionsFactory.isAppTransitionIdle(Display.DEFAULT_DISPLAY),
        WindowManagerConditionsFactory.hasLayersAnimating().negate(),
        WindowManagerConditionsFactory.isHomeActivityVisible()
    ))

    @Before
    @Before
    open fun before() {
    open fun before() {
        assumeFalse(isShellTransitionsEnabled)
        assumeFalse(isShellTransitionsEnabled)
@@ -87,7 +78,7 @@ open class ReOpenImeWindowTest(private val testSpec: FlickerTestParameter) {
                }
                }
                eachRun {
                eachRun {
                    device.pressRecentApps()
                    device.pressRecentApps()
                    wmHelper.waitFor(waitConditionSetup)
                    wmHelper.waitForRecentsActivityVisible()
                    this.setRotation(testSpec.startRotation)
                    this.setRotation(testSpec.startRotation)
                }
                }
            }
            }
+1 −1
Original line number Original line Diff line number Diff line
@@ -73,7 +73,7 @@ open class OpenAppFromNotificationWarm(testSpec: FlickerTestParameter) :
                    wmHelper.waitForFullScreenApp(testApp.component)
                    wmHelper.waitForFullScreenApp(testApp.component)
                    testApp.postNotification(device, wmHelper)
                    testApp.postNotification(device, wmHelper)
                    device.pressHome()
                    device.pressHome()
                    wmHelper.waitForAppTransitionIdle()
                    wmHelper.waitForHomeActivityVisible()
                }
                }
            }
            }


+4 −10
Original line number Original line Diff line number Diff line
@@ -19,7 +19,6 @@ package com.android.server.wm.flicker.launch
import android.platform.test.annotations.FlakyTest
import android.platform.test.annotations.FlakyTest
import android.platform.test.annotations.Presubmit
import android.platform.test.annotations.Presubmit
import android.platform.test.annotations.RequiresDevice
import android.platform.test.annotations.RequiresDevice
import android.view.Display
import com.android.server.wm.flicker.FlickerParametersRunnerFactory
import com.android.server.wm.flicker.FlickerParametersRunnerFactory
import com.android.server.wm.flicker.FlickerTestParameter
import com.android.server.wm.flicker.FlickerTestParameter
import com.android.server.wm.flicker.FlickerTestParameterFactory
import com.android.server.wm.flicker.FlickerTestParameterFactory
@@ -61,8 +60,8 @@ import org.junit.runners.Parameterized
@Parameterized.UseParametersRunnerFactory(FlickerParametersRunnerFactory::class)
@Parameterized.UseParametersRunnerFactory(FlickerParametersRunnerFactory::class)
@FixMethodOrder(MethodSorters.NAME_ASCENDING)
@FixMethodOrder(MethodSorters.NAME_ASCENDING)
@Group1
@Group1
open class OpenAppFromOverviewTest(testSpec: FlickerTestParameter)
open class OpenAppFromOverviewTest(testSpec: FlickerTestParameter) :
    : OpenAppFromLauncherTransition(testSpec) {
    OpenAppFromLauncherTransition(testSpec) {


    /**
    /**
     * Defines the transition used to run the test
     * Defines the transition used to run the test
@@ -76,14 +75,9 @@ open class OpenAppFromOverviewTest(testSpec: FlickerTestParameter)
                }
                }
                eachRun {
                eachRun {
                    device.pressHome()
                    device.pressHome()
                    wmHelper.waitForAppTransitionIdle()
                    wmHelper.waitForHomeActivityVisible()
                    device.pressRecentApps()
                    device.pressRecentApps()
                    wmHelper.waitFor(
                    wmHelper.waitForRecentsActivityVisible()
                        WindowManagerConditionsFactory
                            .isAppTransitionIdle(Display.DEFAULT_DISPLAY),
                        WindowManagerConditionsFactory.isActivityVisible(LAUNCHER_COMPONENT),
                        WindowManagerConditionsFactory.hasLayersAnimating().negate()
                    )
                    this.setRotation(testSpec.startRotation)
                    this.setRotation(testSpec.startRotation)
                }
                }
            }
            }