Update colorLayerIsVisibleDuringTransition test to match new spec

Fixes: 246566669

Test: atest FlickerTests:TaskTransitionTest
Change-Id: Ieeb092569c0a2fffa7fb9b7946fda9e1e0a96188
This commit is contained in:
Pablo Gamito
2022-10-04 12:55:54 +00:00
parent 4faf378213
commit 69ddd9f7ef

View File

@@ -20,6 +20,7 @@ import android.app.Instrumentation
import android.app.WallpaperManager
import android.platform.test.annotations.FlakyTest
import android.platform.test.annotations.Postsubmit
import android.platform.test.annotations.Presubmit
import androidx.test.filters.RequiresDevice
import com.android.server.wm.flicker.BaseTest
import com.android.server.wm.flicker.FlickerBuilder
@@ -29,11 +30,15 @@ import com.android.server.wm.flicker.helpers.NewTasksAppHelper
import com.android.server.wm.flicker.helpers.SimpleAppHelper
import com.android.server.wm.flicker.helpers.WindowUtils
import com.android.server.wm.flicker.junit.FlickerParametersRunnerFactory
import com.android.server.wm.flicker.helpers.isShellTransitionsEnabled
import com.android.server.wm.traces.common.ComponentNameMatcher
import com.android.server.wm.traces.common.ComponentNameMatcher.Companion.DEFAULT_TASK_DISPLAY_AREA
import com.android.server.wm.traces.common.ComponentNameMatcher.Companion.SPLASH_SCREEN
import com.android.server.wm.traces.common.ComponentNameMatcher.Companion.WALLPAPER_BBQ_WRAPPER
import com.android.server.wm.traces.common.ComponentSplashScreenMatcher
import com.android.server.wm.traces.common.IComponentMatcher
import com.android.server.wm.traces.parser.toFlickerComponent
import org.junit.Assume
import org.junit.FixMethodOrder
import org.junit.Test
import org.junit.runner.RunWith
@@ -43,7 +48,7 @@ import org.junit.runners.Parameterized
/**
* Test the back and forward transition between 2 activities.
*
* To run this test: `atest FlickerTests:ActivitiesTransitionTest`
* To run this test: `atest FlickerTests:TaskTransitionTest`
*
* Actions:
* ```
@@ -57,7 +62,7 @@ import org.junit.runners.Parameterized
@Parameterized.UseParametersRunnerFactory(FlickerParametersRunnerFactory::class)
@FixMethodOrder(MethodSorters.NAME_ASCENDING)
class TaskTransitionTest(flicker: FlickerTest) : BaseTest(flicker) {
private val testApp = NewTasksAppHelper(instrumentation)
private val launchNewTaskApp = NewTasksAppHelper(instrumentation)
private val simpleApp = SimpleAppHelper(instrumentation)
private val wallpaper by lazy {
getWallpaperPackage(instrumentation) ?: error("Unable to obtain wallpaper")
@@ -65,10 +70,10 @@ class TaskTransitionTest(flicker: FlickerTest) : BaseTest(flicker) {
/** {@inheritDoc} */
override val transition: FlickerBuilder.() -> Unit = {
setup { testApp.launchViaIntent(wmHelper) }
teardown { testApp.exit(wmHelper) }
setup { launchNewTaskApp.launchViaIntent(wmHelper) }
teardown { launchNewTaskApp.exit(wmHelper) }
transitions {
testApp.openNewTask(device, wmHelper)
launchNewTaskApp.openNewTask(device, wmHelper)
tapl.pressBack()
wmHelper.StateSyncBuilder().withAppTransitionIdle().waitForAndVerify()
}
@@ -101,7 +106,7 @@ class TaskTransitionTest(flicker: FlickerTest) : BaseTest(flicker) {
* Check that the [ComponentNameMatcher.LAUNCHER] window is never visible when performing task
* transitions. A solid color background should be shown above it.
*/
@Postsubmit
@Presubmit
@Test
fun launcherWindowIsNeverVisible() {
flicker.assertWm { this.isAppWindowInvisible(ComponentNameMatcher.LAUNCHER) }
@@ -111,42 +116,76 @@ class TaskTransitionTest(flicker: FlickerTest) : BaseTest(flicker) {
* Checks that the [ComponentNameMatcher.LAUNCHER] layer is never visible when performing task
* transitions. A solid color background should be shown above it.
*/
@Postsubmit
@Presubmit
@Test
fun launcherLayerIsNeverVisible() {
flicker.assertLayers { this.isInvisible(ComponentNameMatcher.LAUNCHER) }
}
/** Checks that a color background is visible while the task transition is occurring. */
@FlakyTest(bugId = 240570652)
@Presubmit
@Test
fun colorLayerIsVisibleDuringTransition() {
val bgColorLayer = ComponentNameMatcher("", "colorBackgroundLayer")
val displayBounds = WindowUtils.getDisplayBounds(flicker.scenario.startRotation)
fun transitionHasColorBackground_legacy() {
Assume.assumeFalse(isShellTransitionsEnabled)
transitionHasColorBackground(DEFAULT_TASK_DISPLAY_AREA)
}
/** Checks that a color background is visible while the task transition is occurring. */
@Presubmit
@Test
fun transitionHasColorBackground_shellTransit() {
Assume.assumeTrue(isShellTransitionsEnabled)
transitionHasColorBackground(ComponentNameMatcher("", "Animation Background"))
}
private fun transitionHasColorBackground(backgroundColorLayer: IComponentMatcher) {
Assume.assumeTrue(isShellTransitionsEnabled)
val displayBounds = WindowUtils.getDisplayBounds(flicker.scenario.startRotation)
flicker.assertLayers {
this.invoke("LAUNCH_NEW_TASK_ACTIVITY coversExactly displayBounds") {
it.visibleRegion(testApp.componentMatcher).coversExactly(displayBounds)
this
.invoke("LAUNCH_NEW_TASK_ACTIVITY coversExactly displayBounds") {
it.visibleRegion(launchNewTaskApp.componentMatcher).coversExactly(displayBounds)
}
.isInvisible(bgColorLayer)
.isInvisible(backgroundColorLayer)
.hasNoColor(backgroundColorLayer)
.then()
// Transitioning
.isVisible(bgColorLayer)
.isVisible(backgroundColorLayer)
.hasColor(backgroundColorLayer)
.then()
// Fully transitioned to simple SIMPLE_ACTIVITY
.invoke(
"SIMPLE_ACTIVITY's splashscreen coversExactly displayBounds",
isOptional = true
) {
it.visibleRegion(ComponentSplashScreenMatcher( simpleApp.componentMatcher))
.coversExactly(displayBounds)
}
.invoke("SIMPLE_ACTIVITY coversExactly displayBounds") {
it.visibleRegion(simpleApp.componentMatcher).coversExactly(displayBounds)
}
.isInvisible(bgColorLayer)
.isInvisible(backgroundColorLayer)
.hasNoColor(backgroundColorLayer)
.then()
// Transitioning back
.isVisible(bgColorLayer)
.isVisible(backgroundColorLayer)
.hasColor(backgroundColorLayer)
.then()
// Fully transitioned back to LAUNCH_NEW_TASK_ACTIVITY
.invoke("LAUNCH_NEW_TASK_ACTIVITY coversExactly displayBounds") {
it.visibleRegion(testApp.componentMatcher).coversExactly(displayBounds)
.invoke(
"LAUNCH_NEW_TASK_ACTIVITY's splashscreen coversExactly displayBounds",
isOptional = true
) {
it.visibleRegion(
ComponentSplashScreenMatcher(launchNewTaskApp.componentMatcher))
.coversExactly(displayBounds)
}
.isInvisible(bgColorLayer)
.invoke("LAUNCH_NEW_TASK_ACTIVITY coversExactly displayBounds") {
it.visibleRegion(launchNewTaskApp.componentMatcher).coversExactly(displayBounds)
}
.isInvisible(backgroundColorLayer)
.hasNoColor(backgroundColorLayer)
}
}
@@ -158,7 +197,7 @@ class TaskTransitionTest(flicker: FlickerTest) : BaseTest(flicker) {
@Test
fun newTaskOpensOnTopAndThenCloses() {
flicker.assertWm {
this.isAppWindowOnTop(testApp.componentMatcher)
this.isAppWindowOnTop(launchNewTaskApp.componentMatcher)
.then()
.isAppWindowOnTop(SPLASH_SCREEN, isOptional = true)
.then()
@@ -166,66 +205,15 @@ class TaskTransitionTest(flicker: FlickerTest) : BaseTest(flicker) {
.then()
.isAppWindowOnTop(SPLASH_SCREEN, isOptional = true)
.then()
.isAppWindowOnTop(testApp.componentMatcher)
.isAppWindowOnTop(launchNewTaskApp.componentMatcher)
}
}
/** {@inheritDoc} */
@Postsubmit @Test override fun entireScreenCovered() = super.entireScreenCovered()
/** {@inheritDoc} */
@Postsubmit
@Test
override fun navBarLayerPositionAtStartAndEnd() = super.navBarLayerPositionAtStartAndEnd()
/** {@inheritDoc} */
@Postsubmit
@Test
override fun navBarLayerIsVisibleAtStartAndEnd() = super.navBarLayerIsVisibleAtStartAndEnd()
/** {@inheritDoc} */
@Postsubmit
@Test
override fun statusBarLayerIsVisibleAtStartAndEnd() =
super.statusBarLayerIsVisibleAtStartAndEnd()
/** {@inheritDoc} */
@Postsubmit
@Test
override fun statusBarLayerPositionAtStartAndEnd() = super.statusBarLayerPositionAtStartAndEnd()
/** {@inheritDoc} */
@Postsubmit
@Test
override fun taskBarLayerIsVisibleAtStartAndEnd() = super.taskBarLayerIsVisibleAtStartAndEnd()
/** {@inheritDoc} */
@Postsubmit
@Test
override fun navBarWindowIsAlwaysVisible() = super.navBarWindowIsAlwaysVisible()
/** {@inheritDoc} */
@Postsubmit
@Test
override fun statusBarWindowIsAlwaysVisible() = super.statusBarWindowIsAlwaysVisible()
/** {@inheritDoc} */
@Postsubmit
@Test
override fun taskBarWindowIsAlwaysVisible() = super.taskBarWindowIsAlwaysVisible()
/** {@inheritDoc} */
@Postsubmit
@Test
override fun visibleLayersShownMoreThanOneConsecutiveEntry() =
super.visibleLayersShownMoreThanOneConsecutiveEntry()
/** {@inheritDoc} */
@Postsubmit
@Test
override fun visibleWindowsShownMoreThanOneConsecutiveEntry() =
super.visibleWindowsShownMoreThanOneConsecutiveEntry()
companion object {
private fun getWallpaperPackage(instrumentation: Instrumentation): IComponentMatcher? {
val wallpaperManager = WallpaperManager.getInstance(instrumentation.targetContext)