diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/BaseTest.kt b/tests/FlickerTests/src/com/android/server/wm/flicker/BaseTest.kt index a4609f7510e3e..948288a1fc676 100644 --- a/tests/FlickerTests/src/com/android/server/wm/flicker/BaseTest.kt +++ b/tests/FlickerTests/src/com/android/server/wm/flicker/BaseTest.kt @@ -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) } } } diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/ime/CloseImeWindowToAppTest.kt b/tests/FlickerTests/src/com/android/server/wm/flicker/ime/CloseImeWindowToAppTest.kt index ca4c6a39687f6..098c082552bc5 100644 --- a/tests/FlickerTests/src/com/android/server/wm/flicker/ime/CloseImeWindowToAppTest.kt +++ b/tests/FlickerTests/src/com/android/server/wm/flicker/ime/CloseImeWindowToAppTest.kt @@ -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 { diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/ime/CloseImeWindowToHomeTest.kt b/tests/FlickerTests/src/com/android/server/wm/flicker/ime/CloseImeWindowToHomeTest.kt index 730c4f5e8d271..f110e54b9ced9 100644 --- a/tests/FlickerTests/src/com/android/server/wm/flicker/ime/CloseImeWindowToHomeTest.kt +++ b/tests/FlickerTests/src/com/android/server/wm/flicker/ime/CloseImeWindowToHomeTest.kt @@ -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 { diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/ime/SwitchImeWindowsFromGestureNavTest_ShellTransit.kt b/tests/FlickerTests/src/com/android/server/wm/flicker/ime/SwitchImeWindowsFromGestureNavTest_ShellTransit.kt index c599b10e0084d..e297e893d6d19 100644 --- a/tests/FlickerTests/src/com/android/server/wm/flicker/ime/SwitchImeWindowsFromGestureNavTest_ShellTransit.kt +++ b/tests/FlickerTests/src/com/android/server/wm/flicker/ime/SwitchImeWindowsFromGestureNavTest_ShellTransit.kt @@ -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() - } } diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/launch/OpenAppFromLockNotificationCold.kt b/tests/FlickerTests/src/com/android/server/wm/flicker/launch/OpenAppFromLockNotificationCold.kt index f5f71904f092f..26898f8b3ae6c 100644 --- a/tests/FlickerTests/src/com/android/server/wm/flicker/launch/OpenAppFromLockNotificationCold.kt +++ b/tests/FlickerTests/src/com/android/server/wm/flicker/launch/OpenAppFromLockNotificationCold.kt @@ -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 diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/launch/OpenAppFromLockNotificationWarm.kt b/tests/FlickerTests/src/com/android/server/wm/flicker/launch/OpenAppFromLockNotificationWarm.kt index fe49c61049c9b..c44ad83755f82 100644 --- a/tests/FlickerTests/src/com/android/server/wm/flicker/launch/OpenAppFromLockNotificationWarm.kt +++ b/tests/FlickerTests/src/com/android/server/wm/flicker/launch/OpenAppFromLockNotificationWarm.kt @@ -109,6 +109,11 @@ class OpenAppFromLockNotificationWarm(flicker: FlickerTest) : OpenAppFromNotific */ @Presubmit @Test fun statusBarLayerPositionAtEnd() = flicker.statusBarLayerPositionAtEnd() + /** {@inheritDoc} */ + @Test + @Ignore("Not applicable to this CUJ. Display starts locked and app is full screen at the end") + override fun navBarWindowIsVisibleAtStartAndEnd() = super.navBarWindowIsVisibleAtStartAndEnd() + /** {@inheritDoc} */ @Test @Ignore("Not applicable to this CUJ. Display starts locked and app is full screen at the end") diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/launch/OpenAppFromLockNotificationWithLockOverlayApp.kt b/tests/FlickerTests/src/com/android/server/wm/flicker/launch/OpenAppFromLockNotificationWithLockOverlayApp.kt index d9a3ad2b3d6d3..e3ffb45dbf42a 100644 --- a/tests/FlickerTests/src/com/android/server/wm/flicker/launch/OpenAppFromLockNotificationWithLockOverlayApp.kt +++ b/tests/FlickerTests/src/com/android/server/wm/flicker/launch/OpenAppFromLockNotificationWithLockOverlayApp.kt @@ -109,6 +109,11 @@ class OpenAppFromLockNotificationWithLockOverlayApp(flicker: FlickerTest) : @Test override fun navBarLayerIsVisibleAtStartAndEnd() = super.navBarLayerIsVisibleAtStartAndEnd() + /** {@inheritDoc} */ + @FlakyTest(bugId = 209599395) + @Test + override fun navBarWindowIsAlwaysVisible() = super.navBarWindowIsAlwaysVisible() + companion object { /** * Creates the test configurations. diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/launch/OpenAppNonResizeableTest.kt b/tests/FlickerTests/src/com/android/server/wm/flicker/launch/OpenAppNonResizeableTest.kt index f295ce30978b0..142c6888e7765 100644 --- a/tests/FlickerTests/src/com/android/server/wm/flicker/launch/OpenAppNonResizeableTest.kt +++ b/tests/FlickerTests/src/com/android/server/wm/flicker/launch/OpenAppNonResizeableTest.kt @@ -144,6 +144,11 @@ open class OpenAppNonResizeableTest(flicker: FlickerTest) : OpenAppFromLockTrans @Ignore("Not applicable to this CUJ. Display starts off and app is full screen at the end") override fun navBarWindowIsAlwaysVisible() {} + /** {@inheritDoc} */ + @Test + @Ignore("Not applicable to this CUJ. Display starts locked and app is full screen at the end") + override fun navBarWindowIsVisibleAtStartAndEnd() = super.navBarWindowIsVisibleAtStartAndEnd() + /** {@inheritDoc} */ @Test @Ignore("Not applicable to this CUJ. Display starts off and app is full screen at the end") diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/quickswitch/QuickSwitchBetweenTwoAppsBackTest_ShellTransit.kt b/tests/FlickerTests/src/com/android/server/wm/flicker/quickswitch/QuickSwitchBetweenTwoAppsBackTest_ShellTransit.kt index ec4e35c0f9dd1..6dc11b5de1f2b 100644 --- a/tests/FlickerTests/src/com/android/server/wm/flicker/quickswitch/QuickSwitchBetweenTwoAppsBackTest_ShellTransit.kt +++ b/tests/FlickerTests/src/com/android/server/wm/flicker/quickswitch/QuickSwitchBetweenTwoAppsBackTest_ShellTransit.kt @@ -17,13 +17,10 @@ package com.android.server.wm.flicker.quickswitch import android.platform.test.annotations.FlakyTest -import android.platform.test.annotations.Presubmit import android.platform.test.annotations.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 @@ -61,17 +58,6 @@ open class QuickSwitchBetweenTwoAppsBackTest_ShellTransit(flicker: FlickerTest) @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() - } - /** {@inheritDoc} */ @FlakyTest(bugId = 250520840) @Test diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/quickswitch/QuickSwitchBetweenTwoAppsForwardTest_ShellTransit.kt b/tests/FlickerTests/src/com/android/server/wm/flicker/quickswitch/QuickSwitchBetweenTwoAppsForwardTest_ShellTransit.kt index 477b419734544..5a78868a8a05f 100644 --- a/tests/FlickerTests/src/com/android/server/wm/flicker/quickswitch/QuickSwitchBetweenTwoAppsForwardTest_ShellTransit.kt +++ b/tests/FlickerTests/src/com/android/server/wm/flicker/quickswitch/QuickSwitchBetweenTwoAppsForwardTest_ShellTransit.kt @@ -17,13 +17,10 @@ package com.android.server.wm.flicker.quickswitch import android.platform.test.annotations.FlakyTest -import android.platform.test.annotations.Presubmit import android.platform.test.annotations.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 @@ -62,17 +59,6 @@ open class QuickSwitchBetweenTwoAppsForwardTest_ShellTransit(flicker: FlickerTes @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() - } - @FlakyTest(bugId = 246284708) @Test override fun visibleLayersShownMoreThanOneConsecutiveEntry() = diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/quickswitch/QuickSwitchFromLauncherTest.kt b/tests/FlickerTests/src/com/android/server/wm/flicker/quickswitch/QuickSwitchFromLauncherTest.kt index 8c8220ff04c92..456eab141f937 100644 --- a/tests/FlickerTests/src/com/android/server/wm/flicker/quickswitch/QuickSwitchFromLauncherTest.kt +++ b/tests/FlickerTests/src/com/android/server/wm/flicker/quickswitch/QuickSwitchFromLauncherTest.kt @@ -26,7 +26,6 @@ import com.android.server.wm.flicker.FlickerTestFactory import com.android.server.wm.flicker.helpers.SimpleAppHelper 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 com.android.server.wm.traces.common.Rect import com.android.server.wm.traces.common.service.PlatformConsts @@ -262,17 +261,6 @@ class QuickSwitchFromLauncherTest(flicker: FlickerTest) : BaseTest(flicker) { @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() - } - @Presubmit @Test override fun visibleLayersShownMoreThanOneConsecutiveEntry() { diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/rotation/ChangeAppRotationTest.kt b/tests/FlickerTests/src/com/android/server/wm/flicker/rotation/ChangeAppRotationTest.kt index 5b52c753d5f27..e3296a50b106d 100644 --- a/tests/FlickerTests/src/com/android/server/wm/flicker/rotation/ChangeAppRotationTest.kt +++ b/tests/FlickerTests/src/com/android/server/wm/flicker/rotation/ChangeAppRotationTest.kt @@ -127,7 +127,7 @@ class ChangeAppRotationTest(flicker: FlickerTest) : RotationTransition(flicker) override fun navBarLayerPositionAtStartAndEnd() = super.navBarLayerPositionAtStartAndEnd() @Test - @IwTest(focusArea = "ime") + @IwTest(focusArea = "framework") override fun cujCompleted() { super.cujCompleted() focusChanges() diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/rotation/SeamlessAppRotationTest.kt b/tests/FlickerTests/src/com/android/server/wm/flicker/rotation/SeamlessAppRotationTest.kt index 2447474a4a9d5..741ae51887a33 100644 --- a/tests/FlickerTests/src/com/android/server/wm/flicker/rotation/SeamlessAppRotationTest.kt +++ b/tests/FlickerTests/src/com/android/server/wm/flicker/rotation/SeamlessAppRotationTest.kt @@ -207,22 +207,8 @@ open class SeamlessAppRotationTest(flicker: FlickerTest) : RotationTransition(fl override fun navBarLayerPositionAtStartAndEnd() = super.navBarLayerPositionAtStartAndEnd() @Test - @IwTest(focusArea = "ime") + @IwTest(focusArea = "framework") override fun cujCompleted() { - if (!flicker.scenario.isTablet) { - // not yet tablet compatible - appLayerRotates() - appLayerAlwaysVisible() - // not tablet compatible - navBarLayerIsVisibleAtStartAndEnd() - navBarWindowIsAlwaysVisible() - } - - if (flicker.scenario.isTablet) { - taskBarLayerIsVisibleAtStartAndEnd() - taskBarWindowIsAlwaysVisible() - } - appWindowFullScreen() appWindowSeamlessRotation() focusDoesNotChange() @@ -233,6 +219,13 @@ open class SeamlessAppRotationTest(flicker: FlickerTest) : RotationTransition(fl entireScreenCovered() visibleLayersShownMoreThanOneConsecutiveEntry() visibleWindowsShownMoreThanOneConsecutiveEntry() + + runAndIgnoreAssumptionViolation { appLayerRotates() } + runAndIgnoreAssumptionViolation { appLayerAlwaysVisible() } + runAndIgnoreAssumptionViolation { navBarLayerIsVisibleAtStartAndEnd() } + runAndIgnoreAssumptionViolation { navBarWindowIsAlwaysVisible() } + runAndIgnoreAssumptionViolation { taskBarLayerIsVisibleAtStartAndEnd() } + runAndIgnoreAssumptionViolation { taskBarWindowIsAlwaysVisible() } } companion object {