Adding assertions to ReOpenImeWindowTest

Updating ReOpenImeWindowTest & OpenAppFromOverviewTest transition to wait for fullscreen app instead of hasWindow as this last one was not completely correct.

Adding the assertions for the test ReOpenImeWindowTest.
Adding also some missing assertions to OpenImeWindowTest.

Moving some tests from CommonAssertions launch file to flicker common assertions so that other tests, besides the lunch ones, can use them:
- wallpaperWindowBecomesInvisible
- appLayerReplacesWallpaperLayer

Adding new IME assertions:
- imeWindowBecomesVisible
- imeAppWindowBecomesVisible

Renaming assertion windowAlwaysVisible to appWindowAlwaysVisibleOnTop to be more clear on what it does.

Test: atest FlickerTests
Bug: b/175197807
Change-Id: I157962d53f1254a04c9abef7c6ad2bd1392b1728
This commit is contained in:
Antonella Dellanzo
2020-12-09 14:36:43 +01:00
parent 0e75d9e4dd
commit 8635302f05
10 changed files with 122 additions and 45 deletions

View File

@@ -80,12 +80,23 @@ fun WmAssertion.wallpaperWindowBecomesVisible(
}
}
fun WmAssertion.windowAlwaysVisible(
fun WmAssertion.wallpaperWindowBecomesInvisible(
bugId: Int = 0,
enabled: Boolean = bugId == 0
) {
all("wallpaperWindowBecomesInvisible", bugId, enabled) {
this.showsBelowAppWindow("Wallpaper")
.then()
.hidesBelowAppWindow("Wallpaper")
}
}
fun WmAssertion.appWindowAlwaysVisibleOnTop(
packageName: String,
bugId: Int = 0,
enabled: Boolean = bugId == 0
) {
all("windowAlwaysVisible", bugId, enabled) {
all("appWindowAlwaysVisibleOnTop", bugId, enabled) {
this.showsAppWindowOnTop(packageName)
}
}
@@ -214,6 +225,18 @@ fun LayersAssertion.visibleLayersShownMoreThanOneConsecutiveEntry(
}
}
fun LayersAssertion.appLayerReplacesWallpaperLayer(
appName: String,
bugId: Int = 0,
enabled: Boolean = bugId == 0
) {
all("appLayerReplacesWallpaperLayer", bugId, enabled) {
this.showsLayer("Wallpaper")
.then()
.replaceVisibleLayer("Wallpaper", appName)
}
}
fun LayersAssertion.wallpaperLayerReplacesAppLayer(
testApp: IAppHelper,
bugId: Int = 0,

View File

@@ -65,6 +65,17 @@ fun WmAssertion.imeAppWindowIsAlwaysVisible(
}
}
fun WmAssertion.imeWindowBecomesVisible(
bugId: Int = 0,
enabled: Boolean = bugId == 0
) {
all("imeWindowBecomesVisible", bugId, enabled) {
this.hidesNonAppWindow(IME_WINDOW_TITLE)
.then()
.showsNonAppWindow(IME_WINDOW_TITLE)
}
}
fun WmAssertion.imeWindowBecomesInvisible(
bugId: Int = 0,
enabled: Boolean = bugId == 0
@@ -76,6 +87,18 @@ fun WmAssertion.imeWindowBecomesInvisible(
}
}
fun WmAssertion.imeAppWindowBecomesVisible(
windowName: String,
bugId: Int = 0,
enabled: Boolean = bugId == 0
) {
all("imeAppWindowBecomesVisible", bugId, enabled) {
this.hidesAppWindow(windowName)
.then()
.showsAppWindow(windowName)
}
}
fun WmAssertion.imeAppWindowBecomesInvisible(
testApp: IAppHelper,
bugId: Int = 0,

View File

@@ -33,6 +33,8 @@ import com.android.server.wm.flicker.navBarWindowIsAlwaysVisible
import com.android.server.wm.flicker.visibleWindowsShownMoreThanOneConsecutiveEntry
import com.android.server.wm.flicker.visibleLayersShownMoreThanOneConsecutiveEntry
import com.android.server.wm.flicker.noUncoveredRegions
import com.android.server.wm.flicker.appWindowAlwaysVisibleOnTop
import com.android.server.wm.flicker.layerAlwaysVisible
import com.android.server.wm.flicker.repetitions
import com.android.server.wm.flicker.startRotation
import com.android.server.wm.flicker.statusBarLayerIsAlwaysVisible
@@ -56,8 +58,6 @@ class OpenImeWindowTest(
flickerSpec: Flicker
) : FlickerTestRunner(testName, flickerSpec) {
companion object {
private const val IME_WINDOW_TITLE = "InputMethod"
@Parameterized.Parameters(name = "{0}")
@JvmStatic
fun getParams(): List<Array<Any>> {
@@ -93,12 +93,8 @@ class OpenImeWindowTest(
statusBarWindowIsAlwaysVisible()
visibleWindowsShownMoreThanOneConsecutiveEntry()
all("imeWindowBecomesVisible") {
this.skipUntilFirstAssertion()
.hidesNonAppWindow(IME_WINDOW_TITLE)
.then()
.showsNonAppWindow(IME_WINDOW_TITLE)
}
imeWindowBecomesVisible()
appWindowAlwaysVisibleOnTop(testApp.`package`)
}
layersTrace {
@@ -110,6 +106,7 @@ class OpenImeWindowTest(
visibleLayersShownMoreThanOneConsecutiveEntry()
imeLayerBecomesVisible()
layerAlwaysVisible(testApp.`package`)
}
}
}

View File

@@ -23,14 +23,27 @@ import androidx.test.platform.app.InstrumentationRegistry
import com.android.server.wm.flicker.Flicker
import com.android.server.wm.flicker.FlickerTestRunner
import com.android.server.wm.flicker.FlickerTestRunnerFactory
import com.android.server.wm.flicker.helpers.buildTestTag
import com.android.server.wm.flicker.helpers.ImeAppAutoFocusHelper
import com.android.server.wm.flicker.helpers.reopenAppFromOverview
import com.android.server.wm.flicker.helpers.hasWindow
import com.android.server.wm.flicker.helpers.buildTestTag
import com.android.server.wm.flicker.helpers.setRotation
import com.android.server.wm.flicker.helpers.wakeUpAndGoToHomeScreen
import com.android.server.wm.flicker.navBarLayerIsAlwaysVisible
import com.android.server.wm.flicker.navBarLayerRotatesAndScales
import com.android.server.wm.flicker.navBarWindowIsAlwaysVisible
import com.android.server.wm.flicker.wallpaperWindowBecomesInvisible
import com.android.server.wm.flicker.appLayerReplacesWallpaperLayer
import com.android.server.wm.flicker.visibleWindowsShownMoreThanOneConsecutiveEntry
import com.android.server.wm.flicker.visibleLayersShownMoreThanOneConsecutiveEntry
import com.android.server.wm.traces.parser.windowmanager.WindowManagerStateHelper
import com.android.server.wm.flicker.noUncoveredRegions
import com.android.server.wm.flicker.repetitions
import com.android.server.wm.flicker.startRotation
import com.android.server.wm.flicker.endRotation
import com.android.server.wm.flicker.statusBarLayerIsAlwaysVisible
import com.android.server.wm.flicker.statusBarLayerRotatesScales
import com.android.server.wm.flicker.statusBarWindowIsAlwaysVisible
import com.android.server.wm.flicker.testapp.ActivityOptions
import org.junit.FixMethodOrder
import org.junit.runner.RunWith
import org.junit.runners.MethodSorters
@@ -54,8 +67,9 @@ class ReOpenImeWindowTest(
fun getParams(): List<Array<Any>> {
val instrumentation = InstrumentationRegistry.getInstrumentation()
val testApp = ImeAppAutoFocusHelper(instrumentation)
val testAppComponentName = ActivityOptions.IME_ACTIVITY_AUTO_FOCUS_COMPONENT_NAME
return FlickerTestRunnerFactory(instrumentation, repetitions = 10)
return FlickerTestRunnerFactory(instrumentation, repetitions = 5)
.buildTest { configuration ->
withTestName { buildTestTag("reOpenImeAutoFocus", testApp, configuration) }
repeat { configuration.repetitions }
@@ -73,7 +87,7 @@ class ReOpenImeWindowTest(
}
transitions {
device.reopenAppFromOverview()
device.hasWindow(testApp.getPackage())
WindowManagerStateHelper().waitForFullScreenApp(testAppComponentName)
}
teardown {
eachRun {
@@ -84,6 +98,35 @@ class ReOpenImeWindowTest(
this.setRotation(Surface.ROTATION_0)
}
}
assertions {
windowManagerTrace {
navBarWindowIsAlwaysVisible()
statusBarWindowIsAlwaysVisible()
visibleWindowsShownMoreThanOneConsecutiveEntry()
imeWindowBecomesVisible()
imeAppWindowBecomesVisible(testAppComponentName.className)
wallpaperWindowBecomesInvisible()
}
layersTrace {
noUncoveredRegions(Surface.ROTATION_0, configuration.endRotation,
bugId = 141361128)
navBarLayerRotatesAndScales(Surface.ROTATION_0,
configuration.endRotation)
statusBarLayerRotatesScales(Surface.ROTATION_0,
configuration.endRotation)
statusBarLayerIsAlwaysVisible(
enabled = Surface.ROTATION_0 == configuration.endRotation)
navBarLayerIsAlwaysVisible(
enabled = Surface.ROTATION_0 == configuration.endRotation)
visibleLayersShownMoreThanOneConsecutiveEntry(
enabled = Surface.ROTATION_0 == configuration.endRotation)
imeLayerBecomesVisible()
appLayerReplacesWallpaperLayer(testAppComponentName.className)
}
}
}
}
}

View File

@@ -17,20 +17,8 @@
package com.android.server.wm.flicker.launch
import android.platform.helpers.IAppHelper
import com.android.server.wm.flicker.dsl.LayersAssertion
import com.android.server.wm.flicker.dsl.WmAssertion
fun WmAssertion.wallpaperWindowBecomesInvisible(
bugId: Int = 0,
enabled: Boolean = bugId == 0
) {
all("wallpaperWindowBecomesInvisible", bugId, enabled) {
this.showsBelowAppWindow("Wallpaper")
.then()
.hidesBelowAppWindow("Wallpaper")
}
}
fun WmAssertion.appWindowReplacesLauncherAsTopWindow(
testApp: IAppHelper,
bugId: Int = 0,
@@ -41,16 +29,4 @@ fun WmAssertion.appWindowReplacesLauncherAsTopWindow(
.then()
.showsAppWindowOnTop("Snapshot", testApp.getPackage())
}
}
fun LayersAssertion.appLayerReplacesWallpaperLayer(
testApp: IAppHelper,
bugId: Int = 0,
enabled: Boolean = bugId == 0
) {
all("appLayerReplacesWallpaperLayer", bugId, enabled) {
this.showsLayer("Wallpaper")
.then()
.replaceVisibleLayer("Wallpaper", testApp.getPackage())
}
}

View File

@@ -40,6 +40,8 @@ import com.android.server.wm.flicker.statusBarLayerRotatesScales
import com.android.server.wm.flicker.statusBarWindowIsAlwaysVisible
import com.android.server.wm.flicker.visibleWindowsShownMoreThanOneConsecutiveEntry
import com.android.server.wm.flicker.visibleLayersShownMoreThanOneConsecutiveEntry
import com.android.server.wm.flicker.wallpaperWindowBecomesInvisible
import com.android.server.wm.flicker.appLayerReplacesWallpaperLayer
import org.junit.FixMethodOrder
import org.junit.runner.RunWith
import org.junit.runners.MethodSorters
@@ -107,7 +109,7 @@ class OpenAppColdTest(
statusBarLayerIsAlwaysVisible(enabled = false)
visibleLayersShownMoreThanOneConsecutiveEntry(bugId = 174541970)
appLayerReplacesWallpaperLayer(testApp)
appLayerReplacesWallpaperLayer(testApp.`package`)
}
eventLog {

View File

@@ -29,7 +29,6 @@ import com.android.server.wm.flicker.visibleLayersShownMoreThanOneConsecutiveEnt
import com.android.server.wm.flicker.visibleWindowsShownMoreThanOneConsecutiveEntry
import com.android.server.wm.flicker.helpers.StandardAppHelper
import com.android.server.wm.flicker.helpers.reopenAppFromOverview
import com.android.server.wm.flicker.helpers.hasWindow
import com.android.server.wm.flicker.helpers.buildTestTag
import com.android.server.wm.flicker.helpers.setRotation
import com.android.server.wm.flicker.helpers.wakeUpAndGoToHomeScreen
@@ -42,6 +41,10 @@ import com.android.server.wm.flicker.startRotation
import com.android.server.wm.flicker.statusBarLayerIsAlwaysVisible
import com.android.server.wm.flicker.statusBarLayerRotatesScales
import com.android.server.wm.flicker.statusBarWindowIsAlwaysVisible
import com.android.server.wm.flicker.wallpaperWindowBecomesInvisible
import com.android.server.wm.flicker.appLayerReplacesWallpaperLayer
import com.android.server.wm.flicker.testapp.ActivityOptions
import com.android.server.wm.traces.parser.windowmanager.WindowManagerStateHelper
import org.junit.FixMethodOrder
import org.junit.runner.RunWith
import org.junit.runners.MethodSorters
@@ -83,7 +86,9 @@ class OpenAppFromOverviewTest(
}
transitions {
device.reopenAppFromOverview()
device.hasWindow(testApp.getPackage())
WindowManagerStateHelper().waitForFullScreenApp(
ActivityOptions.SIMPLE_ACTIVITY_AUTO_FOCUS_COMPONENT_NAME
)
}
teardown {
test {
@@ -115,7 +120,7 @@ class OpenAppFromOverviewTest(
visibleLayersShownMoreThanOneConsecutiveEntry(
enabled = Surface.ROTATION_0 == configuration.endRotation)
appLayerReplacesWallpaperLayer(testApp)
appLayerReplacesWallpaperLayer(testApp.`package`)
}
eventLog {

View File

@@ -40,6 +40,8 @@ import com.android.server.wm.flicker.statusBarLayerRotatesScales
import com.android.server.wm.flicker.statusBarWindowIsAlwaysVisible
import com.android.server.wm.flicker.visibleWindowsShownMoreThanOneConsecutiveEntry
import com.android.server.wm.flicker.visibleLayersShownMoreThanOneConsecutiveEntry
import com.android.server.wm.flicker.wallpaperWindowBecomesInvisible
import com.android.server.wm.flicker.appLayerReplacesWallpaperLayer
import org.junit.FixMethodOrder
import org.junit.runner.RunWith
import org.junit.runners.MethodSorters
@@ -112,7 +114,7 @@ class OpenAppWarmTest(
visibleLayersShownMoreThanOneConsecutiveEntry(
enabled = Surface.ROTATION_0 == configuration.endRotation)
appLayerReplacesWallpaperLayer(testApp)
appLayerReplacesWallpaperLayer(testApp.`package`)
}
eventLog {

View File

@@ -30,7 +30,7 @@ import com.android.server.wm.flicker.FlickerTestRunner
import com.android.server.wm.flicker.FlickerTestRunnerFactory
import com.android.server.wm.flicker.endRotation
import com.android.server.wm.flicker.focusDoesNotChange
import com.android.server.wm.flicker.windowAlwaysVisible
import com.android.server.wm.flicker.appWindowAlwaysVisibleOnTop
import com.android.server.wm.flicker.layerAlwaysVisible
import com.android.server.wm.flicker.helpers.WindowUtils
import com.android.server.wm.flicker.helpers.buildTestTag
@@ -146,7 +146,7 @@ class SeamlessAppRotationTest(
navBarWindowIsAlwaysVisible(bugId = 140855415)
statusBarWindowIsAlwaysVisible(bugId = 140855415)
visibleWindowsShownMoreThanOneConsecutiveEntry()
windowAlwaysVisible(configuration.intentPackageName)
appWindowAlwaysVisibleOnTop(configuration.intentPackageName)
}
layersTrace {

View File

@@ -23,4 +23,10 @@ public class ActivityOptions {
public static final ComponentName SEAMLESS_ACTIVITY_COMPONENT_NAME =
new ComponentName("com.android.server.wm.flicker.testapp",
"com.android.server.wm.flicker.testapp.SeamlessRotationActivity");
public static final ComponentName IME_ACTIVITY_AUTO_FOCUS_COMPONENT_NAME =
new ComponentName("com.android.server.wm.flicker.testapp",
"com.android.server.wm.flicker.testapp.ImeActivityAutoFocus");
public static final ComponentName SIMPLE_ACTIVITY_AUTO_FOCUS_COMPONENT_NAME =
new ComponentName("com.android.server.wm.flicker.testapp",
"com.android.server.wm.flicker.testapp.SimpleActivity");
}