From 91a9a9b35cbe6755528a01c042706cbfbaf05562 Mon Sep 17 00:00:00 2001 From: Chilun Huang Date: Wed, 7 Sep 2022 15:55:38 +0800 Subject: [PATCH] Fix tests for changed transitions Fix tests according to new entering/dismissing transitions. Bug: 244414379 Test: atest com.android.wm.shell.flicker.splitscreen Change-Id: I02046eb4748ed34fac6b5caaac39bcf82dc33e46 --- .../wm/shell/flicker/CommonAssertions.kt | 29 +++++++++++++++++-- .../EnterSplitScreenByDragFromAllApps.kt | 23 ++++++++++++--- .../EnterSplitScreenByDragFromNotification.kt | 23 ++++++++++++--- .../EnterSplitScreenByDragFromTaskbar.kt | 23 ++++++++++++--- 4 files changed, 84 insertions(+), 14 deletions(-) diff --git a/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/CommonAssertions.kt b/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/CommonAssertions.kt index cc987dc7986ca..7058cb8ea1491 100644 --- a/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/CommonAssertions.kt +++ b/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/CommonAssertions.kt @@ -99,15 +99,40 @@ fun FlickerTestParameter.splitAppLayerBoundsBecomesVisible( portraitPosTop: Boolean ) { assertLayers { - this.notContains(SPLIT_SCREEN_DIVIDER_COMPONENT.or(component), isOptional = true) + // TODO(b/242025948): Use SPLIT_SCREEN_DIVIDER_COMPONENT.or(component) for notContains + // and isInvisible when they are ready. + this.notContains(SPLIT_SCREEN_DIVIDER_COMPONENT) .then() - .isInvisible(SPLIT_SCREEN_DIVIDER_COMPONENT.or(component)) + .notContains(component, isOptional = true) + .then() + .isInvisible(SPLIT_SCREEN_DIVIDER_COMPONENT, isOptional = true) + .then() + .isInvisible(component, isOptional = true) .then() .splitAppLayerBoundsSnapToDivider( component, landscapePosLeft, portraitPosTop, endRotation) } } +fun FlickerTestParameter.splitAppLayerBoundsBecomesVisibleByDrag( + component: IComponentMatcher +) { + assertLayers { + // TODO(b/242025948): Use SPLIT_SCREEN_DIVIDER_COMPONENT.or(component) for notContains + // and isInvisible when they are ready. + this.notContains(SPLIT_SCREEN_DIVIDER_COMPONENT) + .then() + .notContains(component, isOptional = true) + .then() + .isInvisible(SPLIT_SCREEN_DIVIDER_COMPONENT, isOptional = true) + .then() + .isInvisible(component, isOptional = true) + .then() + // TODO(b/245472831): Verify the component should snap to divider. + .isVisible(component) + } +} + fun FlickerTestParameter.splitAppLayerBoundsBecomesInvisible( component: IComponentMatcher, landscapePosLeft: Boolean, diff --git a/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/splitscreen/EnterSplitScreenByDragFromAllApps.kt b/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/splitscreen/EnterSplitScreenByDragFromAllApps.kt index 8e2769fb75bd6..502004e1c9c50 100644 --- a/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/splitscreen/EnterSplitScreenByDragFromAllApps.kt +++ b/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/splitscreen/EnterSplitScreenByDragFromAllApps.kt @@ -25,12 +25,14 @@ import com.android.server.wm.flicker.FlickerTestParameter import com.android.server.wm.flicker.FlickerTestParameterFactory import com.android.server.wm.flicker.annotation.Group1 import com.android.server.wm.flicker.dsl.FlickerBuilder +import com.android.server.wm.flicker.helpers.isShellTransitionsEnabled +import com.android.wm.shell.flicker.SPLIT_SCREEN_DIVIDER_COMPONENT import com.android.wm.shell.flicker.appWindowBecomesVisible import com.android.wm.shell.flicker.appWindowIsVisibleAtEnd import com.android.wm.shell.flicker.helpers.SplitScreenHelper import com.android.wm.shell.flicker.layerBecomesVisible import com.android.wm.shell.flicker.layerIsVisibleAtEnd -import com.android.wm.shell.flicker.splitAppLayerBoundsBecomesVisible +import com.android.wm.shell.flicker.splitAppLayerBoundsBecomesVisibleByDrag import com.android.wm.shell.flicker.splitAppLayerBoundsIsVisibleAtEnd import com.android.wm.shell.flicker.splitScreenDividerBecomesVisible import org.junit.Assume @@ -81,7 +83,20 @@ class EnterSplitScreenByDragFromAllApps( @Presubmit @Test - fun splitScreenDividerBecomesVisible() = testSpec.splitScreenDividerBecomesVisible() + fun splitScreenDividerBecomesVisible() { + Assume.assumeFalse(isShellTransitionsEnabled) + testSpec.splitScreenDividerBecomesVisible() + } + + // TODO(b/245472831): Back to splitScreenDividerBecomesVisible after shell transition ready. + @Presubmit + @Test + fun splitScreenDividerIsVisibleAtEnd_ShellTransit() { + Assume.assumeTrue(isShellTransitionsEnabled) + testSpec.assertLayersEnd { + this.isVisible(SPLIT_SCREEN_DIVIDER_COMPONENT) + } + } @Presubmit @Test @@ -98,8 +113,8 @@ class EnterSplitScreenByDragFromAllApps( @Presubmit @Test - fun secondaryAppBoundsBecomesVisible() = testSpec.splitAppLayerBoundsBecomesVisible( - secondaryApp, landscapePosLeft = true, portraitPosTop = true) + fun secondaryAppBoundsBecomesVisible() = testSpec.splitAppLayerBoundsBecomesVisibleByDrag( + secondaryApp) @Presubmit @Test diff --git a/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/splitscreen/EnterSplitScreenByDragFromNotification.kt b/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/splitscreen/EnterSplitScreenByDragFromNotification.kt index 531d376e3588e..f754e7d61a5b0 100644 --- a/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/splitscreen/EnterSplitScreenByDragFromNotification.kt +++ b/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/splitscreen/EnterSplitScreenByDragFromNotification.kt @@ -27,11 +27,13 @@ import com.android.server.wm.flicker.FlickerTestParameter import com.android.server.wm.flicker.FlickerTestParameterFactory import com.android.server.wm.flicker.annotation.Group1 import com.android.server.wm.flicker.dsl.FlickerBuilder +import com.android.server.wm.flicker.helpers.isShellTransitionsEnabled +import com.android.wm.shell.flicker.SPLIT_SCREEN_DIVIDER_COMPONENT import com.android.wm.shell.flicker.appWindowIsVisibleAtEnd import com.android.wm.shell.flicker.helpers.SplitScreenHelper import com.android.wm.shell.flicker.layerBecomesVisible import com.android.wm.shell.flicker.layerIsVisibleAtEnd -import com.android.wm.shell.flicker.splitAppLayerBoundsBecomesVisible +import com.android.wm.shell.flicker.splitAppLayerBoundsBecomesVisibleByDrag import com.android.wm.shell.flicker.splitAppLayerBoundsIsVisibleAtEnd import com.android.wm.shell.flicker.splitScreenDividerBecomesVisible import org.junit.Assume @@ -95,7 +97,20 @@ class EnterSplitScreenByDragFromNotification( @Presubmit @Test - fun splitScreenDividerBecomesVisible() = testSpec.splitScreenDividerBecomesVisible() + fun splitScreenDividerBecomesVisible() { + Assume.assumeFalse(isShellTransitionsEnabled) + testSpec.splitScreenDividerBecomesVisible() + } + + // TODO(b/245472831): Back to splitScreenDividerBecomesVisible after shell transition ready. + @Presubmit + @Test + fun splitScreenDividerIsVisibleAtEnd_ShellTransit() { + Assume.assumeTrue(isShellTransitionsEnabled) + testSpec.assertLayersEnd { + this.isVisible(SPLIT_SCREEN_DIVIDER_COMPONENT) + } + } @Presubmit @Test @@ -113,8 +128,8 @@ class EnterSplitScreenByDragFromNotification( @Presubmit @Test - fun secondaryAppBoundsBecomesVisible() = testSpec.splitAppLayerBoundsBecomesVisible( - sendNotificationApp, landscapePosLeft = true, portraitPosTop = true) + fun secondaryAppBoundsBecomesVisible() = testSpec.splitAppLayerBoundsBecomesVisibleByDrag( + sendNotificationApp) @Presubmit @Test diff --git a/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/splitscreen/EnterSplitScreenByDragFromTaskbar.kt b/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/splitscreen/EnterSplitScreenByDragFromTaskbar.kt index ea43c7ea0ddf8..6fbcf5f825ca2 100644 --- a/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/splitscreen/EnterSplitScreenByDragFromTaskbar.kt +++ b/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/splitscreen/EnterSplitScreenByDragFromTaskbar.kt @@ -25,12 +25,14 @@ import com.android.server.wm.flicker.FlickerTestParameter import com.android.server.wm.flicker.FlickerTestParameterFactory import com.android.server.wm.flicker.annotation.Group1 import com.android.server.wm.flicker.dsl.FlickerBuilder +import com.android.server.wm.flicker.helpers.isShellTransitionsEnabled +import com.android.wm.shell.flicker.SPLIT_SCREEN_DIVIDER_COMPONENT import com.android.wm.shell.flicker.appWindowBecomesVisible import com.android.wm.shell.flicker.appWindowIsVisibleAtEnd import com.android.wm.shell.flicker.helpers.SplitScreenHelper import com.android.wm.shell.flicker.layerBecomesVisible import com.android.wm.shell.flicker.layerIsVisibleAtEnd -import com.android.wm.shell.flicker.splitAppLayerBoundsBecomesVisible +import com.android.wm.shell.flicker.splitAppLayerBoundsBecomesVisibleByDrag import com.android.wm.shell.flicker.splitAppLayerBoundsIsVisibleAtEnd import com.android.wm.shell.flicker.splitScreenDividerBecomesVisible import org.junit.Assume @@ -84,7 +86,20 @@ class EnterSplitScreenByDragFromTaskbar( @Presubmit @Test - fun splitScreenDividerBecomesVisible() = testSpec.splitScreenDividerBecomesVisible() + fun splitScreenDividerBecomesVisible() { + Assume.assumeFalse(isShellTransitionsEnabled) + testSpec.splitScreenDividerBecomesVisible() + } + + // TODO(b/245472831): Back to splitScreenDividerBecomesVisible after shell transition ready. + @Presubmit + @Test + fun splitScreenDividerIsVisibleAtEnd_ShellTransit() { + Assume.assumeTrue(isShellTransitionsEnabled) + testSpec.assertLayersEnd { + this.isVisible(SPLIT_SCREEN_DIVIDER_COMPONENT) + } + } @Presubmit @Test @@ -101,8 +116,8 @@ class EnterSplitScreenByDragFromTaskbar( @Presubmit @Test - fun secondaryAppBoundsBecomesVisible() = testSpec.splitAppLayerBoundsBecomesVisible( - secondaryApp, landscapePosLeft = true, portraitPosTop = true) + fun secondaryAppBoundsBecomesVisible() = testSpec.splitAppLayerBoundsBecomesVisibleByDrag( + secondaryApp) @Presubmit @Test