Merge "Fix close pip via UI tests"
This commit is contained in:
committed by
Android (Google) Code Review
commit
6db1749380
@@ -20,15 +20,16 @@ import android.platform.test.annotations.Presubmit
|
||||
import android.view.Surface
|
||||
import androidx.test.filters.FlakyTest
|
||||
import com.android.server.wm.flicker.FlickerTestParameter
|
||||
import com.android.server.wm.flicker.FlickerTestParameterFactory
|
||||
import com.android.server.wm.flicker.LAUNCHER_COMPONENT
|
||||
import com.android.server.wm.flicker.dsl.FlickerBuilder
|
||||
import com.android.server.wm.flicker.helpers.setRotation
|
||||
import com.android.server.wm.flicker.startRotation
|
||||
import org.junit.Test
|
||||
import org.junit.runners.Parameterized
|
||||
|
||||
abstract class PipCloseTransition(testSpec: FlickerTestParameter) : PipTransition(testSpec) {
|
||||
/**
|
||||
* Base class for exiting pip (closing pip window) without returning to the app
|
||||
*/
|
||||
abstract class ExitPipTransition(testSpec: FlickerTestParameter) : PipTransition(testSpec) {
|
||||
override val transition: FlickerBuilder.(Map<String, Any?>) -> Unit
|
||||
get() = buildTransition(eachRun = true) { configuration ->
|
||||
setup {
|
||||
@@ -43,16 +44,28 @@ abstract class PipCloseTransition(testSpec: FlickerTestParameter) : PipTransitio
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks that [pipApp] window is pinned and visible at the start and then becomes
|
||||
* unpinned and invisible at the same moment, and remains unpinned and invisible
|
||||
* until the end of the transition
|
||||
*/
|
||||
@Presubmit
|
||||
@Test
|
||||
open fun pipWindowBecomesInvisible() {
|
||||
testSpec.assertWm {
|
||||
this.invoke("hasPipWindow") { it.isPinned(pipApp.component) }
|
||||
.then()
|
||||
.isAppWindowInvisible(pipApp.component)
|
||||
this.invoke("hasPipWindow") {
|
||||
it.isPinned(pipApp.component).isVisible(pipApp.component)
|
||||
}.then().invoke("!hasPipWindow") {
|
||||
it.isNotPinned(pipApp.component).isInvisible(pipApp.component)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks that [pipApp] and [LAUNCHER_COMPONENT] layers are visible at the start
|
||||
* of the transition. Then [pipApp] layer becomes invisible, and remains invisible
|
||||
* until the end of the transition
|
||||
*/
|
||||
@Presubmit
|
||||
@Test
|
||||
open fun pipLayerBecomesInvisible() {
|
||||
@@ -65,6 +78,10 @@ abstract class PipCloseTransition(testSpec: FlickerTestParameter) : PipTransitio
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks that the focus changes between the [pipApp] window and the launcher when
|
||||
* closing the pip window
|
||||
*/
|
||||
@FlakyTest(bugId = 151179149)
|
||||
@Test
|
||||
open fun focusChanges() {
|
||||
@@ -72,14 +89,4 @@ abstract class PipCloseTransition(testSpec: FlickerTestParameter) : PipTransitio
|
||||
this.focusChanges(pipApp.launcherName, "NexusLauncherActivity")
|
||||
}
|
||||
}
|
||||
|
||||
companion object {
|
||||
@Parameterized.Parameters(name = "{0}")
|
||||
@JvmStatic
|
||||
fun getParams(): List<FlickerTestParameter> {
|
||||
return FlickerTestParameterFactory.getInstance()
|
||||
.getConfigNonRotationTests(supportedRotations = listOf(Surface.ROTATION_0),
|
||||
repetitions = 5)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -16,10 +16,12 @@
|
||||
|
||||
package com.android.wm.shell.flicker.pip
|
||||
|
||||
import androidx.test.filters.FlakyTest
|
||||
import android.platform.test.annotations.Postsubmit
|
||||
import android.view.Surface
|
||||
import androidx.test.filters.RequiresDevice
|
||||
import com.android.server.wm.flicker.FlickerParametersRunnerFactory
|
||||
import com.android.server.wm.flicker.FlickerTestParameter
|
||||
import com.android.server.wm.flicker.FlickerTestParameterFactory
|
||||
import com.android.server.wm.flicker.annotation.Group3
|
||||
import com.android.server.wm.flicker.dsl.FlickerBuilder
|
||||
import org.junit.FixMethodOrder
|
||||
@@ -29,15 +31,29 @@ import org.junit.runners.MethodSorters
|
||||
import org.junit.runners.Parameterized
|
||||
|
||||
/**
|
||||
* Test Pip launch.
|
||||
* To run this test: `atest WMShellFlickerTests:PipCloseWithDismissButton`
|
||||
* Test closing a pip window via the dismiss button
|
||||
*
|
||||
* To run this test: `atest WMShellFlickerTests:ExitPipWithDismissButtonTest`
|
||||
*
|
||||
* Actions:
|
||||
* Launch an app in pip mode [pipApp],
|
||||
* Click on the pip window
|
||||
* Click on dismiss button and wait window disappear
|
||||
*
|
||||
* Notes:
|
||||
* 1. Some default assertions (e.g., nav bar, status bar and screen covered)
|
||||
* are inherited [PipTransition]
|
||||
* 2. Part of the test setup occurs automatically via
|
||||
* [com.android.server.wm.flicker.TransitionRunnerWithRules],
|
||||
* including configuring navigation mode, initial orientation and ensuring no
|
||||
* apps are running before setup
|
||||
*/
|
||||
@RequiresDevice
|
||||
@RunWith(Parameterized::class)
|
||||
@Parameterized.UseParametersRunnerFactory(FlickerParametersRunnerFactory::class)
|
||||
@FixMethodOrder(MethodSorters.NAME_ASCENDING)
|
||||
@Group3
|
||||
class PipCloseWithDismissButtonTest(testSpec: FlickerTestParameter) : PipCloseTransition(testSpec) {
|
||||
class ExitPipWithDismissButtonTest(testSpec: FlickerTestParameter) : ExitPipTransition(testSpec) {
|
||||
override val transition: FlickerBuilder.(Map<String, Any?>) -> Unit
|
||||
get() = {
|
||||
super.transition(this, it)
|
||||
@@ -46,11 +62,27 @@ class PipCloseWithDismissButtonTest(testSpec: FlickerTestParameter) : PipCloseTr
|
||||
}
|
||||
}
|
||||
|
||||
@FlakyTest
|
||||
@Postsubmit
|
||||
@Test
|
||||
override fun pipLayerBecomesInvisible() = super.pipLayerBecomesInvisible()
|
||||
|
||||
@FlakyTest
|
||||
@Postsubmit
|
||||
@Test
|
||||
override fun pipWindowBecomesInvisible() = super.pipWindowBecomesInvisible()
|
||||
|
||||
companion object {
|
||||
/**
|
||||
* Creates the test configurations.
|
||||
*
|
||||
* See [FlickerTestParameterFactory.getConfigNonRotationTests] for configuring
|
||||
* repetitions, screen orientation and navigation modes.
|
||||
*/
|
||||
@Parameterized.Parameters(name = "{0}")
|
||||
@JvmStatic
|
||||
fun getParams(): List<FlickerTestParameter> {
|
||||
return FlickerTestParameterFactory.getInstance()
|
||||
.getConfigNonRotationTests(supportedRotations = listOf(Surface.ROTATION_0),
|
||||
repetitions = 5)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -22,6 +22,7 @@ import androidx.test.filters.FlakyTest
|
||||
import androidx.test.filters.RequiresDevice
|
||||
import com.android.server.wm.flicker.FlickerParametersRunnerFactory
|
||||
import com.android.server.wm.flicker.FlickerTestParameter
|
||||
import com.android.server.wm.flicker.FlickerTestParameterFactory
|
||||
import com.android.server.wm.flicker.annotation.Group3
|
||||
import com.android.server.wm.flicker.dsl.FlickerBuilder
|
||||
import com.android.server.wm.flicker.startRotation
|
||||
@@ -33,24 +34,40 @@ import org.junit.runners.MethodSorters
|
||||
import org.junit.runners.Parameterized
|
||||
|
||||
/**
|
||||
* Test Pip launch.
|
||||
* To run this test: `atest WMShellFlickerTests:PipCloseWithSwipe`
|
||||
* Test closing a pip window by swiping it to the bottom-center of the screen
|
||||
*
|
||||
* To run this test: `atest WMShellFlickerTests:ExitPipWithSwipeDownTest`
|
||||
*
|
||||
* Actions:
|
||||
* Launch an app in pip mode [pipApp],
|
||||
* Swipe the pip window to the bottom-center of the screen and wait it disappear
|
||||
*
|
||||
* Notes:
|
||||
* 1. Some default assertions (e.g., nav bar, status bar and screen covered)
|
||||
* are inherited [PipTransition]
|
||||
* 2. Part of the test setup occurs automatically via
|
||||
* [com.android.server.wm.flicker.TransitionRunnerWithRules],
|
||||
* including configuring navigation mode, initial orientation and ensuring no
|
||||
* apps are running before setup
|
||||
*/
|
||||
@RequiresDevice
|
||||
@RunWith(Parameterized::class)
|
||||
@Parameterized.UseParametersRunnerFactory(FlickerParametersRunnerFactory::class)
|
||||
@FixMethodOrder(MethodSorters.NAME_ASCENDING)
|
||||
@Group3
|
||||
class PipCloseWithSwipeTest(testSpec: FlickerTestParameter) : PipCloseTransition(testSpec) {
|
||||
class ExitPipWithSwipeDownTest(testSpec: FlickerTestParameter) : ExitPipTransition(testSpec) {
|
||||
override val transition: FlickerBuilder.(Map<String, Any?>) -> Unit
|
||||
get() = {
|
||||
super.transition(this, it)
|
||||
get() = { args ->
|
||||
super.transition(this, args)
|
||||
transitions {
|
||||
val pipRegion = wmHelper.getWindowRegion(pipApp.component).bounds
|
||||
val pipCenterX = pipRegion.centerX()
|
||||
val pipCenterY = pipRegion.centerY()
|
||||
val displayCenterX = device.displayWidth / 2
|
||||
device.swipe(pipCenterX, pipCenterY, displayCenterX, device.displayHeight, 5)
|
||||
device.swipe(pipCenterX, pipCenterY, displayCenterX, device.displayHeight, 10)
|
||||
wmHelper.waitFor("!hasPipWindow") { !it.wmState.hasPipWindow() }
|
||||
wmHelper.waitForWindowSurfaceDisappeared(pipApp.component)
|
||||
wmHelper.waitForAppTransitionIdle()
|
||||
}
|
||||
}
|
||||
|
||||
@@ -90,4 +107,20 @@ class PipCloseWithSwipeTest(testSpec: FlickerTestParameter) : PipCloseTransition
|
||||
@Presubmit
|
||||
@Test
|
||||
override fun navBarLayerRotatesAndScales() = super.navBarLayerRotatesAndScales()
|
||||
|
||||
companion object {
|
||||
/**
|
||||
* Creates the test configurations.
|
||||
*
|
||||
* See [FlickerTestParameterFactory.getConfigNonRotationTests] for configuring
|
||||
* repetitions, screen orientation and navigation modes.
|
||||
*/
|
||||
@Parameterized.Parameters(name = "{0}")
|
||||
@JvmStatic
|
||||
fun getParams(): List<FlickerTestParameter> {
|
||||
return FlickerTestParameterFactory.getInstance()
|
||||
.getConfigNonRotationTests(supportedRotations = listOf(Surface.ROTATION_0),
|
||||
repetitions = 20)
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user