From 42402af28bfdb18048149f048fd3349d9bf25d06 Mon Sep 17 00:00:00 2001 From: Nataniel Borges Date: Wed, 15 Jun 2022 12:00:07 +0200 Subject: [PATCH 01/13] 1/ Unify waiting for Home or Recents activity to be visible Previously there were multiple ways of checking is the home or recent activity were visible causing differences between tests Bug: 236131465 Test: atest FlickerTests Change-Id: I2cc8b0b82db482d6aeaa4cdf91a77ee74408f2b5 --- .../ime/OpenImeWindowToOverViewTest.kt | 30 ++++--------------- .../wm/flicker/ime/ReOpenImeWindowTest.kt | 21 ++++--------- .../launch/OpenAppFromNotificationWarm.kt | 2 +- .../flicker/launch/OpenAppFromOverviewTest.kt | 14 +++------ 4 files changed, 17 insertions(+), 50 deletions(-) diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/ime/OpenImeWindowToOverViewTest.kt b/tests/FlickerTests/src/com/android/server/wm/flicker/ime/OpenImeWindowToOverViewTest.kt index e899a750a5df8..3d9e8e09db886 100644 --- a/tests/FlickerTests/src/com/android/server/wm/flicker/ime/OpenImeWindowToOverViewTest.kt +++ b/tests/FlickerTests/src/com/android/server/wm/flicker/ime/OpenImeWindowToOverViewTest.kt @@ -17,12 +17,12 @@ package com.android.server.wm.flicker.ime import android.app.Instrumentation +import android.platform.test.annotations.FlakyTest import android.platform.test.annotations.Postsubmit import android.platform.test.annotations.Presubmit import android.platform.test.annotations.RequiresDevice import android.view.Surface import android.view.WindowManagerPolicyConstants -import android.platform.test.annotations.FlakyTest import androidx.test.platform.app.InstrumentationRegistry import com.android.server.wm.flicker.FlickerBuilderProvider import com.android.server.wm.flicker.FlickerParametersRunnerFactory @@ -30,8 +30,8 @@ import com.android.server.wm.flicker.FlickerTestParameter import com.android.server.wm.flicker.FlickerTestParameterFactory import com.android.server.wm.flicker.annotation.Group4 import com.android.server.wm.flicker.dsl.FlickerBuilder -import com.android.server.wm.flicker.helpers.isShellTransitionsEnabled import com.android.server.wm.flicker.helpers.ImeAppAutoFocusHelper +import com.android.server.wm.flicker.helpers.isShellTransitionsEnabled import com.android.server.wm.flicker.navBarLayerIsVisible import com.android.server.wm.flicker.navBarWindowIsVisible import com.android.server.wm.flicker.statusBarLayerIsVisible @@ -39,8 +39,8 @@ import com.android.server.wm.flicker.statusBarWindowIsVisible import com.android.server.wm.traces.common.FlickerComponentName import com.android.server.wm.traces.common.WindowManagerConditionsFactory import com.android.server.wm.traces.parser.windowmanager.WindowManagerStateHelper -import org.junit.Assume.assumeTrue import org.junit.Assume.assumeFalse +import org.junit.Assume.assumeTrue import org.junit.FixMethodOrder import org.junit.Test import org.junit.runner.RunWith @@ -72,12 +72,13 @@ class OpenImeWindowToOverViewTest(private val testSpec: FlickerTestParameter) { } transitions { device.pressRecentApps() - waitForRecentsActivityVisible(wmHelper) + wmHelper.waitForRecentsActivityVisible() waitNavStatusBarVisibility(wmHelper) } teardown { test { device.pressHome() + wmHelper.waitForHomeActivityVisible() imeTestApp.exit(wmHelper) } } @@ -195,25 +196,6 @@ class OpenImeWindowToOverViewTest(private val testSpec: FlickerTestParameter) { } } - private fun waitForRecentsActivityVisible( - wmHelper: WindowManagerStateHelper - ) { - val waitMsg = "state of Recents activity to be visible" - require( - wmHelper.waitFor(waitMsg) { - it.wmState.homeActivity?.let { act -> - it.wmState.isActivityVisible(act.name) - } == true || - it.wmState.recentsActivity?.let { act -> - it.wmState.isActivityVisible(act.name) - } == true - } - ) { "Recents activity should be visible" } - wmHelper.waitForAppTransitionIdle() - // Ensure WindowManagerService wait until all animations have completed - instrumentation.uiAutomation.syncInputTransactions() - } - companion object { /** * Creates the test configurations. @@ -235,4 +217,4 @@ class OpenImeWindowToOverViewTest(private val testSpec: FlickerTestParameter) { ) } } -} \ No newline at end of file +} diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/ime/ReOpenImeWindowTest.kt b/tests/FlickerTests/src/com/android/server/wm/flicker/ime/ReOpenImeWindowTest.kt index 2b23d53e8a851..054125d8ac1a7 100644 --- a/tests/FlickerTests/src/com/android/server/wm/flicker/ime/ReOpenImeWindowTest.kt +++ b/tests/FlickerTests/src/com/android/server/wm/flicker/ime/ReOpenImeWindowTest.kt @@ -17,10 +17,9 @@ package com.android.server.wm.flicker.ime import android.app.Instrumentation -import android.platform.test.annotations.Presubmit -import android.view.Display -import android.view.Surface import android.platform.test.annotations.FlakyTest +import android.platform.test.annotations.Presubmit +import android.view.Surface import androidx.test.filters.RequiresDevice import androidx.test.platform.app.InstrumentationRegistry import com.android.server.wm.flicker.FlickerBuilderProvider @@ -29,21 +28,19 @@ 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.annotation.Group2 +import com.android.server.wm.flicker.dsl.FlickerBuilder +import com.android.server.wm.flicker.entireScreenCovered import com.android.server.wm.flicker.helpers.ImeAppAutoFocusHelper +import com.android.server.wm.flicker.helpers.isShellTransitionsEnabled import com.android.server.wm.flicker.helpers.reopenAppFromOverview import com.android.server.wm.flicker.helpers.setRotation import com.android.server.wm.flicker.navBarLayerIsVisible import com.android.server.wm.flicker.navBarLayerRotatesAndScales import com.android.server.wm.flicker.navBarWindowIsVisible -import com.android.server.wm.flicker.dsl.FlickerBuilder -import com.android.server.wm.flicker.entireScreenCovered -import com.android.server.wm.flicker.helpers.isShellTransitionsEnabled import com.android.server.wm.flicker.statusBarLayerIsVisible import com.android.server.wm.flicker.statusBarLayerRotatesScales import com.android.server.wm.flicker.statusBarWindowIsVisible -import com.android.server.wm.traces.common.ConditionList import com.android.server.wm.traces.common.FlickerComponentName -import com.android.server.wm.traces.common.WindowManagerConditionsFactory import org.junit.Assume.assumeFalse import org.junit.Assume.assumeTrue import org.junit.Before @@ -66,12 +63,6 @@ open class ReOpenImeWindowTest(private val testSpec: FlickerTestParameter) { private val instrumentation: Instrumentation = InstrumentationRegistry.getInstrumentation() private val testApp = ImeAppAutoFocusHelper(instrumentation, testSpec.startRotation) - private val waitConditionSetup = ConditionList(listOf( - WindowManagerConditionsFactory.isAppTransitionIdle(Display.DEFAULT_DISPLAY), - WindowManagerConditionsFactory.hasLayersAnimating().negate(), - WindowManagerConditionsFactory.isHomeActivityVisible() - )) - @Before open fun before() { assumeFalse(isShellTransitionsEnabled) @@ -87,7 +78,7 @@ open class ReOpenImeWindowTest(private val testSpec: FlickerTestParameter) { } eachRun { device.pressRecentApps() - wmHelper.waitFor(waitConditionSetup) + wmHelper.waitForRecentsActivityVisible() this.setRotation(testSpec.startRotation) } } diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/launch/OpenAppFromNotificationWarm.kt b/tests/FlickerTests/src/com/android/server/wm/flicker/launch/OpenAppFromNotificationWarm.kt index 844311259a065..eb9f1bb5deb4e 100644 --- a/tests/FlickerTests/src/com/android/server/wm/flicker/launch/OpenAppFromNotificationWarm.kt +++ b/tests/FlickerTests/src/com/android/server/wm/flicker/launch/OpenAppFromNotificationWarm.kt @@ -73,7 +73,7 @@ open class OpenAppFromNotificationWarm(testSpec: FlickerTestParameter) : wmHelper.waitForFullScreenApp(testApp.component) testApp.postNotification(device, wmHelper) device.pressHome() - wmHelper.waitForAppTransitionIdle() + wmHelper.waitForHomeActivityVisible() } } diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/launch/OpenAppFromOverviewTest.kt b/tests/FlickerTests/src/com/android/server/wm/flicker/launch/OpenAppFromOverviewTest.kt index f7532b201b75e..f8f3f4c8cb4ca 100644 --- a/tests/FlickerTests/src/com/android/server/wm/flicker/launch/OpenAppFromOverviewTest.kt +++ b/tests/FlickerTests/src/com/android/server/wm/flicker/launch/OpenAppFromOverviewTest.kt @@ -19,7 +19,6 @@ package com.android.server.wm.flicker.launch import android.platform.test.annotations.FlakyTest import android.platform.test.annotations.Presubmit import android.platform.test.annotations.RequiresDevice -import android.view.Display import com.android.server.wm.flicker.FlickerParametersRunnerFactory import com.android.server.wm.flicker.FlickerTestParameter import com.android.server.wm.flicker.FlickerTestParameterFactory @@ -61,8 +60,8 @@ import org.junit.runners.Parameterized @Parameterized.UseParametersRunnerFactory(FlickerParametersRunnerFactory::class) @FixMethodOrder(MethodSorters.NAME_ASCENDING) @Group1 -open class OpenAppFromOverviewTest(testSpec: FlickerTestParameter) - : OpenAppFromLauncherTransition(testSpec) { +open class OpenAppFromOverviewTest(testSpec: FlickerTestParameter) : + OpenAppFromLauncherTransition(testSpec) { /** * Defines the transition used to run the test @@ -76,14 +75,9 @@ open class OpenAppFromOverviewTest(testSpec: FlickerTestParameter) } eachRun { device.pressHome() - wmHelper.waitForAppTransitionIdle() + wmHelper.waitForHomeActivityVisible() device.pressRecentApps() - wmHelper.waitFor( - WindowManagerConditionsFactory - .isAppTransitionIdle(Display.DEFAULT_DISPLAY), - WindowManagerConditionsFactory.isActivityVisible(LAUNCHER_COMPONENT), - WindowManagerConditionsFactory.hasLayersAnimating().negate() - ) + wmHelper.waitForRecentsActivityVisible() this.setRotation(testSpec.startRotation) } } From b70cf57b414c5ca93ad81afd01ccc32d26554bab Mon Sep 17 00:00:00 2001 From: Nataniel Borges Date: Wed, 15 Jun 2022 12:08:59 +0200 Subject: [PATCH 02/13] 2/ Use TAPL for going home and recents in app close tests Previously we used UIAutomator directly which could cause instability Also, fix ktlint formatting issues Bug: 236131465 Test: atest FlickerTests Change-Id: I685c6c50774135ea07b7a3be399cb397d96f3744 --- .../server/wm/flicker/close/CloseAppBackButtonTest.kt | 4 ++-- .../server/wm/flicker/close/CloseAppHomeButtonTest.kt | 6 +++--- .../android/server/wm/flicker/close/CloseAppTransition.kt | 6 ++++-- 3 files changed, 9 insertions(+), 7 deletions(-) diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/close/CloseAppBackButtonTest.kt b/tests/FlickerTests/src/com/android/server/wm/flicker/close/CloseAppBackButtonTest.kt index 6c5f6bace49db..c685fe4dd134e 100644 --- a/tests/FlickerTests/src/com/android/server/wm/flicker/close/CloseAppBackButtonTest.kt +++ b/tests/FlickerTests/src/com/android/server/wm/flicker/close/CloseAppBackButtonTest.kt @@ -72,7 +72,7 @@ class CloseAppBackButtonTest(testSpec: FlickerTestParameter) : CloseAppTransitio get() = { super.transition(this) transitions { - device.pressBack() + tapl.pressBack() wmHelper.waitForHomeActivityVisible() } } @@ -118,4 +118,4 @@ class CloseAppBackButtonTest(testSpec: FlickerTestParameter) : CloseAppTransitio .getConfigNonRotationTests(repetitions = 3) } } -} \ No newline at end of file +} diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/close/CloseAppHomeButtonTest.kt b/tests/FlickerTests/src/com/android/server/wm/flicker/close/CloseAppHomeButtonTest.kt index 7451a523f2609..4692640723b1f 100644 --- a/tests/FlickerTests/src/com/android/server/wm/flicker/close/CloseAppHomeButtonTest.kt +++ b/tests/FlickerTests/src/com/android/server/wm/flicker/close/CloseAppHomeButtonTest.kt @@ -16,8 +16,8 @@ package com.android.server.wm.flicker.close -import android.platform.test.annotations.Presubmit import android.platform.test.annotations.FlakyTest +import android.platform.test.annotations.Presubmit import androidx.test.filters.RequiresDevice import com.android.server.wm.flicker.FlickerParametersRunnerFactory import com.android.server.wm.flicker.FlickerTestParameter @@ -69,7 +69,7 @@ class CloseAppHomeButtonTest(testSpec: FlickerTestParameter) : CloseAppTransitio get() = { super.transition(this) transitions { - device.pressHome() + tapl.goHome() wmHelper.waitForHomeActivityVisible() } } @@ -120,4 +120,4 @@ class CloseAppHomeButtonTest(testSpec: FlickerTestParameter) : CloseAppTransitio .getConfigNonRotationTests(repetitions = 3) } } -} \ No newline at end of file +} diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/close/CloseAppTransition.kt b/tests/FlickerTests/src/com/android/server/wm/flicker/close/CloseAppTransition.kt index aaa2db7687927..982e89f7723dc 100644 --- a/tests/FlickerTests/src/com/android/server/wm/flicker/close/CloseAppTransition.kt +++ b/tests/FlickerTests/src/com/android/server/wm/flicker/close/CloseAppTransition.kt @@ -19,21 +19,22 @@ package com.android.server.wm.flicker.close import android.app.Instrumentation import android.platform.test.annotations.Presubmit import androidx.test.platform.app.InstrumentationRegistry +import com.android.launcher3.tapl.LauncherInstrumentation import com.android.server.wm.flicker.FlickerBuilderProvider import com.android.server.wm.flicker.FlickerTestParameter import com.android.server.wm.flicker.LAUNCHER_COMPONENT import com.android.server.wm.flicker.dsl.FlickerBuilder +import com.android.server.wm.flicker.entireScreenCovered import com.android.server.wm.flicker.helpers.SimpleAppHelper import com.android.server.wm.flicker.helpers.StandardAppHelper import com.android.server.wm.flicker.helpers.setRotation import com.android.server.wm.flicker.navBarLayerIsVisible import com.android.server.wm.flicker.navBarLayerRotatesAndScales import com.android.server.wm.flicker.navBarWindowIsVisible -import com.android.server.wm.flicker.entireScreenCovered +import com.android.server.wm.flicker.replacesLayer import com.android.server.wm.flicker.statusBarLayerIsVisible import com.android.server.wm.flicker.statusBarLayerRotatesScales import com.android.server.wm.flicker.statusBarWindowIsVisible -import com.android.server.wm.flicker.replacesLayer import org.junit.Test /** @@ -42,6 +43,7 @@ import org.junit.Test abstract class CloseAppTransition(protected val testSpec: FlickerTestParameter) { protected val instrumentation: Instrumentation = InstrumentationRegistry.getInstrumentation() protected open val testApp: StandardAppHelper = SimpleAppHelper(instrumentation) + protected val tapl = LauncherInstrumentation() /** * Specification of the test transition to execute From 714c68de816175ef2d49852db03b31b986356e18 Mon Sep 17 00:00:00 2001 From: Nataniel Borges Date: Wed, 15 Jun 2022 12:17:51 +0200 Subject: [PATCH 03/13] 3/ Simplify wait for full screen app Previously is didn't consider the layer to be visible nor the Wm state to be idle, which could cause instability Also, fix ktlint formatting issues Bug: 236131465 Test: atest FlickerTests Change-Id: Ia7d1a012221c2b76b472108ea80b12837d4ebce6 --- .../server/wm/flicker/helpers/ImeAppAutoFocusHelper.kt | 5 +---- .../android/server/wm/flicker/helpers/NewTasksAppHelper.kt | 3 +-- .../wm/flicker/ime/SwitchImeWindowsFromGestureNavTest.kt | 4 +--- 3 files changed, 3 insertions(+), 9 deletions(-) diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/helpers/ImeAppAutoFocusHelper.kt b/tests/FlickerTests/src/com/android/server/wm/flicker/helpers/ImeAppAutoFocusHelper.kt index aacc17a49a242..218db450ab154 100644 --- a/tests/FlickerTests/src/com/android/server/wm/flicker/helpers/ImeAppAutoFocusHelper.kt +++ b/tests/FlickerTests/src/com/android/server/wm/flicker/helpers/ImeAppAutoFocusHelper.kt @@ -16,11 +16,10 @@ package com.android.server.wm.flicker.helpers +import android.app.Instrumentation import android.view.WindowInsets.Type.ime import android.view.WindowInsets.Type.navigationBars import android.view.WindowInsets.Type.statusBars - -import android.app.Instrumentation import androidx.test.uiautomator.By import androidx.test.uiautomator.UiDevice import androidx.test.uiautomator.Until @@ -28,7 +27,6 @@ import com.android.server.wm.flicker.testapp.ActivityOptions import com.android.server.wm.traces.common.FlickerComponentName import com.android.server.wm.traces.parser.toFlickerComponent import com.android.server.wm.traces.parser.windowmanager.WindowManagerStateHelper - import java.util.regex.Pattern class ImeAppAutoFocusHelper @JvmOverloads constructor( @@ -75,7 +73,6 @@ class ImeAppAutoFocusHelper @JvmOverloads constructor( "was left in an unknown state (e.g. Screen turned off)" } button.click() - wmHelper.waitForAppTransitionIdle() wmHelper.waitForFullScreenApp( ActivityOptions.DIALOG_THEMED_ACTIVITY_COMPONENT_NAME.toFlickerComponent()) mInstrumentation.waitForIdleSync() diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/helpers/NewTasksAppHelper.kt b/tests/FlickerTests/src/com/android/server/wm/flicker/helpers/NewTasksAppHelper.kt index be68704fc32d5..d9b3dcd593d60 100644 --- a/tests/FlickerTests/src/com/android/server/wm/flicker/helpers/NewTasksAppHelper.kt +++ b/tests/FlickerTests/src/com/android/server/wm/flicker/helpers/NewTasksAppHelper.kt @@ -46,7 +46,6 @@ class NewTasksAppHelper @JvmOverloads constructor( "was left in an unknown state (e.g. in split screen)" } button.click() - wmHelper.waitForAppTransitionIdle() wmHelper.waitForFullScreenApp(component) } -} \ No newline at end of file +} diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/ime/SwitchImeWindowsFromGestureNavTest.kt b/tests/FlickerTests/src/com/android/server/wm/flicker/ime/SwitchImeWindowsFromGestureNavTest.kt index 4b268a871fa0b..cb6f3438765c7 100644 --- a/tests/FlickerTests/src/com/android/server/wm/flicker/ime/SwitchImeWindowsFromGestureNavTest.kt +++ b/tests/FlickerTests/src/com/android/server/wm/flicker/ime/SwitchImeWindowsFromGestureNavTest.kt @@ -23,12 +23,12 @@ import android.view.Surface import android.view.WindowManagerPolicyConstants import androidx.test.filters.RequiresDevice import androidx.test.platform.app.InstrumentationRegistry -import com.android.server.wm.flicker.dsl.FlickerBuilder import com.android.server.wm.flicker.FlickerBuilderProvider 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.Group4 +import com.android.server.wm.flicker.dsl.FlickerBuilder import com.android.server.wm.flicker.helpers.ImeAppAutoFocusHelper import com.android.server.wm.flicker.helpers.SimpleAppHelper import com.android.server.wm.flicker.helpers.WindowUtils @@ -41,7 +41,6 @@ import com.android.server.wm.traces.common.WindowManagerConditionsFactory import com.android.server.wm.traces.parser.windowmanager.WindowManagerStateHelper import org.junit.Assume import org.junit.Before - import org.junit.FixMethodOrder import org.junit.Test import org.junit.runner.RunWith @@ -111,7 +110,6 @@ open class SwitchImeWindowsFromGestureNavTest(private val testSpec: FlickerTestP displayBounds.bounds.width, displayBounds.bounds.height, 50) wmHelper.waitForFullScreenApp(testApp.component) - wmHelper.waitForAppTransitionIdle() createTag(TAG_IME_INVISIBLE) } transitions { From 0fc8e8d752d571f8411caa8fd89754b94bc7c659 Mon Sep 17 00:00:00 2001 From: Nataniel Borges Date: Wed, 15 Jun 2022 17:18:27 +0200 Subject: [PATCH 04/13] 4/ Use WMStateHelper builder pattern This simplifies waiting for different combinations of conditions in theduring the CUJs Also, fix ktlint formatting issues Bug: 236131465 Test: atest FlickerTests Change-Id: I4e1e69776729d086135d47c4feb4fd3a302dae49 --- .../server/wm/flicker/CommonAssertions.kt | 3 +- .../flicker/close/CloseAppBackButtonTest.kt | 4 ++- .../flicker/close/CloseAppHomeButtonTest.kt | 4 ++- .../wm/flicker/close/CloseAppTransition.kt | 16 ++++----- .../flicker/helpers/ImeAppAutoFocusHelper.kt | 13 ++++--- .../server/wm/flicker/helpers/ImeAppHelper.kt | 14 +++++--- .../helpers/ImeEditorPopupDialogAppHelper.kt | 6 ++-- .../wm/flicker/helpers/NewTasksAppHelper.kt | 4 ++- .../flicker/helpers/TwoActivitiesAppHelper.kt | 12 +++---- .../ime/CloseImeAutoOpenWindowToHomeTest.kt | 10 +++--- .../ime/CloseImeEditorPopupDialogTest.kt | 14 +++++--- .../flicker/ime/CloseImeWindowToHomeTest.kt | 17 +++++---- .../LaunchAppShowImeAndDialogThemeAppTest.kt | 17 ++++----- .../ime/LaunchAppShowImeOnStartTest.kt | 6 ++-- ...penImeWindowFromFixedOrientationAppTest.kt | 8 +++-- .../ime/OpenImeWindowToOverViewTest.kt | 19 ++++++---- .../wm/flicker/ime/ReOpenImeWindowTest.kt | 16 +++++---- .../ime/SwitchImeWindowsFromGestureNavTest.kt | 35 ++++++++----------- .../launch/ActivitiesTransitionTest.kt | 26 +++++++------- .../wm/flicker/launch/OpenAppColdTest.kt | 8 +++-- .../launch/OpenAppFromLauncherTransition.kt | 21 ++++++----- .../launch/OpenAppFromLockNotificationCold.kt | 6 ++-- .../launch/OpenAppFromLockNotificationWarm.kt | 6 ++-- ...pFromLockNotificationWithLockOverlayApp.kt | 10 +++--- .../launch/OpenAppFromLockTransition.kt | 16 +++++---- .../launch/OpenAppFromNotificationWarm.kt | 12 +++++-- .../flicker/launch/OpenAppFromOverviewTest.kt | 20 +++++------ .../wm/flicker/launch/OpenAppWarmTest.kt | 14 +++++--- .../wm/flicker/launch/TaskTransitionTest.kt | 14 ++++---- .../QuickSwitchBetweenTwoAppsBackTest.kt | 20 ++++++----- .../QuickSwitchBetweenTwoAppsForwardTest.kt | 26 ++++++++------ .../QuickSwitchFromLauncherTest.kt | 32 +++++++++-------- 32 files changed, 253 insertions(+), 196 deletions(-) diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/CommonAssertions.kt b/tests/FlickerTests/src/com/android/server/wm/flicker/CommonAssertions.kt index 315c40ffa9ba5..210ea9a72ced3 100644 --- a/tests/FlickerTests/src/com/android/server/wm/flicker/CommonAssertions.kt +++ b/tests/FlickerTests/src/com/android/server/wm/flicker/CommonAssertions.kt @@ -180,7 +180,8 @@ fun FlickerTestParameter.statusBarLayerRotatesScales() { * the visibleRegion of the given app component exactly */ fun FlickerTestParameter.snapshotStartingWindowLayerCoversExactlyOnApp( - component: FlickerComponentName) { + component: FlickerComponentName +) { assertLayers { invoke("snapshotStartingWindowLayerCoversExactlyOnApp") { val snapshotLayers = it.subjects.filter { subject -> diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/close/CloseAppBackButtonTest.kt b/tests/FlickerTests/src/com/android/server/wm/flicker/close/CloseAppBackButtonTest.kt index c685fe4dd134e..750ec43f830bf 100644 --- a/tests/FlickerTests/src/com/android/server/wm/flicker/close/CloseAppBackButtonTest.kt +++ b/tests/FlickerTests/src/com/android/server/wm/flicker/close/CloseAppBackButtonTest.kt @@ -73,7 +73,9 @@ class CloseAppBackButtonTest(testSpec: FlickerTestParameter) : CloseAppTransitio super.transition(this) transitions { tapl.pressBack() - wmHelper.waitForHomeActivityVisible() + wmHelper.StateSyncBuilder() + .withHomeActivityVisible() + .waitForAndVerify() } } diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/close/CloseAppHomeButtonTest.kt b/tests/FlickerTests/src/com/android/server/wm/flicker/close/CloseAppHomeButtonTest.kt index 4692640723b1f..c1b55973002c9 100644 --- a/tests/FlickerTests/src/com/android/server/wm/flicker/close/CloseAppHomeButtonTest.kt +++ b/tests/FlickerTests/src/com/android/server/wm/flicker/close/CloseAppHomeButtonTest.kt @@ -70,7 +70,9 @@ class CloseAppHomeButtonTest(testSpec: FlickerTestParameter) : CloseAppTransitio super.transition(this) transitions { tapl.goHome() - wmHelper.waitForHomeActivityVisible() + wmHelper.StateSyncBuilder() + .withHomeActivityVisible() + .waitForAndVerify() } } diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/close/CloseAppTransition.kt b/tests/FlickerTests/src/com/android/server/wm/flicker/close/CloseAppTransition.kt index 982e89f7723dc..2e61ac25878a2 100644 --- a/tests/FlickerTests/src/com/android/server/wm/flicker/close/CloseAppTransition.kt +++ b/tests/FlickerTests/src/com/android/server/wm/flicker/close/CloseAppTransition.kt @@ -22,7 +22,6 @@ import androidx.test.platform.app.InstrumentationRegistry import com.android.launcher3.tapl.LauncherInstrumentation import com.android.server.wm.flicker.FlickerBuilderProvider import com.android.server.wm.flicker.FlickerTestParameter -import com.android.server.wm.flicker.LAUNCHER_COMPONENT import com.android.server.wm.flicker.dsl.FlickerBuilder import com.android.server.wm.flicker.entireScreenCovered import com.android.server.wm.flicker.helpers.SimpleAppHelper @@ -35,6 +34,7 @@ import com.android.server.wm.flicker.replacesLayer import com.android.server.wm.flicker.statusBarLayerIsVisible import com.android.server.wm.flicker.statusBarLayerRotatesScales import com.android.server.wm.flicker.statusBarWindowIsVisible +import com.android.server.wm.traces.common.FlickerComponentName.Companion.LAUNCHER import org.junit.Test /** @@ -156,7 +156,7 @@ abstract class CloseAppTransition(protected val testSpec: FlickerTestParameter) /** * Checks that [testApp] is the top visible app window at the start of the transition and - * that it is replaced by [LAUNCHER_COMPONENT] during the transition + * that it is replaced by [LAUNCHER] during the transition */ @Presubmit @Test @@ -164,30 +164,30 @@ abstract class CloseAppTransition(protected val testSpec: FlickerTestParameter) testSpec.assertWm { this.isAppWindowOnTop(testApp.component) .then() - .isAppWindowOnTop(LAUNCHER_COMPONENT) + .isAppWindowOnTop(LAUNCHER) } } /** - * Checks that [LAUNCHER_COMPONENT] is invisible at the start of the transition and that + * Checks that [LAUNCHER] is invisible at the start of the transition and that * it becomes visible during the transition */ @Presubmit @Test open fun launcherWindowBecomesVisible() { testSpec.assertWm { - this.isAppWindowNotOnTop(LAUNCHER_COMPONENT) + this.isAppWindowNotOnTop(LAUNCHER) .then() - .isAppWindowOnTop(LAUNCHER_COMPONENT) + .isAppWindowOnTop(LAUNCHER) } } /** - * Checks that [LAUNCHER_COMPONENT] layer becomes visible when [testApp] becomes invisible + * Checks that [LAUNCHER] layer becomes visible when [testApp] becomes invisible */ @Presubmit @Test open fun launcherLayerReplacesApp() { - testSpec.replacesLayer(testApp.component, LAUNCHER_COMPONENT) + testSpec.replacesLayer(testApp.component, LAUNCHER) } } diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/helpers/ImeAppAutoFocusHelper.kt b/tests/FlickerTests/src/com/android/server/wm/flicker/helpers/ImeAppAutoFocusHelper.kt index 218db450ab154..ae5f7cd0ed71d 100644 --- a/tests/FlickerTests/src/com/android/server/wm/flicker/helpers/ImeAppAutoFocusHelper.kt +++ b/tests/FlickerTests/src/com/android/server/wm/flicker/helpers/ImeAppAutoFocusHelper.kt @@ -73,9 +73,10 @@ class ImeAppAutoFocusHelper @JvmOverloads constructor( "was left in an unknown state (e.g. Screen turned off)" } button.click() - wmHelper.waitForFullScreenApp( + wmHelper.StateSyncBuilder() + .withFullScreenApp( ActivityOptions.DIALOG_THEMED_ACTIVITY_COMPONENT_NAME.toFlickerComponent()) - mInstrumentation.waitForIdleSync() + .waitForAndVerify() } fun dismissDialog(wmHelper: WindowManagerStateHelper) { val dialog = uiDevice.wait( @@ -84,14 +85,16 @@ class ImeAppAutoFocusHelper @JvmOverloads constructor( // Pressing back key to dismiss the dialog if (dialog != null) { uiDevice.pressBack() - wmHelper.waitForAppTransitionIdle() + wmHelper.StateSyncBuilder() + .withAppTransitionIdle() + .waitForAndVerify() } } fun getInsetsVisibleFromDialog(type: Int): Boolean { - var insetsVisibilityTextView = uiDevice.wait( + val insetsVisibilityTextView = uiDevice.wait( Until.findObject(By.res("android:id/text1")), FIND_TIMEOUT) if (insetsVisibilityTextView != null) { - var visibility = insetsVisibilityTextView.text.toString() + val visibility = insetsVisibilityTextView.text.toString() val matcher = when (type) { ime() -> { Pattern.compile("IME\\: (VISIBLE|INVISIBLE)").matcher(visibility) diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/helpers/ImeAppHelper.kt b/tests/FlickerTests/src/com/android/server/wm/flicker/helpers/ImeAppHelper.kt index 5bd365c7eefd6..1d6f8b1985c43 100644 --- a/tests/FlickerTests/src/com/android/server/wm/flicker/helpers/ImeAppHelper.kt +++ b/tests/FlickerTests/src/com/android/server/wm/flicker/helpers/ImeAppHelper.kt @@ -63,7 +63,9 @@ open class ImeAppHelper @JvmOverloads constructor( if (wmHelper == null) { device.waitForIdle() } else { - wmHelper.waitImeShown() + wmHelper.StateSyncBuilder() + .withImeShown() + .waitForAndVerify() } } @@ -80,7 +82,9 @@ open class ImeAppHelper @JvmOverloads constructor( if (wmHelper == null) { device.waitForIdle() } else { - wmHelper.waitImeGone() + wmHelper.StateSyncBuilder() + .withImeGone() + .waitForAndVerify() } } @@ -96,7 +100,9 @@ open class ImeAppHelper @JvmOverloads constructor( if (wmHelper == null) { device.waitForIdle() } else { - wmHelper.waitForActivityRemoved(component) + wmHelper.StateSyncBuilder() + .withActivityRemoved(component) + .waitForAndVerify() } } -} \ No newline at end of file +} diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/helpers/ImeEditorPopupDialogAppHelper.kt b/tests/FlickerTests/src/com/android/server/wm/flicker/helpers/ImeEditorPopupDialogAppHelper.kt index 172c4330c3c62..772f31817b1c7 100644 --- a/tests/FlickerTests/src/com/android/server/wm/flicker/helpers/ImeEditorPopupDialogAppHelper.kt +++ b/tests/FlickerTests/src/com/android/server/wm/flicker/helpers/ImeEditorPopupDialogAppHelper.kt @@ -54,7 +54,9 @@ class ImeEditorPopupDialogAppHelper @JvmOverloads constructor( // Pressing back key to dismiss the dialog if (dismissButton != null) { dismissButton.click() - wmHelper.waitForAppTransitionIdle() + wmHelper.StateSyncBuilder() + .withAppTransitionIdle() + .waitForAndVerify() } } -} \ No newline at end of file +} diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/helpers/NewTasksAppHelper.kt b/tests/FlickerTests/src/com/android/server/wm/flicker/helpers/NewTasksAppHelper.kt index d9b3dcd593d60..ded136e0ec2c2 100644 --- a/tests/FlickerTests/src/com/android/server/wm/flicker/helpers/NewTasksAppHelper.kt +++ b/tests/FlickerTests/src/com/android/server/wm/flicker/helpers/NewTasksAppHelper.kt @@ -46,6 +46,8 @@ class NewTasksAppHelper @JvmOverloads constructor( "was left in an unknown state (e.g. in split screen)" } button.click() - wmHelper.waitForFullScreenApp(component) + wmHelper.StateSyncBuilder() + .withFullScreenApp(component) + .waitForAndVerify() } } diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/helpers/TwoActivitiesAppHelper.kt b/tests/FlickerTests/src/com/android/server/wm/flicker/helpers/TwoActivitiesAppHelper.kt index a135e0af067b6..e8df7145dfa2f 100644 --- a/tests/FlickerTests/src/com/android/server/wm/flicker/helpers/TwoActivitiesAppHelper.kt +++ b/tests/FlickerTests/src/com/android/server/wm/flicker/helpers/TwoActivitiesAppHelper.kt @@ -19,13 +19,11 @@ package com.android.server.wm.flicker.helpers import android.app.Instrumentation import android.support.test.launcherhelper.ILauncherStrategy import android.support.test.launcherhelper.LauncherStrategyFactory -import android.view.Display import androidx.test.uiautomator.By import androidx.test.uiautomator.UiDevice import androidx.test.uiautomator.Until import com.android.server.wm.flicker.testapp.ActivityOptions import com.android.server.wm.traces.common.FlickerComponentName -import com.android.server.wm.traces.common.WindowManagerConditionsFactory import com.android.server.wm.traces.parser.toFlickerComponent import com.android.server.wm.traces.parser.windowmanager.WindowManagerStateHelper @@ -53,14 +51,12 @@ class TwoActivitiesAppHelper @JvmOverloads constructor( button.click() device.wait(Until.gone(launchActivityButton), FIND_TIMEOUT) - wmHelper.waitFor( - WindowManagerStateHelper.isAppFullScreen(secondActivityComponent), - WindowManagerConditionsFactory.isAppTransitionIdle(Display.DEFAULT_DISPLAY), - WindowManagerConditionsFactory.hasLayersAnimating().negate() - ) + wmHelper.StateSyncBuilder() + .withFullScreenApp(secondActivityComponent) + .waitForAndVerify() } companion object { private const val LAUNCH_SECOND_ACTIVITY = "launch_second_activity" } -} \ No newline at end of file +} diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/ime/CloseImeAutoOpenWindowToHomeTest.kt b/tests/FlickerTests/src/com/android/server/wm/flicker/ime/CloseImeAutoOpenWindowToHomeTest.kt index 13a49a1cb47c8..5e5dfd6748127 100644 --- a/tests/FlickerTests/src/com/android/server/wm/flicker/ime/CloseImeAutoOpenWindowToHomeTest.kt +++ b/tests/FlickerTests/src/com/android/server/wm/flicker/ime/CloseImeAutoOpenWindowToHomeTest.kt @@ -17,10 +17,10 @@ package com.android.server.wm.flicker.ime import android.app.Instrumentation +import android.platform.test.annotations.FlakyTest import android.platform.test.annotations.Presubmit import android.view.Surface import android.view.WindowManagerPolicyConstants -import android.platform.test.annotations.FlakyTest import androidx.test.filters.RequiresDevice import androidx.test.platform.app.InstrumentationRegistry import com.android.server.wm.flicker.FlickerBuilderProvider @@ -29,11 +29,11 @@ import com.android.server.wm.flicker.FlickerTestParameter import com.android.server.wm.flicker.FlickerTestParameterFactory import com.android.server.wm.flicker.annotation.Group2 import com.android.server.wm.flicker.dsl.FlickerBuilder +import com.android.server.wm.flicker.entireScreenCovered import com.android.server.wm.flicker.helpers.ImeAppAutoFocusHelper import com.android.server.wm.flicker.navBarLayerIsVisible import com.android.server.wm.flicker.navBarLayerRotatesAndScales import com.android.server.wm.flicker.navBarWindowIsVisible -import com.android.server.wm.flicker.entireScreenCovered import com.android.server.wm.flicker.statusBarLayerIsVisible import com.android.server.wm.flicker.statusBarLayerRotatesScales import com.android.server.wm.flicker.statusBarWindowIsVisible @@ -81,8 +81,10 @@ class CloseImeAutoOpenWindowToHomeTest(private val testSpec: FlickerTestParamete } transitions { device.pressHome() - wmHelper.waitForHomeActivityVisible() - wmHelper.waitImeGone() + wmHelper.StateSyncBuilder() + .withHomeActivityVisible() + .withImeGone() + .waitForAndVerify() } } } diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/ime/CloseImeEditorPopupDialogTest.kt b/tests/FlickerTests/src/com/android/server/wm/flicker/ime/CloseImeEditorPopupDialogTest.kt index 2e29b3e314ca7..7a816c16aa28d 100644 --- a/tests/FlickerTests/src/com/android/server/wm/flicker/ime/CloseImeEditorPopupDialogTest.kt +++ b/tests/FlickerTests/src/com/android/server/wm/flicker/ime/CloseImeEditorPopupDialogTest.kt @@ -23,9 +23,9 @@ import android.view.WindowManagerPolicyConstants import androidx.test.filters.RequiresDevice import androidx.test.platform.app.InstrumentationRegistry import com.android.server.wm.flicker.FlickerBuilderProvider -import com.android.server.wm.flicker.FlickerTestParameterFactory 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.Group4 import com.android.server.wm.flicker.dsl.FlickerBuilder import com.android.server.wm.flicker.helpers.ImeEditorPopupDialogAppHelper @@ -59,13 +59,17 @@ class CloseImeEditorPopupDialogTest(private val testSpec: FlickerTestParameter) } transitions { imeTestApp.dismissDialog(wmHelper) - wmHelper.waitImeGone() + wmHelper.StateSyncBuilder() + .withImeGone() + .waitForAndVerify() } teardown { eachRun { device.pressHome() - wmHelper.waitForHomeActivityVisible() - imeTestApp.exit() + wmHelper.StateSyncBuilder() + .withHomeActivityVisible() + .waitForAndVerify() + imeTestApp.exit(wmHelper) } } } @@ -133,4 +137,4 @@ class CloseImeEditorPopupDialogTest(private val testSpec: FlickerTestParameter) ) } } -} \ No newline at end of file +} 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 c77ea12a58509..df81042b05403 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 @@ -17,10 +17,10 @@ package com.android.server.wm.flicker.ime import android.app.Instrumentation +import android.platform.test.annotations.FlakyTest import android.platform.test.annotations.Presubmit import android.view.Surface import android.view.WindowManagerPolicyConstants -import android.platform.test.annotations.FlakyTest import androidx.test.filters.RequiresDevice import androidx.test.platform.app.InstrumentationRegistry import com.android.server.wm.flicker.FlickerBuilderProvider @@ -29,11 +29,11 @@ import com.android.server.wm.flicker.FlickerTestParameter import com.android.server.wm.flicker.FlickerTestParameterFactory import com.android.server.wm.flicker.annotation.Group2 import com.android.server.wm.flicker.dsl.FlickerBuilder +import com.android.server.wm.flicker.entireScreenCovered import com.android.server.wm.flicker.helpers.ImeAppHelper import com.android.server.wm.flicker.navBarLayerIsVisible import com.android.server.wm.flicker.navBarLayerRotatesAndScales import com.android.server.wm.flicker.navBarWindowIsVisible -import com.android.server.wm.flicker.entireScreenCovered import com.android.server.wm.flicker.statusBarLayerRotatesScales import com.android.server.wm.flicker.statusBarWindowIsVisible import com.android.server.wm.traces.common.FlickerComponentName @@ -42,6 +42,7 @@ import org.junit.Test import org.junit.runner.RunWith import org.junit.runners.MethodSorters import org.junit.runners.Parameterized + /** * Test IME window closing to home transitions. * To run this test: `atest FlickerTests:CloseImeWindowToHomeTest` @@ -66,16 +67,20 @@ class CloseImeWindowToHomeTest(private val testSpec: FlickerTestParameter) { } transitions { device.pressHome() - wmHelper.waitForHomeActivityVisible() - wmHelper.waitImeGone() + wmHelper.StateSyncBuilder() + .withHomeActivityVisible() + .withImeGone() + .waitForAndVerify() } teardown { eachRun { device.pressHome() - wmHelper.waitForHomeActivityVisible() + wmHelper.StateSyncBuilder() + .withHomeActivityVisible() + .waitForAndVerify() } test { - testApp.exit() + testApp.exit(wmHelper) } } } diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/ime/LaunchAppShowImeAndDialogThemeAppTest.kt b/tests/FlickerTests/src/com/android/server/wm/flicker/ime/LaunchAppShowImeAndDialogThemeAppTest.kt index b298df2f8ffe3..022246bcb7b13 100644 --- a/tests/FlickerTests/src/com/android/server/wm/flicker/ime/LaunchAppShowImeAndDialogThemeAppTest.kt +++ b/tests/FlickerTests/src/com/android/server/wm/flicker/ime/LaunchAppShowImeAndDialogThemeAppTest.kt @@ -16,15 +16,14 @@ package com.android.server.wm.flicker.ime +import android.app.Instrumentation +import android.platform.test.annotations.FlakyTest +import android.platform.test.annotations.Presubmit +import android.view.Surface import android.view.WindowInsets.Type.ime import android.view.WindowInsets.Type.navigationBars import android.view.WindowInsets.Type.statusBars - -import android.app.Instrumentation -import android.platform.test.annotations.Presubmit -import android.view.Surface import android.view.WindowManagerPolicyConstants -import android.platform.test.annotations.FlakyTest import androidx.test.filters.RequiresDevice import androidx.test.platform.app.InstrumentationRegistry import com.android.server.wm.flicker.FlickerBuilderProvider @@ -34,13 +33,13 @@ import com.android.server.wm.flicker.FlickerTestParameterFactory import com.android.server.wm.flicker.dsl.FlickerBuilder import com.android.server.wm.flicker.helpers.ImeAppAutoFocusHelper import com.android.server.wm.traces.common.FlickerComponentName +import org.junit.Assert.assertFalse +import org.junit.Assert.assertTrue import org.junit.FixMethodOrder import org.junit.Test import org.junit.runner.RunWith import org.junit.runners.MethodSorters import org.junit.runners.Parameterized -import org.junit.Assert.assertFalse -import org.junit.Assert.assertTrue /** * Test IME snapshot mechanism won't apply when transitioning from non-IME focused dialog activity. @@ -60,7 +59,9 @@ class LaunchAppShowImeAndDialogThemeAppTest(private val testSpec: FlickerTestPar setup { eachRun { testApp.launchViaIntent(wmHelper) - wmHelper.waitImeShown() + wmHelper.StateSyncBuilder() + .withImeShown() + .waitForAndVerify() testApp.startDialogThemedActivity(wmHelper) // Verify IME insets isn't visible on dialog since it's non-IME focusable window assertFalse(testApp.getInsetsVisibleFromDialog(ime())) diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/ime/LaunchAppShowImeOnStartTest.kt b/tests/FlickerTests/src/com/android/server/wm/flicker/ime/LaunchAppShowImeOnStartTest.kt index b897ca2a9c153..f18b294d743e3 100644 --- a/tests/FlickerTests/src/com/android/server/wm/flicker/ime/LaunchAppShowImeOnStartTest.kt +++ b/tests/FlickerTests/src/com/android/server/wm/flicker/ime/LaunchAppShowImeOnStartTest.kt @@ -91,7 +91,9 @@ class LaunchAppShowImeOnStartTest(private val testSpec: FlickerTestParameter) { } transitions { testApp.launchViaIntent(wmHelper) - wmHelper.waitImeShown() + wmHelper.StateSyncBuilder() + .withImeShown() + .waitForAndVerify() } } } @@ -153,4 +155,4 @@ class LaunchAppShowImeOnStartTest(private val testSpec: FlickerTestParameter) { ) } } -} \ No newline at end of file +} diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/ime/OpenImeWindowFromFixedOrientationAppTest.kt b/tests/FlickerTests/src/com/android/server/wm/flicker/ime/OpenImeWindowFromFixedOrientationAppTest.kt index fdaeacb5e8a28..4f26fc2841988 100644 --- a/tests/FlickerTests/src/com/android/server/wm/flicker/ime/OpenImeWindowFromFixedOrientationAppTest.kt +++ b/tests/FlickerTests/src/com/android/server/wm/flicker/ime/OpenImeWindowFromFixedOrientationAppTest.kt @@ -17,12 +17,12 @@ package com.android.server.wm.flicker.ime import android.app.Instrumentation +import android.platform.test.annotations.FlakyTest import android.platform.test.annotations.Postsubmit import android.platform.test.annotations.Presubmit import android.platform.test.annotations.RequiresDevice import android.view.Surface import android.view.WindowManagerPolicyConstants -import android.platform.test.annotations.FlakyTest import androidx.test.platform.app.InstrumentationRegistry import com.android.launcher3.tapl.LauncherInstrumentation import com.android.server.wm.flicker.FlickerBuilderProvider @@ -70,7 +70,9 @@ class OpenImeWindowFromFixedOrientationAppTest(private val testSpec: FlickerTest eachRun { // Swiping out the IME activity to home. taplInstrumentation.goHome() - wmHelper.waitForHomeActivityVisible() + wmHelper.StateSyncBuilder() + .withHomeActivityVisible() + .waitForAndVerify() } } transitions { @@ -135,4 +137,4 @@ class OpenImeWindowFromFixedOrientationAppTest(private val testSpec: FlickerTest ) } } -} \ No newline at end of file +} diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/ime/OpenImeWindowToOverViewTest.kt b/tests/FlickerTests/src/com/android/server/wm/flicker/ime/OpenImeWindowToOverViewTest.kt index 3d9e8e09db886..1166a9a483d1e 100644 --- a/tests/FlickerTests/src/com/android/server/wm/flicker/ime/OpenImeWindowToOverViewTest.kt +++ b/tests/FlickerTests/src/com/android/server/wm/flicker/ime/OpenImeWindowToOverViewTest.kt @@ -72,14 +72,18 @@ class OpenImeWindowToOverViewTest(private val testSpec: FlickerTestParameter) { } transitions { device.pressRecentApps() - wmHelper.waitForRecentsActivityVisible() - waitNavStatusBarVisibility(wmHelper) + val builder = wmHelper.StateSyncBuilder() + .withRecentsActivityVisible() + waitNavStatusBarVisibility(builder) + builder.waitForAndVerify() } teardown { test { device.pressHome() - wmHelper.waitForHomeActivityVisible() - imeTestApp.exit(wmHelper) + wmHelper.StateSyncBuilder() + .withHomeActivityVisible() + .waitForAndVerify() + imeTestApp.exit() } } } @@ -98,12 +102,13 @@ class OpenImeWindowToOverViewTest(private val testSpec: FlickerTestParameter) { * * b/227189877 */ - private fun waitNavStatusBarVisibility(wmHelper: WindowManagerStateHelper) { + private fun waitNavStatusBarVisibility(stateSync: WindowManagerStateHelper.StateSyncBuilder) { when { testSpec.isLandscapeOrSeascapeAtStart && !testSpec.isGesturalNavigation -> - wmHelper.waitFor(statusBarInvisible) + stateSync.add(statusBarInvisible) testSpec.isLandscapeOrSeascapeAtStart -> - wmHelper.waitFor(statusBarInvisible, navBarInvisible) + stateSync.add(statusBarInvisible) + .add(navBarInvisible) } } diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/ime/ReOpenImeWindowTest.kt b/tests/FlickerTests/src/com/android/server/wm/flicker/ime/ReOpenImeWindowTest.kt index 054125d8ac1a7..836f0f077b78d 100644 --- a/tests/FlickerTests/src/com/android/server/wm/flicker/ime/ReOpenImeWindowTest.kt +++ b/tests/FlickerTests/src/com/android/server/wm/flicker/ime/ReOpenImeWindowTest.kt @@ -26,7 +26,6 @@ import com.android.server.wm.flicker.FlickerBuilderProvider 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.LAUNCHER_COMPONENT import com.android.server.wm.flicker.annotation.Group2 import com.android.server.wm.flicker.dsl.FlickerBuilder import com.android.server.wm.flicker.entireScreenCovered @@ -41,6 +40,7 @@ import com.android.server.wm.flicker.statusBarLayerIsVisible import com.android.server.wm.flicker.statusBarLayerRotatesScales import com.android.server.wm.flicker.statusBarWindowIsVisible import com.android.server.wm.traces.common.FlickerComponentName +import com.android.server.wm.traces.common.FlickerComponentName.Companion.LAUNCHER import org.junit.Assume.assumeFalse import org.junit.Assume.assumeTrue import org.junit.Before @@ -78,13 +78,17 @@ open class ReOpenImeWindowTest(private val testSpec: FlickerTestParameter) { } eachRun { device.pressRecentApps() - wmHelper.waitForRecentsActivityVisible() + wmHelper.StateSyncBuilder() + .withRecentsActivityVisible() + .waitForAndVerify() this.setRotation(testSpec.startRotation) } } transitions { device.reopenAppFromOverview(wmHelper) - wmHelper.waitImeShown() + wmHelper.StateSyncBuilder() + .withImeShown() + .waitForAndVerify() } teardown { test { @@ -119,9 +123,9 @@ open class ReOpenImeWindowTest(private val testSpec: FlickerTestParameter) { @Test fun launcherWindowBecomesInvisible() { testSpec.assertWm { - this.isAppWindowVisible(LAUNCHER_COMPONENT) + this.isAppWindowVisible(LAUNCHER) .then() - .isAppWindowInvisible(LAUNCHER_COMPONENT) + .isAppWindowInvisible(LAUNCHER) } } @@ -199,7 +203,7 @@ open class ReOpenImeWindowTest(private val testSpec: FlickerTestParameter) { @Test fun appLayerReplacesLauncher() { testSpec.assertLayers { - this.isVisible(LAUNCHER_COMPONENT) + this.isVisible(FlickerComponentName.LAUNCHER) .then() .isVisible(FlickerComponentName.SNAPSHOT, isOptional = true) .then() diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/ime/SwitchImeWindowsFromGestureNavTest.kt b/tests/FlickerTests/src/com/android/server/wm/flicker/ime/SwitchImeWindowsFromGestureNavTest.kt index cb6f3438765c7..e0b992630d8e7 100644 --- a/tests/FlickerTests/src/com/android/server/wm/flicker/ime/SwitchImeWindowsFromGestureNavTest.kt +++ b/tests/FlickerTests/src/com/android/server/wm/flicker/ime/SwitchImeWindowsFromGestureNavTest.kt @@ -18,7 +18,6 @@ package com.android.server.wm.flicker.ime import android.app.Instrumentation import android.platform.test.annotations.Presubmit -import android.view.Display import android.view.Surface import android.view.WindowManagerPolicyConstants import androidx.test.filters.RequiresDevice @@ -37,8 +36,6 @@ import com.android.server.wm.flicker.helpers.setRotation import com.android.server.wm.flicker.navBarWindowIsVisible import com.android.server.wm.flicker.statusBarWindowIsVisible import com.android.server.wm.traces.common.FlickerComponentName -import com.android.server.wm.traces.common.WindowManagerConditionsFactory -import com.android.server.wm.traces.parser.windowmanager.WindowManagerStateHelper import org.junit.Assume import org.junit.Before import org.junit.FixMethodOrder @@ -74,22 +71,14 @@ open class SwitchImeWindowsFromGestureNavTest(private val testSpec: FlickerTestP eachRun { this.setRotation(testSpec.startRotation) testApp.launchViaIntent(wmHelper) - val testAppVisible = wmHelper.waitFor( - WindowManagerStateHelper.isAppFullScreen(testApp.component), - WindowManagerConditionsFactory.isAppTransitionIdle( - Display.DEFAULT_DISPLAY)) - require(testAppVisible) { - "Expected ${testApp.component.toWindowName()} to be visible" - } + wmHelper.StateSyncBuilder() + .withFullScreenApp(testApp.component) + .waitForAndVerify() imeTestApp.launchViaIntent(wmHelper) - val imeAppVisible = wmHelper.waitFor( - WindowManagerStateHelper.isAppFullScreen(imeTestApp.component), - WindowManagerConditionsFactory.isAppTransitionIdle( - Display.DEFAULT_DISPLAY)) - require(imeAppVisible) { - "Expected ${imeTestApp.component.toWindowName()} to be visible" - } + wmHelper.StateSyncBuilder() + .withFullScreenApp(imeTestApp.component) + .waitForAndVerify() imeTestApp.openIME(device, wmHelper) } @@ -97,7 +86,9 @@ open class SwitchImeWindowsFromGestureNavTest(private val testSpec: FlickerTestP teardown { eachRun { device.pressHome() - wmHelper.waitForHomeActivityVisible() + wmHelper.StateSyncBuilder() + .withHomeActivityVisible() + .waitForAndVerify() testApp.exit() imeTestApp.exit() } @@ -109,7 +100,9 @@ open class SwitchImeWindowsFromGestureNavTest(private val testSpec: FlickerTestP device.swipe(0, displayBounds.bounds.height, displayBounds.bounds.width, displayBounds.bounds.height, 50) - wmHelper.waitForFullScreenApp(testApp.component) + wmHelper.StateSyncBuilder() + .withFullScreenApp(testApp.component) + .waitForAndVerify() createTag(TAG_IME_INVISIBLE) } transitions { @@ -117,7 +110,9 @@ open class SwitchImeWindowsFromGestureNavTest(private val testSpec: FlickerTestP val displayBounds = WindowUtils.getDisplayBounds(testSpec.startRotation) device.swipe(displayBounds.bounds.width, displayBounds.bounds.height, 0, displayBounds.bounds.height, 50) - wmHelper.waitForFullScreenApp(imeTestApp.component) + wmHelper.StateSyncBuilder() + .withFullScreenApp(imeTestApp.component) + .waitForAndVerify() } } } diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/launch/ActivitiesTransitionTest.kt b/tests/FlickerTests/src/com/android/server/wm/flicker/launch/ActivitiesTransitionTest.kt index cc808a0ce871c..f11f2a08c573c 100644 --- a/tests/FlickerTests/src/com/android/server/wm/flicker/launch/ActivitiesTransitionTest.kt +++ b/tests/FlickerTests/src/com/android/server/wm/flicker/launch/ActivitiesTransitionTest.kt @@ -18,22 +18,19 @@ package com.android.server.wm.flicker.launch import android.app.Instrumentation import android.platform.test.annotations.Presubmit -import android.view.Display import androidx.test.filters.RequiresDevice import androidx.test.platform.app.InstrumentationRegistry -import com.android.server.wm.flicker.entireScreenCovered import com.android.server.wm.flicker.FlickerBuilderProvider 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.LAUNCHER_COMPONENT import com.android.server.wm.flicker.annotation.Group4 import com.android.server.wm.flicker.dsl.FlickerBuilder +import com.android.server.wm.flicker.entireScreenCovered import com.android.server.wm.flicker.helpers.TwoActivitiesAppHelper import com.android.server.wm.flicker.testapp.ActivityOptions -import com.android.server.wm.traces.common.WindowManagerConditionsFactory +import com.android.server.wm.traces.common.FlickerComponentName import com.android.server.wm.traces.parser.toFlickerComponent -import com.android.server.wm.traces.parser.windowmanager.WindowManagerStateHelper import org.junit.FixMethodOrder import org.junit.Test import org.junit.runner.RunWith @@ -75,7 +72,9 @@ class ActivitiesTransitionTest(val testSpec: FlickerTestParameter) { setup { test { testApp.launchViaIntent(wmHelper) - wmHelper.waitForFullScreenApp(testApp.component) + wmHelper.StateSyncBuilder() + .withFullScreenApp(testApp.component) + .waitForAndVerify() } } teardown { @@ -86,10 +85,9 @@ class ActivitiesTransitionTest(val testSpec: FlickerTestParameter) { transitions { testApp.openSecondActivity(device, wmHelper) device.pressBack() - val firstActivityVisible = wmHelper.waitFor( - WindowManagerConditionsFactory.isAppTransitionIdle(Display.DEFAULT_DISPLAY), - WindowManagerStateHelper.isAppFullScreen(testApp.component)) - require(firstActivityVisible) { "Expected ${testApp.component} to be visible" } + wmHelper.StateSyncBuilder() + .withFullScreenApp(testApp.component) + .waitForAndVerify() } } } @@ -125,7 +123,7 @@ class ActivitiesTransitionTest(val testSpec: FlickerTestParameter) { fun entireScreenCovered() = testSpec.entireScreenCovered() /** - * Checks that the [LAUNCHER_COMPONENT] window is not on top. The launcher cannot be + * Checks that the [FlickerComponentName.LAUNCHER] window is not on top. The launcher cannot be * asserted with `isAppWindowVisible` because it contains 2 windows with the exact same name, * and both are never simultaneously visible */ @@ -133,17 +131,17 @@ class ActivitiesTransitionTest(val testSpec: FlickerTestParameter) { @Test fun launcherWindowNotOnTop() { testSpec.assertWm { - this.isAppWindowNotOnTop(LAUNCHER_COMPONENT) + this.isAppWindowNotOnTop(FlickerComponentName.LAUNCHER) } } /** - * Checks that the [LAUNCHER_COMPONENT] layer is never visible during the transition + * Checks that the [FlickerComponentName.LAUNCHER] layer is never visible during the transition */ @Presubmit @Test fun launcherLayerNotVisible() { - testSpec.assertLayers { this.isInvisible(LAUNCHER_COMPONENT) } + testSpec.assertLayers { this.isInvisible(FlickerComponentName.LAUNCHER) } } companion object { diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/launch/OpenAppColdTest.kt b/tests/FlickerTests/src/com/android/server/wm/flicker/launch/OpenAppColdTest.kt index a25ccfb219489..1f9196030bb33 100644 --- a/tests/FlickerTests/src/com/android/server/wm/flicker/launch/OpenAppColdTest.kt +++ b/tests/FlickerTests/src/com/android/server/wm/flicker/launch/OpenAppColdTest.kt @@ -54,8 +54,8 @@ import org.junit.runners.Parameterized @Parameterized.UseParametersRunnerFactory(FlickerParametersRunnerFactory::class) @FixMethodOrder(MethodSorters.NAME_ASCENDING) @Group1 -open class OpenAppColdTest(testSpec: FlickerTestParameter) - : OpenAppFromLauncherTransition(testSpec) { +open class OpenAppColdTest(testSpec: FlickerTestParameter) : + OpenAppFromLauncherTransition(testSpec) { /** * Defines the transition used to run the test */ @@ -75,7 +75,9 @@ open class OpenAppColdTest(testSpec: FlickerTestParameter) } transitions { testApp.launchViaIntent(wmHelper) - wmHelper.waitForFullScreenApp(testApp.component) + wmHelper.StateSyncBuilder() + .withFullScreenApp(testApp.component) + .waitForAndVerify() } } diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/launch/OpenAppFromLauncherTransition.kt b/tests/FlickerTests/src/com/android/server/wm/flicker/launch/OpenAppFromLauncherTransition.kt index c6e92adce8c7f..269d82d7fa5af 100644 --- a/tests/FlickerTests/src/com/android/server/wm/flicker/launch/OpenAppFromLauncherTransition.kt +++ b/tests/FlickerTests/src/com/android/server/wm/flicker/launch/OpenAppFromLauncherTransition.kt @@ -18,7 +18,6 @@ package com.android.server.wm.flicker.launch import android.platform.test.annotations.Presubmit import com.android.server.wm.flicker.FlickerTestParameter -import com.android.server.wm.flicker.LAUNCHER_COMPONENT import com.android.server.wm.flicker.replacesLayer import com.android.server.wm.traces.common.FlickerComponentName import org.junit.Test @@ -26,8 +25,8 @@ import org.junit.Test /** * Base class for app launch tests */ -abstract class OpenAppFromLauncherTransition(testSpec: FlickerTestParameter) - : OpenAppTransition(testSpec) { +abstract class OpenAppFromLauncherTransition(testSpec: FlickerTestParameter) : + OpenAppTransition(testSpec) { /** * Checks that the focus changes from the launcher to [testApp] @@ -41,25 +40,25 @@ abstract class OpenAppFromLauncherTransition(testSpec: FlickerTestParameter) } /** - * Checks that [LAUNCHER_COMPONENT] layer is visible at the start of the transition, and - * is replaced by [testApp], which remains visible until the end + * Checks that [FlickerComponentName.LAUNCHER] layer is visible at the start of the transition, + * and is replaced by [testApp], which remains visible until the end */ open fun appLayerReplacesLauncher() { - testSpec.replacesLayer(LAUNCHER_COMPONENT, testApp.component, + testSpec.replacesLayer(FlickerComponentName.LAUNCHER, testApp.component, ignoreEntriesWithRotationLayer = true, ignoreSnapshot = true, ignoreSplashscreen = true) } /** - * Checks that [LAUNCHER_COMPONENT] window is visible at the start of the transition, and - * is replaced by a snapshot or splash screen (optional), and finally, is replaced by - * [testApp], which remains visible until the end + * Checks that [FlickerComponentName.LAUNCHER] window is visible at the start of the + * transition, and is replaced by a snapshot or splash screen (optional), and finally, is + * replaced by [testApp], which remains visible until the end */ @Presubmit @Test open fun appWindowReplacesLauncherAsTopWindow() { testSpec.assertWm { - this.isAppWindowOnTop(LAUNCHER_COMPONENT) + this.isAppWindowOnTop(FlickerComponentName.LAUNCHER) .then() .isAppWindowOnTop(FlickerComponentName.SNAPSHOT, isOptional = true) .then() @@ -68,4 +67,4 @@ abstract class OpenAppFromLauncherTransition(testSpec: FlickerTestParameter) .isAppWindowOnTop(testApp.component) } } -} \ No newline at end of file +} 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 eee7cf3acbe66..cea97ad0302a8 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 @@ -64,9 +64,9 @@ open class OpenAppFromLockNotificationCold(testSpec: FlickerTestParameter) : setup { eachRun { device.sleep() - wmHelper.waitFor("noAppWindowsOnTop") { - it.wmState.topVisibleAppWindow.isEmpty() - } + wmHelper.StateSyncBuilder() + .withoutTopVisibleAppWindows() + .waitForAndVerify() } } } 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 b156eb1a0933a..3d5f31709a667 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 @@ -65,9 +65,9 @@ open class OpenAppFromLockNotificationWarm(testSpec: FlickerTestParameter) : setup { eachRun { device.sleep() - wmHelper.waitFor("noAppWindowsOnTop") { - it.wmState.topVisibleAppWindow.isEmpty() - } + wmHelper.StateSyncBuilder() + .withoutTopVisibleAppWindows() + .waitForAndVerify() } } } 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 5c86a4278b8c1..446faa7434505 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 @@ -66,12 +66,14 @@ class OpenAppFromLockNotificationWithLockOverlayApp(testSpec: FlickerTestParamet // Launch an activity that is shown when the device is locked showWhenLockedApp.launchViaIntent(wmHelper) - wmHelper.waitForFullScreenApp(showWhenLockedApp.component) + wmHelper.StateSyncBuilder() + .withFullScreenApp(showWhenLockedApp.component) + .waitForAndVerify() device.sleep() - wmHelper.waitFor("noAppWindowsOnTop") { - it.wmState.topVisibleAppWindow.isEmpty() - } + wmHelper.StateSyncBuilder() + .withoutTopVisibleAppWindows() + .waitForAndVerify() } } diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/launch/OpenAppFromLockTransition.kt b/tests/FlickerTests/src/com/android/server/wm/flicker/launch/OpenAppFromLockTransition.kt index 9840520d5dbb3..caadeda445d01 100644 --- a/tests/FlickerTests/src/com/android/server/wm/flicker/launch/OpenAppFromLockTransition.kt +++ b/tests/FlickerTests/src/com/android/server/wm/flicker/launch/OpenAppFromLockTransition.kt @@ -16,8 +16,8 @@ package com.android.server.wm.flicker.launch -import android.platform.test.annotations.Presubmit import android.platform.test.annotations.FlakyTest +import android.platform.test.annotations.Presubmit import com.android.server.wm.flicker.FlickerTestParameter import com.android.server.wm.flicker.dsl.FlickerBuilder import com.android.server.wm.flicker.navBarLayerPositionEnd @@ -27,8 +27,8 @@ import org.junit.Test /** * Base class for app launch tests from lock screen */ -abstract class OpenAppFromLockTransition(testSpec: FlickerTestParameter) - : OpenAppTransition(testSpec) { +abstract class OpenAppFromLockTransition(testSpec: FlickerTestParameter) : + OpenAppTransition(testSpec) { /** * Defines the transition used to run the test @@ -39,9 +39,9 @@ abstract class OpenAppFromLockTransition(testSpec: FlickerTestParameter) setup { eachRun { device.sleep() - wmHelper.waitFor("noAppWindowsOnTop") { - it.wmState.topVisibleAppWindow.isEmpty() - } + wmHelper.StateSyncBuilder() + .withoutTopVisibleAppWindows() + .waitForAndVerify() } } teardown { @@ -51,7 +51,9 @@ abstract class OpenAppFromLockTransition(testSpec: FlickerTestParameter) } transitions { testApp.launchViaIntent(wmHelper) - wmHelper.waitForFullScreenApp(testApp.component) + wmHelper.StateSyncBuilder() + .withFullScreenApp(testApp.component) + .waitForAndVerify() } } diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/launch/OpenAppFromNotificationWarm.kt b/tests/FlickerTests/src/com/android/server/wm/flicker/launch/OpenAppFromNotificationWarm.kt index eb9f1bb5deb4e..7c437d09d619d 100644 --- a/tests/FlickerTests/src/com/android/server/wm/flicker/launch/OpenAppFromNotificationWarm.kt +++ b/tests/FlickerTests/src/com/android/server/wm/flicker/launch/OpenAppFromNotificationWarm.kt @@ -70,10 +70,14 @@ open class OpenAppFromNotificationWarm(testSpec: FlickerTestParameter) : } eachRun { testApp.launchViaIntent(wmHelper) - wmHelper.waitForFullScreenApp(testApp.component) + wmHelper.StateSyncBuilder() + .withFullScreenApp(testApp.component) + .waitForAndVerify() testApp.postNotification(device, wmHelper) device.pressHome() - wmHelper.waitForHomeActivityVisible() + wmHelper.StateSyncBuilder() + .withHomeActivityVisible() + .waitForAndVerify() } } @@ -106,7 +110,9 @@ open class OpenAppFromNotificationWarm(testSpec: FlickerTestParameter) : instrumentation.uiAutomation.syncInputTransactions() // Wait for the app to launch - wmHelper.waitForFullScreenApp(testApp.component) + wmHelper.StateSyncBuilder() + .withFullScreenApp(testApp.component) + .waitForAndVerify() } teardown { diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/launch/OpenAppFromOverviewTest.kt b/tests/FlickerTests/src/com/android/server/wm/flicker/launch/OpenAppFromOverviewTest.kt index f8f3f4c8cb4ca..8d8a7951c5c30 100644 --- a/tests/FlickerTests/src/com/android/server/wm/flicker/launch/OpenAppFromOverviewTest.kt +++ b/tests/FlickerTests/src/com/android/server/wm/flicker/launch/OpenAppFromOverviewTest.kt @@ -22,13 +22,11 @@ import android.platform.test.annotations.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.LAUNCHER_COMPONENT 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.server.wm.flicker.helpers.reopenAppFromOverview import com.android.server.wm.flicker.helpers.setRotation -import com.android.server.wm.traces.common.WindowManagerConditionsFactory import org.junit.Assume import org.junit.FixMethodOrder import org.junit.Test @@ -75,21 +73,21 @@ open class OpenAppFromOverviewTest(testSpec: FlickerTestParameter) : } eachRun { device.pressHome() - wmHelper.waitForHomeActivityVisible() + wmHelper.StateSyncBuilder() + .withHomeActivityVisible() + .waitForAndVerify() device.pressRecentApps() - wmHelper.waitForRecentsActivityVisible() + wmHelper.StateSyncBuilder() + .withRecentsActivityVisible() + .waitForAndVerify() this.setRotation(testSpec.startRotation) } } transitions { device.reopenAppFromOverview(wmHelper) - wmHelper.waitFor( - WindowManagerConditionsFactory.hasLayersAnimating().negate(), - WindowManagerConditionsFactory.isWMStateComplete(), - WindowManagerConditionsFactory.isLayerVisible(LAUNCHER_COMPONENT).negate(), - WindowManagerConditionsFactory.isActivityVisible(LAUNCHER_COMPONENT).negate() - ) - wmHelper.waitForFullScreenApp(testApp.component) + wmHelper.StateSyncBuilder() + .withFullScreenApp(testApp.component) + .waitForAndVerify() } } diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/launch/OpenAppWarmTest.kt b/tests/FlickerTests/src/com/android/server/wm/flicker/launch/OpenAppWarmTest.kt index 45f339979b15b..47d225e9b6d94 100644 --- a/tests/FlickerTests/src/com/android/server/wm/flicker/launch/OpenAppWarmTest.kt +++ b/tests/FlickerTests/src/com/android/server/wm/flicker/launch/OpenAppWarmTest.kt @@ -16,9 +16,9 @@ package com.android.server.wm.flicker.launch +import android.platform.test.annotations.FlakyTest import android.platform.test.annotations.Presubmit import android.platform.test.annotations.RequiresDevice -import android.platform.test.annotations.FlakyTest import com.android.server.wm.flicker.FlickerParametersRunnerFactory import com.android.server.wm.flicker.FlickerTestParameter import com.android.server.wm.flicker.FlickerTestParameterFactory @@ -54,8 +54,8 @@ import org.junit.runners.Parameterized @Parameterized.UseParametersRunnerFactory(FlickerParametersRunnerFactory::class) @FixMethodOrder(MethodSorters.NAME_ASCENDING) @Group1 -open class OpenAppWarmTest(testSpec: FlickerTestParameter) - : OpenAppFromLauncherTransition(testSpec) { +open class OpenAppWarmTest(testSpec: FlickerTestParameter) : + OpenAppFromLauncherTransition(testSpec) { /** * Defines the transition used to run the test */ @@ -68,7 +68,9 @@ open class OpenAppWarmTest(testSpec: FlickerTestParameter) } eachRun { device.pressHome() - wmHelper.waitForHomeActivityVisible() + wmHelper.StateSyncBuilder() + .withHomeActivityVisible() + .waitForAndVerify() this.setRotation(testSpec.startRotation) } } @@ -79,7 +81,9 @@ open class OpenAppWarmTest(testSpec: FlickerTestParameter) } transitions { testApp.launchViaIntent(wmHelper) - wmHelper.waitForFullScreenApp(testApp.component) + wmHelper.StateSyncBuilder() + .withFullScreenApp(testApp.component) + .waitForAndVerify() } } diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/launch/TaskTransitionTest.kt b/tests/FlickerTests/src/com/android/server/wm/flicker/launch/TaskTransitionTest.kt index 2f546b56f1457..12a34df015295 100644 --- a/tests/FlickerTests/src/com/android/server/wm/flicker/launch/TaskTransitionTest.kt +++ b/tests/FlickerTests/src/com/android/server/wm/flicker/launch/TaskTransitionTest.kt @@ -25,7 +25,6 @@ import com.android.server.wm.flicker.FlickerBuilderProvider 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.LAUNCHER_COMPONENT import com.android.server.wm.flicker.annotation.Group4 import com.android.server.wm.flicker.dsl.FlickerBuilder import com.android.server.wm.flicker.entireScreenCovered @@ -76,7 +75,9 @@ class TaskTransitionTest(val testSpec: FlickerTestParameter) { setup { eachRun { mTestApp.launchViaIntent(wmHelper) - wmHelper.waitForFullScreenApp(mTestApp.component) + wmHelper.StateSyncBuilder() + .withFullScreenApp(mTestApp.component) + .waitForAndVerify() } } teardown { @@ -87,8 +88,9 @@ class TaskTransitionTest(val testSpec: FlickerTestParameter) { transitions { mTestApp.openNewTask(device, wmHelper) device.pressBack() - wmHelper.waitForAppTransitionIdle() - wmHelper.waitForFullScreenApp(mTestApp.component) + wmHelper.StateSyncBuilder() + .withFullScreenApp(mTestApp.component) + .waitForAndVerify() } } } @@ -126,7 +128,7 @@ class TaskTransitionTest(val testSpec: FlickerTestParameter) { @Test fun launcherWindowIsNeverVisible() { testSpec.assertWm { - this.isAppWindowInvisible(LAUNCHER_COMPONENT) + this.isAppWindowInvisible(FlickerComponentName.LAUNCHER) } } @@ -138,7 +140,7 @@ class TaskTransitionTest(val testSpec: FlickerTestParameter) { @Test fun launcherLayerIsNeverVisible() { testSpec.assertLayers { - this.isInvisible(LAUNCHER_COMPONENT) + this.isInvisible(FlickerComponentName.LAUNCHER) } } diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/quickswitch/QuickSwitchBetweenTwoAppsBackTest.kt b/tests/FlickerTests/src/com/android/server/wm/flicker/quickswitch/QuickSwitchBetweenTwoAppsBackTest.kt index c89e6a44ab6c6..872d8e733c2f1 100644 --- a/tests/FlickerTests/src/com/android/server/wm/flicker/quickswitch/QuickSwitchBetweenTwoAppsBackTest.kt +++ b/tests/FlickerTests/src/com/android/server/wm/flicker/quickswitch/QuickSwitchBetweenTwoAppsBackTest.kt @@ -27,7 +27,6 @@ import com.android.server.wm.flicker.FlickerBuilderProvider 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.LAUNCHER_COMPONENT import com.android.server.wm.flicker.annotation.Group1 import com.android.server.wm.flicker.dsl.FlickerBuilder import com.android.server.wm.flicker.helpers.NonResizeableAppHelper @@ -88,17 +87,22 @@ open class QuickSwitchBetweenTwoAppsBackTest(private val testSpec: FlickerTestPa eachRun { testApp1.launchViaIntent(wmHelper) - wmHelper.waitForFullScreenApp(testApp1.component) + wmHelper.StateSyncBuilder() + .withFullScreenApp(testApp1.component) + .waitForAndVerify() testApp2.launchViaIntent(wmHelper) - wmHelper.waitForFullScreenApp(testApp2.component) + wmHelper.StateSyncBuilder() + .withFullScreenApp(testApp2.component) + .waitForAndVerify() } } transitions { taplInstrumentation.launchedAppState.quickSwitchToPreviousApp() - wmHelper.waitForFullScreenApp(testApp1.component) - wmHelper.waitForAppTransitionIdle() - wmHelper.waitForNavBarStatusBarVisible() + wmHelper.StateSyncBuilder() + .withFullScreenApp(testApp1.component) + .withNavBarStatusBarVisible() + .waitForAndVerify() } teardown { @@ -251,7 +255,7 @@ open class QuickSwitchBetweenTwoAppsBackTest(private val testSpec: FlickerTestPa this.isAppWindowVisible(testApp2.component) .then() // TODO: Do we actually want to test this? Seems too implementation specific... - .isAppWindowVisible(LAUNCHER_COMPONENT, isOptional = true) + .isAppWindowVisible(FlickerComponentName.LAUNCHER, isOptional = true) .then() .isAppWindowVisible(FlickerComponentName.SNAPSHOT, isOptional = true) .then() @@ -270,7 +274,7 @@ open class QuickSwitchBetweenTwoAppsBackTest(private val testSpec: FlickerTestPa testSpec.assertLayers { this.isVisible(testApp2.component) .then() - .isVisible(LAUNCHER_COMPONENT, isOptional = true) + .isVisible(FlickerComponentName.LAUNCHER, isOptional = true) .then() .isVisible(FlickerComponentName.SNAPSHOT, isOptional = true) .then() diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/quickswitch/QuickSwitchBetweenTwoAppsForwardTest.kt b/tests/FlickerTests/src/com/android/server/wm/flicker/quickswitch/QuickSwitchBetweenTwoAppsForwardTest.kt index 725d2c3d818c4..7ce6ceacd210a 100644 --- a/tests/FlickerTests/src/com/android/server/wm/flicker/quickswitch/QuickSwitchBetweenTwoAppsForwardTest.kt +++ b/tests/FlickerTests/src/com/android/server/wm/flicker/quickswitch/QuickSwitchBetweenTwoAppsForwardTest.kt @@ -27,7 +27,6 @@ import com.android.server.wm.flicker.FlickerBuilderProvider 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.LAUNCHER_COMPONENT import com.android.server.wm.flicker.annotation.Group1 import com.android.server.wm.flicker.dsl.FlickerBuilder import com.android.server.wm.flicker.helpers.NonResizeableAppHelper @@ -86,10 +85,14 @@ open class QuickSwitchBetweenTwoAppsForwardTest(private val testSpec: FlickerTes eachRun { testApp1.launchViaIntent(wmHelper) - wmHelper.waitForFullScreenApp(testApp1.component) + wmHelper.StateSyncBuilder() + .withFullScreenApp(testApp1.component) + .waitForAndVerify() testApp2.launchViaIntent(wmHelper) - wmHelper.waitForFullScreenApp(testApp2.component) + wmHelper.StateSyncBuilder() + .withFullScreenApp(testApp2.component) + .waitForAndVerify() startDisplayBounds = wmHelper.currentState.layerState .displays.firstOrNull { !it.isVirtual } @@ -98,16 +101,17 @@ open class QuickSwitchBetweenTwoAppsForwardTest(private val testSpec: FlickerTes taplInstrumentation.launchedAppState.quickSwitchToPreviousApp() - wmHelper.waitForFullScreenApp(testApp1.component) - wmHelper.waitForAppTransitionIdle() + wmHelper.StateSyncBuilder() + .withFullScreenApp(testApp1.component) + .waitForAndVerify() } } transitions { taplInstrumentation.launchedAppState.quickSwitchToPreviousAppSwipeLeft() - - wmHelper.waitForFullScreenApp(testApp2.component) - wmHelper.waitForAppTransitionIdle() - wmHelper.waitForNavBarStatusBarVisible() + wmHelper.StateSyncBuilder() + .withFullScreenApp(testApp2.component) + .withNavBarStatusBarVisible() + .waitForAndVerify() } teardown { @@ -261,7 +265,7 @@ open class QuickSwitchBetweenTwoAppsForwardTest(private val testSpec: FlickerTes testSpec.assertWm { this.isAppWindowVisible(testApp1.component) .then() - .isAppWindowVisible(LAUNCHER_COMPONENT, isOptional = true) + .isAppWindowVisible(FlickerComponentName.LAUNCHER, isOptional = true) .then() .isAppWindowVisible(FlickerComponentName.SNAPSHOT, isOptional = true) .then() @@ -280,7 +284,7 @@ open class QuickSwitchBetweenTwoAppsForwardTest(private val testSpec: FlickerTes testSpec.assertLayers { this.isVisible(testApp1.component) .then() - .isVisible(LAUNCHER_COMPONENT, isOptional = true) + .isVisible(FlickerComponentName.LAUNCHER, isOptional = true) .then() .isVisible(FlickerComponentName.SNAPSHOT, isOptional = true) .then() 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 cc4a4b2d38aa4..788f78b4460c5 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 @@ -27,7 +27,6 @@ import com.android.server.wm.flicker.FlickerBuilderProvider 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.LAUNCHER_COMPONENT import com.android.server.wm.flicker.annotation.Group1 import com.android.server.wm.flicker.dsl.FlickerBuilder import com.android.server.wm.flicker.entireScreenCovered @@ -80,15 +79,18 @@ class QuickSwitchFromLauncherTest(private val testSpec: FlickerTestParameter) { eachRun { testApp.launchViaIntent(wmHelper) device.pressHome() - wmHelper.waitForHomeActivityVisible() - wmHelper.waitForWindowSurfaceDisappeared(testApp.component) + wmHelper.StateSyncBuilder() + .withHomeActivityVisible() + .withWindowSurfaceDisappeared(testApp.component) + .waitForAndVerify() } } transitions { taplInstrumentation.workspace.quickSwitchToPreviousApp() - wmHelper.waitForFullScreenApp(testApp.component) - wmHelper.waitForAppTransitionIdle() - wmHelper.waitForNavBarStatusBarVisible() + wmHelper.StateSyncBuilder() + .withFullScreenApp(testApp.component) + .withNavBarStatusBarVisible() + .waitForAndVerify() } teardown { @@ -154,7 +156,7 @@ class QuickSwitchFromLauncherTest(private val testSpec: FlickerTestParameter) { @Test fun startsWithLauncherWindowsCoverFullScreen() { testSpec.assertWmStart { - this.frameRegion(LAUNCHER_COMPONENT).coversExactly(startDisplayBounds) + this.frameRegion(FlickerComponentName.LAUNCHER).coversExactly(startDisplayBounds) } } @@ -166,7 +168,7 @@ class QuickSwitchFromLauncherTest(private val testSpec: FlickerTestParameter) { @Test fun startsWithLauncherLayersCoverFullScreen() { testSpec.assertLayersStart { - this.visibleRegion(LAUNCHER_COMPONENT).coversExactly(startDisplayBounds) + this.visibleRegion(FlickerComponentName.LAUNCHER).coversExactly(startDisplayBounds) } } @@ -177,7 +179,7 @@ class QuickSwitchFromLauncherTest(private val testSpec: FlickerTestParameter) { @Test fun startsWithLauncherBeingOnTop() { testSpec.assertWmStart { - this.isAppWindowOnTop(LAUNCHER_COMPONENT) + this.isAppWindowOnTop(FlickerComponentName.LAUNCHER) } } @@ -229,9 +231,9 @@ class QuickSwitchFromLauncherTest(private val testSpec: FlickerTestParameter) { @Test fun launcherWindowBecomesAndStaysInvisible() { testSpec.assertWm { - this.isAppWindowOnTop(LAUNCHER_COMPONENT) + this.isAppWindowOnTop(FlickerComponentName.LAUNCHER) .then() - .isAppWindowNotOnTop(LAUNCHER_COMPONENT) + .isAppWindowNotOnTop(FlickerComponentName.LAUNCHER) } } @@ -243,9 +245,9 @@ class QuickSwitchFromLauncherTest(private val testSpec: FlickerTestParameter) { @Test fun launcherLayerBecomesAndStaysInvisible() { testSpec.assertLayers { - this.isVisible(LAUNCHER_COMPONENT) + this.isVisible(FlickerComponentName.LAUNCHER) .then() - .isInvisible(LAUNCHER_COMPONENT) + .isInvisible(FlickerComponentName.LAUNCHER) } } @@ -257,7 +259,7 @@ class QuickSwitchFromLauncherTest(private val testSpec: FlickerTestParameter) { @Test fun appWindowIsVisibleOnceLauncherWindowIsInvisible() { testSpec.assertWm { - this.isAppWindowOnTop(LAUNCHER_COMPONENT) + this.isAppWindowOnTop(FlickerComponentName.LAUNCHER) .then() .isAppWindowVisible(FlickerComponentName.SNAPSHOT, isOptional = true) .then() @@ -273,7 +275,7 @@ class QuickSwitchFromLauncherTest(private val testSpec: FlickerTestParameter) { @Test fun appLayerIsVisibleOnceLauncherLayerIsInvisible() { testSpec.assertLayers { - this.isVisible(LAUNCHER_COMPONENT) + this.isVisible(FlickerComponentName.LAUNCHER) .then() .isVisible(FlickerComponentName.SNAPSHOT, isOptional = true) .then() From c9cd787b42369122783313aa54fe35ff5cb15a7b Mon Sep 17 00:00:00 2001 From: Nataniel Borges Date: Wed, 15 Jun 2022 18:02:35 +0200 Subject: [PATCH 05/13] 5/ Clean up flicker tests 1. Remove unused arguments 2. Fix bug IDs on flaky assertions 3. Remove unnecessary wait conditions 4. Update for standard kotlin syntax Bug: 236131465 Test: atest FlickerTests Change-Id: I3308000421be4b6c8f60a10ace48332450dfdaa3 --- .../server/wm/flicker/CommonAssertions.kt | 4 +- .../flicker/close/CloseAppBackButtonTest.kt | 2 +- .../flicker/close/CloseAppHomeButtonTest.kt | 19 +----- .../flicker/helpers/ImeAppAutoFocusHelper.kt | 12 ++-- .../server/wm/flicker/helpers/ImeAppHelper.kt | 62 ++++++------------- .../helpers/ImeEditorPopupDialogAppHelper.kt | 10 +-- .../wm/flicker/helpers/NewTasksAppHelper.kt | 2 +- .../flicker/helpers/NotificationAppHelper.kt | 9 ++- .../flicker/helpers/TwoActivitiesAppHelper.kt | 2 +- .../ime/CloseImeAutoOpenWindowToAppTest.kt | 9 ++- .../ime/CloseImeAutoOpenWindowToHomeTest.kt | 1 - .../ime/CloseImeEditorPopupDialogTest.kt | 2 +- .../wm/flicker/ime/CloseImeWindowToAppTest.kt | 10 +-- .../flicker/ime/CloseImeWindowToHomeTest.kt | 8 +-- .../LaunchAppShowImeAndDialogThemeAppTest.kt | 2 +- .../ime/LaunchAppShowImeOnStartTest.kt | 6 +- .../flicker/ime/OpenImeWindowAndCloseTest.kt | 18 ++++-- .../wm/flicker/ime/OpenImeWindowTest.kt | 12 ++-- .../ime/OpenImeWindowToOverViewTest.kt | 2 +- .../wm/flicker/ime/ReOpenImeWindowTest.kt | 4 +- .../ime/SwitchImeWindowsFromGestureNavTest.kt | 6 +- .../launch/ActivitiesTransitionTest.kt | 3 - .../wm/flicker/launch/OpenAppColdTest.kt | 5 +- .../launch/OpenAppFromNotificationWarm.kt | 2 +- .../launch/OpenAppNonResizeableTest.kt | 7 +-- .../wm/flicker/launch/OpenAppWarmTest.kt | 5 +- .../wm/flicker/launch/TaskTransitionTest.kt | 5 +- .../QuickSwitchBetweenTwoAppsBackTest.kt | 34 +++++----- .../QuickSwitchBetweenTwoAppsForwardTest.kt | 32 +++------- .../QuickSwitchFromLauncherTest.kt | 11 ++-- .../wm/flicker/rotation/RotationTransition.kt | 4 +- 31 files changed, 121 insertions(+), 189 deletions(-) diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/CommonAssertions.kt b/tests/FlickerTests/src/com/android/server/wm/flicker/CommonAssertions.kt index 210ea9a72ced3..896c7309cf4cb 100644 --- a/tests/FlickerTests/src/com/android/server/wm/flicker/CommonAssertions.kt +++ b/tests/FlickerTests/src/com/android/server/wm/flicker/CommonAssertions.kt @@ -111,8 +111,8 @@ fun FlickerTestParameter.statusBarLayerIsVisible() { */ fun FlickerTestParameter.navBarLayerPositionStart() { assertLayersStart { - val display = this.entry.displays.minByOrNull { it.id } - ?: throw RuntimeException("There is no display!") + val display = this.entry.displays.firstOrNull { !it.isVirtual } + ?: error("There is no display!") this.visibleRegion(FlickerComponentName.NAV_BAR) .coversExactly(WindowUtils.getNavigationBarPosition(display, isGesturalNavigation)) } diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/close/CloseAppBackButtonTest.kt b/tests/FlickerTests/src/com/android/server/wm/flicker/close/CloseAppBackButtonTest.kt index 750ec43f830bf..d0f1dfddaed02 100644 --- a/tests/FlickerTests/src/com/android/server/wm/flicker/close/CloseAppBackButtonTest.kt +++ b/tests/FlickerTests/src/com/android/server/wm/flicker/close/CloseAppBackButtonTest.kt @@ -80,7 +80,7 @@ class CloseAppBackButtonTest(testSpec: FlickerTestParameter) : CloseAppTransitio } /** {@inheritDoc} */ - @FlakyTest + @FlakyTest(bugId = 206753786) @Test override fun navBarLayerRotatesAndScales() = super.navBarLayerRotatesAndScales() diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/close/CloseAppHomeButtonTest.kt b/tests/FlickerTests/src/com/android/server/wm/flicker/close/CloseAppHomeButtonTest.kt index c1b55973002c9..1ed034c010950 100644 --- a/tests/FlickerTests/src/com/android/server/wm/flicker/close/CloseAppHomeButtonTest.kt +++ b/tests/FlickerTests/src/com/android/server/wm/flicker/close/CloseAppHomeButtonTest.kt @@ -17,7 +17,6 @@ package com.android.server.wm.flicker.close import android.platform.test.annotations.FlakyTest -import android.platform.test.annotations.Presubmit import androidx.test.filters.RequiresDevice import com.android.server.wm.flicker.FlickerParametersRunnerFactory import com.android.server.wm.flicker.FlickerTestParameter @@ -77,31 +76,17 @@ class CloseAppHomeButtonTest(testSpec: FlickerTestParameter) : CloseAppTransitio } /** {@inheritDoc} */ - @FlakyTest + @FlakyTest(bugId = 206753786) @Test override fun navBarLayerRotatesAndScales() = super.navBarLayerRotatesAndScales() /** {@inheritDoc} */ - @FlakyTest(bugId = 227430489) + @FlakyTest(bugId = 206753786) @Test override fun statusBarLayerRotatesScales() { super.statusBarLayerRotatesScales() } - /** {@inheritDoc} */ - @Presubmit - @Test - override fun launcherLayerReplacesApp() { - super.launcherLayerReplacesApp() - } - - /** {@inheritDoc} */ - @Presubmit - @Test - override fun entireScreenCovered() { - super.entireScreenCovered() - } - /** {@inheritDoc} */ @FlakyTest(bugId = 229762973) @Test diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/helpers/ImeAppAutoFocusHelper.kt b/tests/FlickerTests/src/com/android/server/wm/flicker/helpers/ImeAppAutoFocusHelper.kt index ae5f7cd0ed71d..cd184ac10c222 100644 --- a/tests/FlickerTests/src/com/android/server/wm/flicker/helpers/ImeAppAutoFocusHelper.kt +++ b/tests/FlickerTests/src/com/android/server/wm/flicker/helpers/ImeAppAutoFocusHelper.kt @@ -21,7 +21,6 @@ import android.view.WindowInsets.Type.ime import android.view.WindowInsets.Type.navigationBars import android.view.WindowInsets.Type.statusBars import androidx.test.uiautomator.By -import androidx.test.uiautomator.UiDevice import androidx.test.uiautomator.Until import com.android.server.wm.flicker.testapp.ActivityOptions import com.android.server.wm.traces.common.FlickerComponentName @@ -37,12 +36,9 @@ class ImeAppAutoFocusHelper @JvmOverloads constructor( component: FlickerComponentName = ActivityOptions.IME_ACTIVITY_AUTO_FOCUS_COMPONENT_NAME.toFlickerComponent() ) : ImeAppHelper(instr, launcherName, component) { - override fun openIME( - device: UiDevice, - wmHelper: WindowManagerStateHelper? - ) { + override fun openIME(wmHelper: WindowManagerStateHelper) { // do nothing (the app is focused automatically) - waitIMEShown(device, wmHelper) + waitIMEShown(wmHelper) } override fun launchViaIntent( @@ -52,7 +48,7 @@ class ImeAppAutoFocusHelper @JvmOverloads constructor( stringExtras: Map ) { super.launchViaIntent(wmHelper, expectedWindowName, action, stringExtras) - waitIMEShown(uiDevice, wmHelper) + waitIMEShown(wmHelper) } override fun open() { @@ -68,7 +64,7 @@ class ImeAppAutoFocusHelper @JvmOverloads constructor( val button = uiDevice.wait(Until.findObject(By.res(getPackage(), "start_dialog_themed_activity_btn")), FIND_TIMEOUT) - require(button != null) { + requireNotNull(button) { "Button not found, this usually happens when the device " + "was left in an unknown state (e.g. Screen turned off)" } diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/helpers/ImeAppHelper.kt b/tests/FlickerTests/src/com/android/server/wm/flicker/helpers/ImeAppHelper.kt index 1d6f8b1985c43..8ac9a75aff94d 100644 --- a/tests/FlickerTests/src/com/android/server/wm/flicker/helpers/ImeAppHelper.kt +++ b/tests/FlickerTests/src/com/android/server/wm/flicker/helpers/ImeAppHelper.kt @@ -20,7 +20,6 @@ import android.app.Instrumentation import android.support.test.launcherhelper.ILauncherStrategy import android.support.test.launcherhelper.LauncherStrategyFactory import androidx.test.uiautomator.By -import androidx.test.uiautomator.UiDevice import androidx.test.uiautomator.Until import com.android.server.wm.flicker.testapp.ActivityOptions import com.android.server.wm.traces.common.FlickerComponentName @@ -39,70 +38,49 @@ open class ImeAppHelper @JvmOverloads constructor( /** * Opens the IME and wait for it to be displayed * - * @param device UIDevice instance to interact with the device * @param wmHelper Helper used to wait for WindowManager states */ - @JvmOverloads - open fun openIME(device: UiDevice, wmHelper: WindowManagerStateHelper? = null) { - val editText = device.wait( + open fun openIME(wmHelper: WindowManagerStateHelper) { + val editText = uiDevice.wait( Until.findObject(By.res(getPackage(), "plain_text_input")), FIND_TIMEOUT) - require(editText != null) { + requireNotNull(editText) { "Text field not found, this usually happens when the device " + "was left in an unknown state (e.g. in split screen)" } editText.click() - waitIMEShown(device, wmHelper) + waitIMEShown(wmHelper) } - protected fun waitIMEShown( - device: UiDevice, - wmHelper: WindowManagerStateHelper? = null - ) { - if (wmHelper == null) { - device.waitForIdle() - } else { - wmHelper.StateSyncBuilder() - .withImeShown() - .waitForAndVerify() - } + protected fun waitIMEShown(wmHelper: WindowManagerStateHelper) { + wmHelper.StateSyncBuilder() + .withImeShown() + .waitForAndVerify() } /** * Opens the IME and wait for it to be gone * - * @param device UIDevice instance to interact with the device * @param wmHelper Helper used to wait for WindowManager states */ - @JvmOverloads - open fun closeIME(device: UiDevice, wmHelper: WindowManagerStateHelper? = null) { - device.pressBack() - // Using only the AccessibilityInfo it is not possible to identify if the IME is active - if (wmHelper == null) { - device.waitForIdle() - } else { - wmHelper.StateSyncBuilder() - .withImeGone() - .waitForAndVerify() - } + open fun closeIME(wmHelper: WindowManagerStateHelper) { + uiDevice.pressBack() + wmHelper.StateSyncBuilder() + .withImeGone() + .waitForAndVerify() } - @JvmOverloads - open fun finishActivity(device: UiDevice, wmHelper: WindowManagerStateHelper? = null) { - val finishButton = device.wait( + open fun finishActivity(wmHelper: WindowManagerStateHelper) { + val finishButton = uiDevice.wait( Until.findObject(By.res(getPackage(), "finish_activity_btn")), FIND_TIMEOUT) - require(finishButton != null) { - "Finish activity button not found, probably IME activity is not on the screen ?" + requireNotNull(finishButton) { + "Finish activity button not found, probably IME activity is not on the screen?" } finishButton.click() - if (wmHelper == null) { - device.waitForIdle() - } else { - wmHelper.StateSyncBuilder() - .withActivityRemoved(component) - .waitForAndVerify() - } + wmHelper.StateSyncBuilder() + .withActivityRemoved(component) + .waitForAndVerify() } } diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/helpers/ImeEditorPopupDialogAppHelper.kt b/tests/FlickerTests/src/com/android/server/wm/flicker/helpers/ImeEditorPopupDialogAppHelper.kt index 772f31817b1c7..438aeeb2cc74d 100644 --- a/tests/FlickerTests/src/com/android/server/wm/flicker/helpers/ImeEditorPopupDialogAppHelper.kt +++ b/tests/FlickerTests/src/com/android/server/wm/flicker/helpers/ImeEditorPopupDialogAppHelper.kt @@ -18,7 +18,6 @@ package com.android.server.wm.flicker.helpers import android.app.Instrumentation import androidx.test.uiautomator.By -import androidx.test.uiautomator.UiDevice import androidx.test.uiautomator.Until import com.android.server.wm.flicker.testapp.ActivityOptions import com.android.server.wm.traces.common.FlickerComponentName @@ -33,18 +32,15 @@ class ImeEditorPopupDialogAppHelper @JvmOverloads constructor( component: FlickerComponentName = ActivityOptions.EDITOR_POPUP_DIALOG_ACTIVITY_COMPONENT_NAME.toFlickerComponent() ) : ImeAppHelper(instr, launcherName, component) { - override fun openIME( - device: UiDevice, - wmHelper: WindowManagerStateHelper? - ) { - val editText = device.wait(Until.findObject(By.text("focused editText")), FIND_TIMEOUT) + override fun openIME(wmHelper: WindowManagerStateHelper) { + val editText = uiDevice.wait(Until.findObject(By.text("focused editText")), FIND_TIMEOUT) require(editText != null) { "Text field not found, this usually happens when the device " + "was left in an unknown state (e.g. in split screen)" } editText.click() - waitIMEShown(device, wmHelper) + waitIMEShown(wmHelper) } fun dismissDialog(wmHelper: WindowManagerStateHelper) { diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/helpers/NewTasksAppHelper.kt b/tests/FlickerTests/src/com/android/server/wm/flicker/helpers/NewTasksAppHelper.kt index ded136e0ec2c2..1a2543cb8f977 100644 --- a/tests/FlickerTests/src/com/android/server/wm/flicker/helpers/NewTasksAppHelper.kt +++ b/tests/FlickerTests/src/com/android/server/wm/flicker/helpers/NewTasksAppHelper.kt @@ -41,7 +41,7 @@ class NewTasksAppHelper @JvmOverloads constructor( Until.findObject(By.res(getPackage(), "launch_new_task")), FIND_TIMEOUT) - require(button != null) { + requireNotNull(button) { "Button not found, this usually happens when the device " + "was left in an unknown state (e.g. in split screen)" } diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/helpers/NotificationAppHelper.kt b/tests/FlickerTests/src/com/android/server/wm/flicker/helpers/NotificationAppHelper.kt index 4e360f98723e3..00b208bc8c23e 100644 --- a/tests/FlickerTests/src/com/android/server/wm/flicker/helpers/NotificationAppHelper.kt +++ b/tests/FlickerTests/src/com/android/server/wm/flicker/helpers/NotificationAppHelper.kt @@ -20,7 +20,6 @@ import android.app.Instrumentation import android.support.test.launcherhelper.ILauncherStrategy import android.support.test.launcherhelper.LauncherStrategyFactory import androidx.test.uiautomator.By -import androidx.test.uiautomator.UiDevice import androidx.test.uiautomator.Until import com.android.server.wm.flicker.testapp.ActivityOptions import com.android.server.wm.traces.common.FlickerComponentName @@ -36,8 +35,8 @@ class NotificationAppHelper @JvmOverloads constructor( .getInstance(instr) .launcherStrategy ) : StandardAppHelper(instr, launcherName, component, launcherStrategy) { - fun postNotification(device: UiDevice, wmHelper: WindowManagerStateHelper) { - val button = device.wait( + fun postNotification(wmHelper: WindowManagerStateHelper) { + val button = uiDevice.wait( Until.findObject(By.res(getPackage(), "post_notification")), FIND_TIMEOUT) @@ -47,7 +46,7 @@ class NotificationAppHelper @JvmOverloads constructor( } button.click() - device.wait(Until.findObject(By.text("Flicker Test Notification")), FIND_TIMEOUT) + uiDevice.wait(Until.findObject(By.text("Flicker Test Notification")), FIND_TIMEOUT) ?: error("Flicker Notification not found") } -} \ No newline at end of file +} diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/helpers/TwoActivitiesAppHelper.kt b/tests/FlickerTests/src/com/android/server/wm/flicker/helpers/TwoActivitiesAppHelper.kt index e8df7145dfa2f..8519da14aa2db 100644 --- a/tests/FlickerTests/src/com/android/server/wm/flicker/helpers/TwoActivitiesAppHelper.kt +++ b/tests/FlickerTests/src/com/android/server/wm/flicker/helpers/TwoActivitiesAppHelper.kt @@ -44,7 +44,7 @@ class TwoActivitiesAppHelper @JvmOverloads constructor( val launchActivityButton = By.res(getPackage(), LAUNCH_SECOND_ACTIVITY) val button = device.wait(Until.findObject(launchActivityButton), FIND_TIMEOUT) - require(button != null) { + requireNotNull(button) { "Button not found, this usually happens when the device " + "was left in an unknown state (e.g. in split screen)" } diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/ime/CloseImeAutoOpenWindowToAppTest.kt b/tests/FlickerTests/src/com/android/server/wm/flicker/ime/CloseImeAutoOpenWindowToAppTest.kt index 843ef232fdebd..1d720f4b1965a 100644 --- a/tests/FlickerTests/src/com/android/server/wm/flicker/ime/CloseImeAutoOpenWindowToAppTest.kt +++ b/tests/FlickerTests/src/com/android/server/wm/flicker/ime/CloseImeAutoOpenWindowToAppTest.kt @@ -17,10 +17,10 @@ package com.android.server.wm.flicker.ime import android.app.Instrumentation +import android.platform.test.annotations.FlakyTest import android.platform.test.annotations.Presubmit import android.view.Surface import android.view.WindowManagerPolicyConstants -import android.platform.test.annotations.FlakyTest import androidx.test.filters.RequiresDevice import androidx.test.platform.app.InstrumentationRegistry import com.android.server.wm.flicker.FlickerBuilderProvider @@ -69,18 +69,17 @@ class CloseImeAutoOpenWindowToAppTest(private val testSpec: FlickerTestParameter fun buildFlicker(): FlickerBuilder { return FlickerBuilder(instrumentation).apply { setup { - eachRun { + test { testApp.launchViaIntent(wmHelper) - testApp.openIME(device, wmHelper) } } teardown { - eachRun { + test { testApp.exit(wmHelper) } } transitions { - testApp.closeIME(device, wmHelper) + testApp.closeIME(wmHelper) } } } diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/ime/CloseImeAutoOpenWindowToHomeTest.kt b/tests/FlickerTests/src/com/android/server/wm/flicker/ime/CloseImeAutoOpenWindowToHomeTest.kt index 5e5dfd6748127..dcb5dad3e9313 100644 --- a/tests/FlickerTests/src/com/android/server/wm/flicker/ime/CloseImeAutoOpenWindowToHomeTest.kt +++ b/tests/FlickerTests/src/com/android/server/wm/flicker/ime/CloseImeAutoOpenWindowToHomeTest.kt @@ -71,7 +71,6 @@ class CloseImeAutoOpenWindowToHomeTest(private val testSpec: FlickerTestParamete setup { eachRun { testApp.launchViaIntent(wmHelper) - testApp.openIME(device, wmHelper) } } teardown { diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/ime/CloseImeEditorPopupDialogTest.kt b/tests/FlickerTests/src/com/android/server/wm/flicker/ime/CloseImeEditorPopupDialogTest.kt index 7a816c16aa28d..b979f3ec3442d 100644 --- a/tests/FlickerTests/src/com/android/server/wm/flicker/ime/CloseImeEditorPopupDialogTest.kt +++ b/tests/FlickerTests/src/com/android/server/wm/flicker/ime/CloseImeEditorPopupDialogTest.kt @@ -54,7 +54,7 @@ class CloseImeEditorPopupDialogTest(private val testSpec: FlickerTestParameter) setup { eachRun { imeTestApp.launchViaIntent(wmHelper) - imeTestApp.openIME(device, wmHelper) + imeTestApp.openIME(wmHelper) } } transitions { 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 1ce1e1fb05f6b..928bb5346671e 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 @@ -17,8 +17,8 @@ package com.android.server.wm.flicker.ime import android.app.Instrumentation -import android.platform.test.annotations.Presubmit import android.platform.test.annotations.FlakyTest +import android.platform.test.annotations.Presubmit import androidx.test.filters.RequiresDevice import androidx.test.platform.app.InstrumentationRegistry import com.android.server.wm.flicker.FlickerBuilderProvider @@ -27,11 +27,11 @@ import com.android.server.wm.flicker.FlickerTestParameter import com.android.server.wm.flicker.FlickerTestParameterFactory import com.android.server.wm.flicker.annotation.Group2 import com.android.server.wm.flicker.dsl.FlickerBuilder +import com.android.server.wm.flicker.entireScreenCovered import com.android.server.wm.flicker.helpers.ImeAppHelper import com.android.server.wm.flicker.navBarLayerIsVisible import com.android.server.wm.flicker.navBarLayerRotatesAndScales import com.android.server.wm.flicker.navBarWindowIsVisible -import com.android.server.wm.flicker.entireScreenCovered import com.android.server.wm.flicker.statusBarLayerRotatesScales import com.android.server.wm.flicker.statusBarWindowIsVisible import com.android.server.wm.traces.common.FlickerComponentName @@ -64,7 +64,7 @@ class CloseImeWindowToAppTest(private val testSpec: FlickerTestParameter) { testApp.launchViaIntent(wmHelper) } eachRun { - testApp.openIME(device, wmHelper) + testApp.openIME(wmHelper) } } teardown { @@ -73,7 +73,7 @@ class CloseImeWindowToAppTest(private val testSpec: FlickerTestParameter) { } } transitions { - testApp.closeIME(device, wmHelper) + testApp.closeIME(wmHelper) } } } @@ -163,4 +163,4 @@ class CloseImeWindowToAppTest(private val testSpec: FlickerTestParameter) { .getConfigNonRotationTests(repetitions = 3) } } -} \ No newline at end of file +} 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 df81042b05403..3ff809d383301 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 @@ -62,7 +62,7 @@ class CloseImeWindowToHomeTest(private val testSpec: FlickerTestParameter) { setup { eachRun { testApp.launchViaIntent(wmHelper) - testApp.openIME(device, wmHelper) + testApp.openIME(wmHelper) } } transitions { @@ -73,12 +73,6 @@ class CloseImeWindowToHomeTest(private val testSpec: FlickerTestParameter) { .waitForAndVerify() } teardown { - eachRun { - device.pressHome() - wmHelper.StateSyncBuilder() - .withHomeActivityVisible() - .waitForAndVerify() - } test { testApp.exit(wmHelper) } diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/ime/LaunchAppShowImeAndDialogThemeAppTest.kt b/tests/FlickerTests/src/com/android/server/wm/flicker/ime/LaunchAppShowImeAndDialogThemeAppTest.kt index 022246bcb7b13..d1761fca899bc 100644 --- a/tests/FlickerTests/src/com/android/server/wm/flicker/ime/LaunchAppShowImeAndDialogThemeAppTest.kt +++ b/tests/FlickerTests/src/com/android/server/wm/flicker/ime/LaunchAppShowImeAndDialogThemeAppTest.kt @@ -71,7 +71,7 @@ class LaunchAppShowImeAndDialogThemeAppTest(private val testSpec: FlickerTestPar } teardown { eachRun { - testApp.exit() + testApp.exit(wmHelper) } } transitions { diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/ime/LaunchAppShowImeOnStartTest.kt b/tests/FlickerTests/src/com/android/server/wm/flicker/ime/LaunchAppShowImeOnStartTest.kt index f18b294d743e3..d393ace3254dd 100644 --- a/tests/FlickerTests/src/com/android/server/wm/flicker/ime/LaunchAppShowImeOnStartTest.kt +++ b/tests/FlickerTests/src/com/android/server/wm/flicker/ime/LaunchAppShowImeOnStartTest.kt @@ -79,14 +79,14 @@ class LaunchAppShowImeOnStartTest(private val testSpec: FlickerTestParameter) { return FlickerBuilder(instrumentation).apply { setup { eachRun { - initializeApp.launchViaIntent() + initializeApp.launchViaIntent(wmHelper) this.setRotation(testSpec.startRotation) } } teardown { eachRun { - initializeApp.exit() - testApp.exit() + initializeApp.exit(wmHelper) + testApp.exit(wmHelper) } } transitions { diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/ime/OpenImeWindowAndCloseTest.kt b/tests/FlickerTests/src/com/android/server/wm/flicker/ime/OpenImeWindowAndCloseTest.kt index 972918e28fa72..1854d6e5506e5 100644 --- a/tests/FlickerTests/src/com/android/server/wm/flicker/ime/OpenImeWindowAndCloseTest.kt +++ b/tests/FlickerTests/src/com/android/server/wm/flicker/ime/OpenImeWindowAndCloseTest.kt @@ -22,11 +22,19 @@ import android.view.Surface import android.view.WindowManagerPolicyConstants import androidx.test.filters.RequiresDevice import androidx.test.platform.app.InstrumentationRegistry -import com.android.server.wm.flicker.* +import com.android.server.wm.flicker.FlickerBuilderProvider +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.Group2 import com.android.server.wm.flicker.dsl.FlickerBuilder +import com.android.server.wm.flicker.entireScreenCovered import com.android.server.wm.flicker.helpers.ImeAppHelper import com.android.server.wm.flicker.helpers.SimpleAppHelper +import com.android.server.wm.flicker.navBarLayerIsVisible +import com.android.server.wm.flicker.navBarWindowIsVisible +import com.android.server.wm.flicker.statusBarLayerIsVisible +import com.android.server.wm.flicker.statusBarWindowIsVisible import org.junit.FixMethodOrder import org.junit.Test import org.junit.runner.RunWith @@ -56,15 +64,15 @@ class OpenImeWindowAndCloseTest(private val testSpec: FlickerTestParameter) { eachRun { simpleApp.launchViaIntent(wmHelper) testApp.launchViaIntent(wmHelper) - testApp.openIME(device, wmHelper) + testApp.openIME(wmHelper) } } transitions { - testApp.finishActivity(device, wmHelper) + testApp.finishActivity(wmHelper) } teardown { test { - simpleApp.exit() + simpleApp.exit(wmHelper) } } } @@ -128,4 +136,4 @@ class OpenImeWindowAndCloseTest(private val testSpec: FlickerTestParameter) { ) } } -} \ No newline at end of file +} diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/ime/OpenImeWindowTest.kt b/tests/FlickerTests/src/com/android/server/wm/flicker/ime/OpenImeWindowTest.kt index 94a6639e75acc..dbec3643c39f1 100644 --- a/tests/FlickerTests/src/com/android/server/wm/flicker/ime/OpenImeWindowTest.kt +++ b/tests/FlickerTests/src/com/android/server/wm/flicker/ime/OpenImeWindowTest.kt @@ -17,10 +17,10 @@ package com.android.server.wm.flicker.ime import android.app.Instrumentation +import android.platform.test.annotations.FlakyTest import android.platform.test.annotations.Presubmit import android.view.Surface import android.view.WindowManagerPolicyConstants -import android.platform.test.annotations.FlakyTest import androidx.test.filters.RequiresDevice import androidx.test.platform.app.InstrumentationRegistry import com.android.server.wm.flicker.FlickerBuilderProvider @@ -28,12 +28,12 @@ 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.Group2 +import com.android.server.wm.flicker.dsl.FlickerBuilder +import com.android.server.wm.flicker.entireScreenCovered import com.android.server.wm.flicker.helpers.ImeAppHelper import com.android.server.wm.flicker.navBarLayerIsVisible import com.android.server.wm.flicker.navBarLayerRotatesAndScales import com.android.server.wm.flicker.navBarWindowIsVisible -import com.android.server.wm.flicker.entireScreenCovered -import com.android.server.wm.flicker.dsl.FlickerBuilder import com.android.server.wm.flicker.statusBarLayerIsVisible import com.android.server.wm.flicker.statusBarLayerRotatesScales import com.android.server.wm.flicker.statusBarWindowIsVisible @@ -65,14 +65,14 @@ class OpenImeWindowTest(private val testSpec: FlickerTestParameter) { } } transitions { - testApp.openIME(device, wmHelper) + testApp.openIME(wmHelper) } teardown { eachRun { - testApp.closeIME(device, wmHelper) + testApp.closeIME(wmHelper) } test { - testApp.exit() + testApp.exit(wmHelper) } } } diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/ime/OpenImeWindowToOverViewTest.kt b/tests/FlickerTests/src/com/android/server/wm/flicker/ime/OpenImeWindowToOverViewTest.kt index 1166a9a483d1e..baf67dc470303 100644 --- a/tests/FlickerTests/src/com/android/server/wm/flicker/ime/OpenImeWindowToOverViewTest.kt +++ b/tests/FlickerTests/src/com/android/server/wm/flicker/ime/OpenImeWindowToOverViewTest.kt @@ -83,7 +83,7 @@ class OpenImeWindowToOverViewTest(private val testSpec: FlickerTestParameter) { wmHelper.StateSyncBuilder() .withHomeActivityVisible() .waitForAndVerify() - imeTestApp.exit() + imeTestApp.exit(wmHelper) } } } diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/ime/ReOpenImeWindowTest.kt b/tests/FlickerTests/src/com/android/server/wm/flicker/ime/ReOpenImeWindowTest.kt index 836f0f077b78d..b28e870112f4d 100644 --- a/tests/FlickerTests/src/com/android/server/wm/flicker/ime/ReOpenImeWindowTest.kt +++ b/tests/FlickerTests/src/com/android/server/wm/flicker/ime/ReOpenImeWindowTest.kt @@ -74,7 +74,7 @@ open class ReOpenImeWindowTest(private val testSpec: FlickerTestParameter) { setup { test { testApp.launchViaIntent(wmHelper) - testApp.openIME(device, wmHelper) + testApp.openIME(wmHelper) } eachRun { device.pressRecentApps() @@ -92,7 +92,7 @@ open class ReOpenImeWindowTest(private val testSpec: FlickerTestParameter) { } teardown { test { - testApp.exit() + testApp.exit(wmHelper) } } } diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/ime/SwitchImeWindowsFromGestureNavTest.kt b/tests/FlickerTests/src/com/android/server/wm/flicker/ime/SwitchImeWindowsFromGestureNavTest.kt index e0b992630d8e7..d1188467cc018 100644 --- a/tests/FlickerTests/src/com/android/server/wm/flicker/ime/SwitchImeWindowsFromGestureNavTest.kt +++ b/tests/FlickerTests/src/com/android/server/wm/flicker/ime/SwitchImeWindowsFromGestureNavTest.kt @@ -80,7 +80,7 @@ open class SwitchImeWindowsFromGestureNavTest(private val testSpec: FlickerTestP .withFullScreenApp(imeTestApp.component) .waitForAndVerify() - imeTestApp.openIME(device, wmHelper) + imeTestApp.openIME(wmHelper) } } teardown { @@ -89,8 +89,8 @@ open class SwitchImeWindowsFromGestureNavTest(private val testSpec: FlickerTestP wmHelper.StateSyncBuilder() .withHomeActivityVisible() .waitForAndVerify() - testApp.exit() - imeTestApp.exit() + testApp.exit(wmHelper) + imeTestApp.exit(wmHelper) } } transitions { diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/launch/ActivitiesTransitionTest.kt b/tests/FlickerTests/src/com/android/server/wm/flicker/launch/ActivitiesTransitionTest.kt index f11f2a08c573c..33b26a3b70725 100644 --- a/tests/FlickerTests/src/com/android/server/wm/flicker/launch/ActivitiesTransitionTest.kt +++ b/tests/FlickerTests/src/com/android/server/wm/flicker/launch/ActivitiesTransitionTest.kt @@ -72,9 +72,6 @@ class ActivitiesTransitionTest(val testSpec: FlickerTestParameter) { setup { test { testApp.launchViaIntent(wmHelper) - wmHelper.StateSyncBuilder() - .withFullScreenApp(testApp.component) - .waitForAndVerify() } } teardown { diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/launch/OpenAppColdTest.kt b/tests/FlickerTests/src/com/android/server/wm/flicker/launch/OpenAppColdTest.kt index 1f9196030bb33..e52b6c326b739 100644 --- a/tests/FlickerTests/src/com/android/server/wm/flicker/launch/OpenAppColdTest.kt +++ b/tests/FlickerTests/src/com/android/server/wm/flicker/launch/OpenAppColdTest.kt @@ -75,9 +75,6 @@ open class OpenAppColdTest(testSpec: FlickerTestParameter) : } transitions { testApp.launchViaIntent(wmHelper) - wmHelper.StateSyncBuilder() - .withFullScreenApp(testApp.component) - .waitForAndVerify() } } @@ -87,7 +84,7 @@ open class OpenAppColdTest(testSpec: FlickerTestParameter) : override fun statusBarLayerRotatesScales() = super.statusBarLayerRotatesScales() /** {@inheritDoc} */ - @FlakyTest + @FlakyTest(bugId = 206753786) @Test override fun navBarLayerRotatesAndScales() { super.navBarLayerRotatesAndScales() diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/launch/OpenAppFromNotificationWarm.kt b/tests/FlickerTests/src/com/android/server/wm/flicker/launch/OpenAppFromNotificationWarm.kt index 7c437d09d619d..94abe32dd1b6c 100644 --- a/tests/FlickerTests/src/com/android/server/wm/flicker/launch/OpenAppFromNotificationWarm.kt +++ b/tests/FlickerTests/src/com/android/server/wm/flicker/launch/OpenAppFromNotificationWarm.kt @@ -73,7 +73,7 @@ open class OpenAppFromNotificationWarm(testSpec: FlickerTestParameter) : wmHelper.StateSyncBuilder() .withFullScreenApp(testApp.component) .waitForAndVerify() - testApp.postNotification(device, wmHelper) + testApp.postNotification(wmHelper) device.pressHome() wmHelper.StateSyncBuilder() .withHomeActivityVisible() 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 fd74ea5dd9731..04523398046f6 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 @@ -16,8 +16,8 @@ package com.android.server.wm.flicker.launch -import android.platform.test.annotations.Postsubmit import android.platform.test.annotations.FlakyTest +import android.platform.test.annotations.Postsubmit import android.platform.test.annotations.Presubmit import android.platform.test.annotations.RequiresDevice import android.view.Surface @@ -60,10 +60,9 @@ import org.junit.runners.Parameterized @Parameterized.UseParametersRunnerFactory(FlickerParametersRunnerFactory::class) @FixMethodOrder(MethodSorters.NAME_ASCENDING) @Group1 -open class OpenAppNonResizeableTest(testSpec: FlickerTestParameter) - : OpenAppFromLockTransition(testSpec) { +open class OpenAppNonResizeableTest(testSpec: FlickerTestParameter) : + OpenAppFromLockTransition(testSpec) { override val testApp = NonResizeableAppHelper(instrumentation) - private val colorFadComponent = FlickerComponentName("", "ColorFade BLAST#") /** * Checks that the nav bar layer starts invisible, becomes visible during unlocking animation diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/launch/OpenAppWarmTest.kt b/tests/FlickerTests/src/com/android/server/wm/flicker/launch/OpenAppWarmTest.kt index 47d225e9b6d94..88e2b2d8e7b7c 100644 --- a/tests/FlickerTests/src/com/android/server/wm/flicker/launch/OpenAppWarmTest.kt +++ b/tests/FlickerTests/src/com/android/server/wm/flicker/launch/OpenAppWarmTest.kt @@ -75,15 +75,12 @@ open class OpenAppWarmTest(testSpec: FlickerTestParameter) : } } teardown { - eachRun { + test { testApp.exit(wmHelper) } } transitions { testApp.launchViaIntent(wmHelper) - wmHelper.StateSyncBuilder() - .withFullScreenApp(testApp.component) - .waitForAndVerify() } } diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/launch/TaskTransitionTest.kt b/tests/FlickerTests/src/com/android/server/wm/flicker/launch/TaskTransitionTest.kt index 12a34df015295..bc4f0cfec05ef 100644 --- a/tests/FlickerTests/src/com/android/server/wm/flicker/launch/TaskTransitionTest.kt +++ b/tests/FlickerTests/src/com/android/server/wm/flicker/launch/TaskTransitionTest.kt @@ -75,14 +75,11 @@ class TaskTransitionTest(val testSpec: FlickerTestParameter) { setup { eachRun { mTestApp.launchViaIntent(wmHelper) - wmHelper.StateSyncBuilder() - .withFullScreenApp(mTestApp.component) - .waitForAndVerify() } } teardown { test { - mTestApp.exit() + mTestApp.exit(wmHelper) } } transitions { diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/quickswitch/QuickSwitchBetweenTwoAppsBackTest.kt b/tests/FlickerTests/src/com/android/server/wm/flicker/quickswitch/QuickSwitchBetweenTwoAppsBackTest.kt index 872d8e733c2f1..0e4955786d5ff 100644 --- a/tests/FlickerTests/src/com/android/server/wm/flicker/quickswitch/QuickSwitchBetweenTwoAppsBackTest.kt +++ b/tests/FlickerTests/src/com/android/server/wm/flicker/quickswitch/QuickSwitchBetweenTwoAppsBackTest.kt @@ -17,6 +17,7 @@ package com.android.server.wm.flicker.quickswitch import android.app.Instrumentation +import android.platform.test.annotations.FlakyTest import android.platform.test.annotations.Presubmit import android.platform.test.annotations.RequiresDevice import android.view.Surface @@ -31,7 +32,6 @@ import com.android.server.wm.flicker.annotation.Group1 import com.android.server.wm.flicker.dsl.FlickerBuilder import com.android.server.wm.flicker.helpers.NonResizeableAppHelper import com.android.server.wm.flicker.helpers.SimpleAppHelper -import com.android.server.wm.flicker.helpers.WindowUtils import com.android.server.wm.flicker.helpers.isShellTransitionsEnabled import com.android.server.wm.flicker.navBarLayerIsVisible import com.android.server.wm.flicker.navBarLayerRotatesAndScales @@ -39,6 +39,7 @@ import com.android.server.wm.flicker.navBarWindowIsVisible import com.android.server.wm.flicker.statusBarLayerIsVisible import com.android.server.wm.flicker.statusBarWindowIsVisible import com.android.server.wm.traces.common.FlickerComponentName +import com.android.server.wm.traces.common.Rect import org.junit.Assume import org.junit.Before import org.junit.FixMethodOrder @@ -65,13 +66,11 @@ import org.junit.runners.Parameterized @Group1 open class QuickSwitchBetweenTwoAppsBackTest(private val testSpec: FlickerTestParameter) { private val instrumentation: Instrumentation = InstrumentationRegistry.getInstrumentation() - private val taplInstrumentation = LauncherInstrumentation() + private val tapl = LauncherInstrumentation() private val testApp1 = SimpleAppHelper(instrumentation) private val testApp2 = NonResizeableAppHelper(instrumentation) - private val startDisplayBounds = WindowUtils.getDisplayBounds(testSpec.startRotation) - @Before open fun before() { Assume.assumeFalse(isShellTransitionsEnabled) @@ -82,33 +81,32 @@ open class QuickSwitchBetweenTwoAppsBackTest(private val testSpec: FlickerTestPa return FlickerBuilder(instrumentation).apply { setup { test { - taplInstrumentation.setExpectedRotation(testSpec.startRotation) + tapl.setExpectedRotation(testSpec.startRotation) + testApp1.launchViaIntent(wmHelper) + testApp2.launchViaIntent(wmHelper) + + startDisplayBounds = wmHelper.currentState.layerState + .physicalDisplayBounds ?: error("Display not found") } eachRun { - testApp1.launchViaIntent(wmHelper) + tapl.launchedAppState.quickSwitchToPreviousAppSwipeLeft() wmHelper.StateSyncBuilder() - .withFullScreenApp(testApp1.component) - .waitForAndVerify() - - testApp2.launchViaIntent(wmHelper) - wmHelper.StateSyncBuilder() - .withFullScreenApp(testApp2.component) + .withNavBarStatusBarVisible() .waitForAndVerify() } } transitions { - taplInstrumentation.launchedAppState.quickSwitchToPreviousApp() + tapl.launchedAppState.quickSwitchToPreviousApp() wmHelper.StateSyncBuilder() - .withFullScreenApp(testApp1.component) .withNavBarStatusBarVisible() .waitForAndVerify() } teardown { test { - testApp1.exit() - testApp2.exit() + testApp1.exit(wmHelper) + testApp2.exit(wmHelper) } } } @@ -301,7 +299,7 @@ open class QuickSwitchBetweenTwoAppsBackTest(private val testSpec: FlickerTestPa * * NOTE: This doesn't check that the navbar is visible or not. */ - @Presubmit + @FlakyTest @Test fun navbarIsAlwaysInRightPosition() = testSpec.navBarLayerRotatesAndScales() @@ -320,6 +318,8 @@ open class QuickSwitchBetweenTwoAppsBackTest(private val testSpec: FlickerTestPa fun statusBarLayerIsAlwaysVisible() = testSpec.statusBarLayerIsVisible() companion object { + private var startDisplayBounds = Rect.EMPTY + @Parameterized.Parameters(name = "{0}") @JvmStatic fun getParams(): Collection { diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/quickswitch/QuickSwitchBetweenTwoAppsForwardTest.kt b/tests/FlickerTests/src/com/android/server/wm/flicker/quickswitch/QuickSwitchBetweenTwoAppsForwardTest.kt index 7ce6ceacd210a..5fb6584e1456f 100644 --- a/tests/FlickerTests/src/com/android/server/wm/flicker/quickswitch/QuickSwitchBetweenTwoAppsForwardTest.kt +++ b/tests/FlickerTests/src/com/android/server/wm/flicker/quickswitch/QuickSwitchBetweenTwoAppsForwardTest.kt @@ -17,6 +17,7 @@ package com.android.server.wm.flicker.quickswitch import android.app.Instrumentation +import android.platform.test.annotations.FlakyTest import android.platform.test.annotations.Presubmit import android.platform.test.annotations.RequiresDevice import android.view.Surface @@ -65,7 +66,7 @@ import org.junit.runners.Parameterized @Group1 open class QuickSwitchBetweenTwoAppsForwardTest(private val testSpec: FlickerTestParameter) { private val instrumentation: Instrumentation = InstrumentationRegistry.getInstrumentation() - private val taplInstrumentation = LauncherInstrumentation() + private val tapl = LauncherInstrumentation() private val testApp1 = SimpleAppHelper(instrumentation) private val testApp2 = NonResizeableAppHelper(instrumentation) @@ -80,36 +81,23 @@ open class QuickSwitchBetweenTwoAppsForwardTest(private val testSpec: FlickerTes return FlickerBuilder(instrumentation).apply { setup { test { - taplInstrumentation.setExpectedRotation(testSpec.startRotation) - } - - eachRun { + tapl.setExpectedRotation(testSpec.startRotation) testApp1.launchViaIntent(wmHelper) - wmHelper.StateSyncBuilder() - .withFullScreenApp(testApp1.component) - .waitForAndVerify() - testApp2.launchViaIntent(wmHelper) - wmHelper.StateSyncBuilder() - .withFullScreenApp(testApp2.component) - .waitForAndVerify() startDisplayBounds = wmHelper.currentState.layerState - .displays.firstOrNull { !it.isVirtual } - ?.layerStackSpace - ?: error("Display not found") - - taplInstrumentation.launchedAppState.quickSwitchToPreviousApp() - + .physicalDisplayBounds ?: error("Display not found") + } + eachRun { + tapl.launchedAppState.quickSwitchToPreviousApp() wmHelper.StateSyncBuilder() - .withFullScreenApp(testApp1.component) + .withNavBarStatusBarVisible() .waitForAndVerify() } } transitions { - taplInstrumentation.launchedAppState.quickSwitchToPreviousAppSwipeLeft() + tapl.launchedAppState.quickSwitchToPreviousAppSwipeLeft() wmHelper.StateSyncBuilder() - .withFullScreenApp(testApp2.component) .withNavBarStatusBarVisible() .waitForAndVerify() } @@ -315,7 +303,7 @@ open class QuickSwitchBetweenTwoAppsForwardTest(private val testSpec: FlickerTes * * NOTE: This doesn't check that the navbar is visible or not. */ - @Presubmit + @FlakyTest @Test open fun navbarIsAlwaysInRightPosition() { testSpec.navBarLayerRotatesAndScales() 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 788f78b4460c5..4ea1f1c18b522 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 @@ -31,13 +31,13 @@ import com.android.server.wm.flicker.annotation.Group1 import com.android.server.wm.flicker.dsl.FlickerBuilder import com.android.server.wm.flicker.entireScreenCovered import com.android.server.wm.flicker.helpers.SimpleAppHelper -import com.android.server.wm.flicker.helpers.WindowUtils import com.android.server.wm.flicker.navBarLayerIsVisible import com.android.server.wm.flicker.navBarLayerRotatesAndScales import com.android.server.wm.flicker.navBarWindowIsVisible import com.android.server.wm.flicker.statusBarLayerIsVisible import com.android.server.wm.flicker.statusBarWindowIsVisible import com.android.server.wm.traces.common.FlickerComponentName +import com.android.server.wm.traces.common.Rect import org.junit.FixMethodOrder import org.junit.Test import org.junit.runner.RunWith @@ -66,8 +66,6 @@ class QuickSwitchFromLauncherTest(private val testSpec: FlickerTestParameter) { private val testApp = SimpleAppHelper(instrumentation) - private val startDisplayBounds = WindowUtils.getDisplayBounds(testSpec.startRotation) - @FlickerBuilderProvider fun buildFlicker(): FlickerBuilder { return FlickerBuilder(instrumentation).apply { @@ -83,6 +81,9 @@ class QuickSwitchFromLauncherTest(private val testSpec: FlickerTestParameter) { .withHomeActivityVisible() .withWindowSurfaceDisappeared(testApp.component) .waitForAndVerify() + + startDisplayBounds = wmHelper.currentState.layerState + .physicalDisplayBounds ?: error("Display not found") } } transitions { @@ -95,7 +96,7 @@ class QuickSwitchFromLauncherTest(private val testSpec: FlickerTestParameter) { teardown { eachRun { - testApp.exit() + testApp.exit(wmHelper) } } } @@ -328,6 +329,8 @@ class QuickSwitchFromLauncherTest(private val testSpec: FlickerTestParameter) { fun screenIsAlwaysFilled() = testSpec.entireScreenCovered() companion object { + private var startDisplayBounds = Rect.EMPTY + @Parameterized.Parameters(name = "{0}") @JvmStatic fun getParams(): Collection { diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/rotation/RotationTransition.kt b/tests/FlickerTests/src/com/android/server/wm/flicker/rotation/RotationTransition.kt index 0becadf630e16..586be06d1a298 100644 --- a/tests/FlickerTests/src/com/android/server/wm/flicker/rotation/RotationTransition.kt +++ b/tests/FlickerTests/src/com/android/server/wm/flicker/rotation/RotationTransition.kt @@ -22,12 +22,12 @@ import androidx.test.platform.app.InstrumentationRegistry import com.android.server.wm.flicker.FlickerBuilderProvider import com.android.server.wm.flicker.FlickerTestParameter import com.android.server.wm.flicker.dsl.FlickerBuilder +import com.android.server.wm.flicker.entireScreenCovered import com.android.server.wm.flicker.helpers.StandardAppHelper import com.android.server.wm.flicker.helpers.setRotation import com.android.server.wm.flicker.navBarLayerIsVisible import com.android.server.wm.flicker.navBarLayerRotatesAndScales import com.android.server.wm.flicker.navBarWindowIsVisible -import com.android.server.wm.flicker.entireScreenCovered import com.android.server.wm.traces.common.FlickerComponentName import org.junit.Test @@ -47,7 +47,7 @@ abstract class RotationTransition(protected val testSpec: FlickerTestParameter) } teardown { test { - testApp.exit() + testApp.exit(wmHelper) } } transitions { From a7370b112f6173ce3b4fec28b145ca1186c00758 Mon Sep 17 00:00:00 2001 From: Nataniel Borges Date: Wed, 15 Jun 2022 20:33:24 +0200 Subject: [PATCH 06/13] 6/ Add tapl support on app launch CUJs Previously we used UiAutomator directly but this was not well-supported and caused flakiness Bug: 236131465 Test: atest FlickerTests Change-Id: Ia6cae9bc4b47e9f14aa6c2fb15b49b1663224e07 --- .../wm/flicker/launch/ActivitiesTransitionTest.kt | 5 ++++- .../wm/flicker/launch/OpenAppFromLockTransition.kt | 3 --- .../flicker/launch/OpenAppFromNotificationCold.kt | 14 +++++++------- .../flicker/launch/OpenAppFromNotificationWarm.kt | 5 +---- .../wm/flicker/launch/OpenAppFromOverviewTest.kt | 9 ++++++--- .../server/wm/flicker/launch/OpenAppTransition.kt | 5 ++++- .../server/wm/flicker/launch/TaskTransitionTest.kt | 7 ++++--- 7 files changed, 26 insertions(+), 22 deletions(-) diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/launch/ActivitiesTransitionTest.kt b/tests/FlickerTests/src/com/android/server/wm/flicker/launch/ActivitiesTransitionTest.kt index 33b26a3b70725..a33f0ea5a074a 100644 --- a/tests/FlickerTests/src/com/android/server/wm/flicker/launch/ActivitiesTransitionTest.kt +++ b/tests/FlickerTests/src/com/android/server/wm/flicker/launch/ActivitiesTransitionTest.kt @@ -20,6 +20,7 @@ import android.app.Instrumentation import android.platform.test.annotations.Presubmit import androidx.test.filters.RequiresDevice import androidx.test.platform.app.InstrumentationRegistry +import com.android.launcher3.tapl.LauncherInstrumentation import com.android.server.wm.flicker.FlickerBuilderProvider import com.android.server.wm.flicker.FlickerParametersRunnerFactory import com.android.server.wm.flicker.FlickerTestParameter @@ -61,6 +62,7 @@ import org.junit.runners.Parameterized class ActivitiesTransitionTest(val testSpec: FlickerTestParameter) { private val instrumentation: Instrumentation = InstrumentationRegistry.getInstrumentation() private val testApp: TwoActivitiesAppHelper = TwoActivitiesAppHelper(instrumentation) + private val tapl = LauncherInstrumentation() /** * Entry point for the test runner. It will use this method to initialize and cache @@ -71,6 +73,7 @@ class ActivitiesTransitionTest(val testSpec: FlickerTestParameter) { return FlickerBuilder(instrumentation).apply { setup { test { + tapl.setExpectedRotation(testSpec.startRotation) testApp.launchViaIntent(wmHelper) } } @@ -81,7 +84,7 @@ class ActivitiesTransitionTest(val testSpec: FlickerTestParameter) { } transitions { testApp.openSecondActivity(device, wmHelper) - device.pressBack() + tapl.pressBack() wmHelper.StateSyncBuilder() .withFullScreenApp(testApp.component) .waitForAndVerify() diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/launch/OpenAppFromLockTransition.kt b/tests/FlickerTests/src/com/android/server/wm/flicker/launch/OpenAppFromLockTransition.kt index caadeda445d01..643fa8f8b8adb 100644 --- a/tests/FlickerTests/src/com/android/server/wm/flicker/launch/OpenAppFromLockTransition.kt +++ b/tests/FlickerTests/src/com/android/server/wm/flicker/launch/OpenAppFromLockTransition.kt @@ -51,9 +51,6 @@ abstract class OpenAppFromLockTransition(testSpec: FlickerTestParameter) : } transitions { testApp.launchViaIntent(wmHelper) - wmHelper.StateSyncBuilder() - .withFullScreenApp(testApp.component) - .waitForAndVerify() } } diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/launch/OpenAppFromNotificationCold.kt b/tests/FlickerTests/src/com/android/server/wm/flicker/launch/OpenAppFromNotificationCold.kt index 5022dd8f9bffd..68e8e467b950e 100644 --- a/tests/FlickerTests/src/com/android/server/wm/flicker/launch/OpenAppFromNotificationCold.kt +++ b/tests/FlickerTests/src/com/android/server/wm/flicker/launch/OpenAppFromNotificationCold.kt @@ -42,8 +42,8 @@ import org.junit.runners.Parameterized @FixMethodOrder(MethodSorters.NAME_ASCENDING) @Group1 @Postsubmit -open class OpenAppFromNotificationCold(testSpec: FlickerTestParameter) - : OpenAppFromNotificationWarm(testSpec) { +open class OpenAppFromNotificationCold(testSpec: FlickerTestParameter) : + OpenAppFromNotificationWarm(testSpec) { override val transition: FlickerBuilder.() -> Unit get() = { super.transition(this) @@ -52,9 +52,9 @@ open class OpenAppFromNotificationCold(testSpec: FlickerTestParameter) eachRun { // Close the app that posted the notification to trigger a cold start next time // it is open - can't just kill it because that would remove the notification. - taplInstrumentation.goHome() - taplInstrumentation.workspace.switchToOverview() - taplInstrumentation.overview.dismissAllTasks() + tapl.goHome() + tapl.workspace.switchToOverview() + tapl.overview.dismissAllTasks() } } } @@ -77,8 +77,8 @@ open class OpenAppFromNotificationCold(testSpec: FlickerTestParameter) @Parameterized.Parameters(name = "{0}") @JvmStatic fun getParams(): Collection { - return com.android.server.wm.flicker.FlickerTestParameterFactory.getInstance() + return FlickerTestParameterFactory.getInstance() .getConfigNonRotationTests(repetitions = 3) } } -} \ No newline at end of file +} diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/launch/OpenAppFromNotificationWarm.kt b/tests/FlickerTests/src/com/android/server/wm/flicker/launch/OpenAppFromNotificationWarm.kt index 94abe32dd1b6c..6d5911152dc03 100644 --- a/tests/FlickerTests/src/com/android/server/wm/flicker/launch/OpenAppFromNotificationWarm.kt +++ b/tests/FlickerTests/src/com/android/server/wm/flicker/launch/OpenAppFromNotificationWarm.kt @@ -23,7 +23,6 @@ import android.view.WindowInsets import android.view.WindowManager import androidx.test.uiautomator.By import androidx.test.uiautomator.Until -import com.android.launcher3.tapl.LauncherInstrumentation import com.android.server.wm.flicker.FlickerParametersRunnerFactory import com.android.server.wm.flicker.FlickerTestParameter import com.android.server.wm.flicker.FlickerTestParameterFactory @@ -55,8 +54,6 @@ import org.junit.runners.Parameterized @Postsubmit open class OpenAppFromNotificationWarm(testSpec: FlickerTestParameter) : OpenAppTransition(testSpec) { - protected val taplInstrumentation = LauncherInstrumentation() - override val testApp: NotificationAppHelper = NotificationAppHelper(instrumentation) open val openingNotificationsFromLockScreen = false @@ -74,7 +71,7 @@ open class OpenAppFromNotificationWarm(testSpec: FlickerTestParameter) : .withFullScreenApp(testApp.component) .waitForAndVerify() testApp.postNotification(wmHelper) - device.pressHome() + tapl.goHome() wmHelper.StateSyncBuilder() .withHomeActivityVisible() .waitForAndVerify() diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/launch/OpenAppFromOverviewTest.kt b/tests/FlickerTests/src/com/android/server/wm/flicker/launch/OpenAppFromOverviewTest.kt index 8d8a7951c5c30..c7883d65856d6 100644 --- a/tests/FlickerTests/src/com/android/server/wm/flicker/launch/OpenAppFromOverviewTest.kt +++ b/tests/FlickerTests/src/com/android/server/wm/flicker/launch/OpenAppFromOverviewTest.kt @@ -19,13 +19,13 @@ package com.android.server.wm.flicker.launch import android.platform.test.annotations.FlakyTest import android.platform.test.annotations.Presubmit import android.platform.test.annotations.RequiresDevice +import android.view.Surface 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.Group1 import com.android.server.wm.flicker.dsl.FlickerBuilder import com.android.server.wm.flicker.helpers.isShellTransitionsEnabled -import com.android.server.wm.flicker.helpers.reopenAppFromOverview import com.android.server.wm.flicker.helpers.setRotation import org.junit.Assume import org.junit.FixMethodOrder @@ -72,11 +72,14 @@ open class OpenAppFromOverviewTest(testSpec: FlickerTestParameter) : testApp.launchViaIntent(wmHelper) } eachRun { + // Can't use tapl.goHome() because of b/235841947 device.pressHome() wmHelper.StateSyncBuilder() .withHomeActivityVisible() .waitForAndVerify() - device.pressRecentApps() + // Launcher is always ROTATION_0 + tapl.setExpectedRotation(Surface.ROTATION_0) + tapl.workspace.switchToOverview() wmHelper.StateSyncBuilder() .withRecentsActivityVisible() .waitForAndVerify() @@ -84,7 +87,7 @@ open class OpenAppFromOverviewTest(testSpec: FlickerTestParameter) : } } transitions { - device.reopenAppFromOverview(wmHelper) + tapl.overview.currentTask.open() wmHelper.StateSyncBuilder() .withFullScreenApp(testApp.component) .waitForAndVerify() diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/launch/OpenAppTransition.kt b/tests/FlickerTests/src/com/android/server/wm/flicker/launch/OpenAppTransition.kt index 20e6d0222854a..67ad703f66592 100644 --- a/tests/FlickerTests/src/com/android/server/wm/flicker/launch/OpenAppTransition.kt +++ b/tests/FlickerTests/src/com/android/server/wm/flicker/launch/OpenAppTransition.kt @@ -19,14 +19,15 @@ package com.android.server.wm.flicker.launch import android.app.Instrumentation import android.platform.test.annotations.Presubmit import androidx.test.platform.app.InstrumentationRegistry +import com.android.launcher3.tapl.LauncherInstrumentation import com.android.server.wm.flicker.FlickerBuilderProvider import com.android.server.wm.flicker.FlickerTestParameter import com.android.server.wm.flicker.dsl.FlickerBuilder +import com.android.server.wm.flicker.entireScreenCovered import com.android.server.wm.flicker.helpers.SimpleAppHelper import com.android.server.wm.flicker.helpers.StandardAppHelper import com.android.server.wm.flicker.helpers.setRotation import com.android.server.wm.flicker.helpers.wakeUpAndGoToHomeScreen -import com.android.server.wm.flicker.entireScreenCovered import com.android.server.wm.flicker.navBarLayerIsVisible import com.android.server.wm.flicker.navBarLayerRotatesAndScales import com.android.server.wm.flicker.navBarWindowIsVisible @@ -42,6 +43,7 @@ import org.junit.Test abstract class OpenAppTransition(protected val testSpec: FlickerTestParameter) { protected val instrumentation: Instrumentation = InstrumentationRegistry.getInstrumentation() protected open val testApp: StandardAppHelper = SimpleAppHelper(instrumentation) + protected val tapl = LauncherInstrumentation() /** * Defines the transition used to run the test @@ -49,6 +51,7 @@ abstract class OpenAppTransition(protected val testSpec: FlickerTestParameter) { protected open val transition: FlickerBuilder.() -> Unit = { setup { test { + tapl.setExpectedRotation(testSpec.startRotation) device.wakeUpAndGoToHomeScreen() this.setRotation(testSpec.startRotation) } diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/launch/TaskTransitionTest.kt b/tests/FlickerTests/src/com/android/server/wm/flicker/launch/TaskTransitionTest.kt index bc4f0cfec05ef..99df1f4b5798f 100644 --- a/tests/FlickerTests/src/com/android/server/wm/flicker/launch/TaskTransitionTest.kt +++ b/tests/FlickerTests/src/com/android/server/wm/flicker/launch/TaskTransitionTest.kt @@ -21,6 +21,7 @@ import android.app.WallpaperManager import android.platform.test.annotations.Postsubmit import androidx.test.filters.RequiresDevice import androidx.test.platform.app.InstrumentationRegistry +import com.android.launcher3.tapl.LauncherInstrumentation import com.android.server.wm.flicker.FlickerBuilderProvider import com.android.server.wm.flicker.FlickerParametersRunnerFactory import com.android.server.wm.flicker.FlickerTestParameter @@ -63,10 +64,10 @@ import org.junit.runners.Parameterized @Group4 class TaskTransitionTest(val testSpec: FlickerTestParameter) { private val instrumentation: Instrumentation = InstrumentationRegistry.getInstrumentation() + private val tapl = LauncherInstrumentation() private val mTestApp: NewTasksAppHelper = NewTasksAppHelper(instrumentation) private val mWallpaper by lazy { - getWallpaperPackage(InstrumentationRegistry.getInstrumentation()) - ?: error("Unable to obtain wallpaper") + getWallpaperPackage(instrumentation) ?: error("Unable to obtain wallpaper") } @FlickerBuilderProvider @@ -84,7 +85,7 @@ class TaskTransitionTest(val testSpec: FlickerTestParameter) { } transitions { mTestApp.openNewTask(device, wmHelper) - device.pressBack() + tapl.pressBack() wmHelper.StateSyncBuilder() .withFullScreenApp(mTestApp.component) .waitForAndVerify() From dcf7063fdc8e7c4347277145e56a598de64c0d1a Mon Sep 17 00:00:00 2001 From: Nataniel Borges Date: Wed, 15 Jun 2022 21:30:31 +0200 Subject: [PATCH 07/13] 7/ New CUJ: launch app from icon on all apps Previous CUJ launched app only via intent Bug: 235792328 Test: atest FlickerTests:OpenAppColdFromIcon Change-Id: Ic5963572f4923ec5e47a75f75d444c69b9987e00 --- .../wm/flicker/launch/OpenAppColdFromIcon.kt | 179 ++++++++++++++++++ 1 file changed, 179 insertions(+) create mode 100644 tests/FlickerTests/src/com/android/server/wm/flicker/launch/OpenAppColdFromIcon.kt diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/launch/OpenAppColdFromIcon.kt b/tests/FlickerTests/src/com/android/server/wm/flicker/launch/OpenAppColdFromIcon.kt new file mode 100644 index 0000000000000..c92704464817b --- /dev/null +++ b/tests/FlickerTests/src/com/android/server/wm/flicker/launch/OpenAppColdFromIcon.kt @@ -0,0 +1,179 @@ +/* + * Copyright (C) 2022 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.server.wm.flicker.launch + +import android.platform.test.annotations.Postsubmit +import android.platform.test.annotations.RequiresDevice +import android.view.Surface +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.Group1 +import com.android.server.wm.flicker.dsl.FlickerBuilder +import com.android.server.wm.flicker.helpers.setRotation +import com.android.server.wm.flicker.rules.RemoveAllTasksButHomeRule +import org.junit.FixMethodOrder +import org.junit.Test +import org.junit.runner.RunWith +import org.junit.runners.MethodSorters +import org.junit.runners.Parameterized + +/** + * Test cold launching an app from launcher + * + * To run this test: `atest FlickerTests:OpenAppColdFromIcon` + * + * Actions: + * Make sure no apps are running on the device + * Launch an app [testApp] by clicking it's icon on all apps and wait animation to complete + * + * Notes: + * 1. Some default assertions (e.g., nav bar, status bar and screen covered) + * are inherited [OpenAppTransition] + * 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) +@Group1 +class OpenAppColdFromIcon(testSpec: FlickerTestParameter) : + OpenAppFromLauncherTransition(testSpec) { + /** + * Defines the transition used to run the test + */ + override val transition: FlickerBuilder.() -> Unit + get() = { + super.transition(this) + setup { + eachRun { + tapl.setExpectedRotation(Surface.ROTATION_0) + RemoveAllTasksButHomeRule.removeAllTasksButHome() + this.setRotation(testSpec.startRotation) + } + } + teardown { + eachRun { + testApp.exit(wmHelper) + } + } + transitions { + tapl.goHome() + .switchToAllApps() + .getAppIcon(testApp.launcherName) + .launch(testApp.`package`) + } + } + + @Postsubmit + @Test + override fun appWindowReplacesLauncherAsTopWindow() = + super.appWindowReplacesLauncherAsTopWindow() + + @Postsubmit + @Test + override fun appLayerBecomesVisible() = + super.appLayerBecomesVisible() + + @Postsubmit + @Test + override fun appLayerReplacesLauncher() = + super.appLayerReplacesLauncher() + + @Postsubmit + @Test + override fun appWindowBecomesTopWindow() = + super.appWindowBecomesTopWindow() + + @Postsubmit + @Test + override fun appWindowBecomesVisible() = + super.appWindowBecomesVisible() + + @Postsubmit + @Test + override fun entireScreenCovered() = + super.entireScreenCovered() + + @Postsubmit + @Test + override fun focusChanges() = + super.focusChanges() + + @Postsubmit + @Test + override fun navBarLayerIsVisible() = + super.navBarLayerIsVisible() + + @Postsubmit + @Test + override fun navBarLayerRotatesAndScales() = + super.navBarLayerRotatesAndScales() + + @Postsubmit + @Test + override fun navBarWindowIsVisible() = + super.navBarWindowIsVisible() + + @Postsubmit + @Test + override fun statusBarLayerRotatesScales() = + super.statusBarLayerRotatesScales() + + @Postsubmit + @Test + override fun statusBarLayerIsVisible() = + super.statusBarLayerIsVisible() + + @Postsubmit + @Test + override fun statusBarWindowIsVisible() = + super.statusBarWindowIsVisible() + + @Postsubmit + @Test + override fun visibleLayersShownMoreThanOneConsecutiveEntry() = + super.visibleLayersShownMoreThanOneConsecutiveEntry() + + @Postsubmit + @Test + override fun visibleWindowsShownMoreThanOneConsecutiveEntry() = + super.visibleWindowsShownMoreThanOneConsecutiveEntry() + + @Postsubmit + @Test + override fun appWindowIsTopWindowAtEnd() = + super.appWindowIsTopWindowAtEnd() + + companion object { + /** + * Creates the test configurations. + * + * See [FlickerTestParameterFactory.getConfigNonRotationTests] for configuring + * repetitions, screen orientation and navigation modes. + */ + @Parameterized.Parameters(name = "{0}") + @JvmStatic + fun getParams(): Collection { + return FlickerTestParameterFactory.getInstance() + .getConfigNonRotationTests() + } + } +} From 2f771c7d684cadadcf1ff6f53d2e48122ec77e5c Mon Sep 17 00:00:00 2001 From: Nataniel Borges Date: Wed, 15 Jun 2022 21:42:12 +0200 Subject: [PATCH 08/13] 8/ Fix nav and status bar assertions with display off Bug: 232085799 Test: atest FlickerTests Change-Id: Ie7bfeea29089933766f0a9f69b528875ff1d8027 --- .../wm/flicker/launch/OpenAppFromLockTransition.kt | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/launch/OpenAppFromLockTransition.kt b/tests/FlickerTests/src/com/android/server/wm/flicker/launch/OpenAppFromLockTransition.kt index 643fa8f8b8adb..85024e744dea0 100644 --- a/tests/FlickerTests/src/com/android/server/wm/flicker/launch/OpenAppFromLockTransition.kt +++ b/tests/FlickerTests/src/com/android/server/wm/flicker/launch/OpenAppFromLockTransition.kt @@ -17,10 +17,12 @@ package com.android.server.wm.flicker.launch import android.platform.test.annotations.FlakyTest +import android.platform.test.annotations.Postsubmit import android.platform.test.annotations.Presubmit import com.android.server.wm.flicker.FlickerTestParameter import com.android.server.wm.flicker.dsl.FlickerBuilder import com.android.server.wm.flicker.navBarLayerPositionEnd +import com.android.server.wm.flicker.statusBarLayerPositionEnd import com.android.server.wm.traces.common.FlickerComponentName import org.junit.Test @@ -110,6 +112,16 @@ abstract class OpenAppFromLockTransition(testSpec: FlickerTestParameter) : @Test override fun navBarLayerRotatesAndScales() = testSpec.navBarLayerPositionEnd() + /** + * Checks the position of the status bar at the start and end of the transition + * + * Differently from the normal usage of this assertion, check only the final state of the + * transition because the display is off at the start and the NavBar is never visible + */ + @Postsubmit + @Test + override fun statusBarLayerRotatesScales() = testSpec.statusBarLayerPositionEnd() + /** * Checks that the status bar layer is visible at the end of the trace * From 1e6b569cdd8cebbb2f60683863d9ddf156d69e84 Mon Sep 17 00:00:00 2001 From: Nataniel Borges Date: Fri, 17 Jun 2022 14:36:48 +0000 Subject: [PATCH 09/13] 9/ Fix TAPL on app close When pressing home, TAPL expects the orientation to remain constant. However, when closing a landscape app back to a portrait-only launcher this causes an error in verifyActiveContainer(); Bug: 235792328 Test: atest FlickerTests:OpenAppColdFromIcon Change-Id: I6a7b14171cf1b3be8f08da28b30429ad3cf03248 --- .../server/wm/flicker/close/CloseAppHomeButtonTest.kt | 6 +++++- .../android/server/wm/flicker/close/CloseAppTransition.kt | 3 +++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/close/CloseAppHomeButtonTest.kt b/tests/FlickerTests/src/com/android/server/wm/flicker/close/CloseAppHomeButtonTest.kt index 1ed034c010950..b178e8c7ecedb 100644 --- a/tests/FlickerTests/src/com/android/server/wm/flicker/close/CloseAppHomeButtonTest.kt +++ b/tests/FlickerTests/src/com/android/server/wm/flicker/close/CloseAppHomeButtonTest.kt @@ -68,7 +68,11 @@ class CloseAppHomeButtonTest(testSpec: FlickerTestParameter) : CloseAppTransitio get() = { super.transition(this) transitions { - tapl.goHome() + // Can't use TAPL at the moment because of rotation test issues + // When pressing home, TAPL expects the orientation to remain constant + // However, when closing a landscape app back to a portrait-only launcher + // this causes an error in verifyActiveContainer(); + device.pressHome() wmHelper.StateSyncBuilder() .withHomeActivityVisible() .waitForAndVerify() diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/close/CloseAppTransition.kt b/tests/FlickerTests/src/com/android/server/wm/flicker/close/CloseAppTransition.kt index 2e61ac25878a2..ae002c9458f5f 100644 --- a/tests/FlickerTests/src/com/android/server/wm/flicker/close/CloseAppTransition.kt +++ b/tests/FlickerTests/src/com/android/server/wm/flicker/close/CloseAppTransition.kt @@ -50,6 +50,9 @@ abstract class CloseAppTransition(protected val testSpec: FlickerTestParameter) */ protected open val transition: FlickerBuilder.() -> Unit = { setup { + test { + tapl.setExpectedRotation(testSpec.startRotation) + } eachRun { testApp.launchViaIntent(wmHelper) this.setRotation(testSpec.startRotation) From e72586faeffd55f281dfc797d64274b6cc43dfc2 Mon Sep 17 00:00:00 2001 From: Nataniel Borges Date: Fri, 17 Jun 2022 18:28:20 +0000 Subject: [PATCH 10/13] 10/ Stabilize quick switch tests Launch the apps in each run to ensure ordering on launcher's overview Bug: 236131465 Test: atest FlickerTests Change-Id: Iac91005a9e1cf96f0801aa6c648ddbb030496117 --- .../quickswitch/QuickSwitchBetweenTwoAppsBackTest.kt | 10 ++-------- .../QuickSwitchBetweenTwoAppsForwardTest.kt | 9 ++++----- 2 files changed, 6 insertions(+), 13 deletions(-) diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/quickswitch/QuickSwitchBetweenTwoAppsBackTest.kt b/tests/FlickerTests/src/com/android/server/wm/flicker/quickswitch/QuickSwitchBetweenTwoAppsBackTest.kt index 0e4955786d5ff..1a712842fec0e 100644 --- a/tests/FlickerTests/src/com/android/server/wm/flicker/quickswitch/QuickSwitchBetweenTwoAppsBackTest.kt +++ b/tests/FlickerTests/src/com/android/server/wm/flicker/quickswitch/QuickSwitchBetweenTwoAppsBackTest.kt @@ -82,19 +82,13 @@ open class QuickSwitchBetweenTwoAppsBackTest(private val testSpec: FlickerTestPa setup { test { tapl.setExpectedRotation(testSpec.startRotation) + } + eachRun { testApp1.launchViaIntent(wmHelper) testApp2.launchViaIntent(wmHelper) - startDisplayBounds = wmHelper.currentState.layerState .physicalDisplayBounds ?: error("Display not found") } - - eachRun { - tapl.launchedAppState.quickSwitchToPreviousAppSwipeLeft() - wmHelper.StateSyncBuilder() - .withNavBarStatusBarVisible() - .waitForAndVerify() - } } transitions { tapl.launchedAppState.quickSwitchToPreviousApp() diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/quickswitch/QuickSwitchBetweenTwoAppsForwardTest.kt b/tests/FlickerTests/src/com/android/server/wm/flicker/quickswitch/QuickSwitchBetweenTwoAppsForwardTest.kt index 5fb6584e1456f..9e43a97a62429 100644 --- a/tests/FlickerTests/src/com/android/server/wm/flicker/quickswitch/QuickSwitchBetweenTwoAppsForwardTest.kt +++ b/tests/FlickerTests/src/com/android/server/wm/flicker/quickswitch/QuickSwitchBetweenTwoAppsForwardTest.kt @@ -82,17 +82,16 @@ open class QuickSwitchBetweenTwoAppsForwardTest(private val testSpec: FlickerTes setup { test { tapl.setExpectedRotation(testSpec.startRotation) - testApp1.launchViaIntent(wmHelper) - testApp2.launchViaIntent(wmHelper) - - startDisplayBounds = wmHelper.currentState.layerState - .physicalDisplayBounds ?: error("Display not found") } eachRun { + testApp1.launchViaIntent(wmHelper) + testApp2.launchViaIntent(wmHelper) tapl.launchedAppState.quickSwitchToPreviousApp() wmHelper.StateSyncBuilder() .withNavBarStatusBarVisible() .waitForAndVerify() + startDisplayBounds = wmHelper.currentState.layerState + .physicalDisplayBounds ?: error("Display not found") } } transitions { From c40b0313ab43ed5696a1558e48e0e14e66d83bb3 Mon Sep 17 00:00:00 2001 From: Nataniel Borges Date: Fri, 10 Jun 2022 16:41:34 +0200 Subject: [PATCH 11/13] 11/ Support splash screen and app visibility changes occurring in any order Bug: 231110659 Test: atest FlickerTests Change-Id: Ie163a70fa203f57e5154608b390861c45c55ec0d --- .../wm/flicker/launch/OpenAppTransition.kt | 22 ++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/launch/OpenAppTransition.kt b/tests/FlickerTests/src/com/android/server/wm/flicker/launch/OpenAppTransition.kt index 67ad703f66592..9c97970b4b915 100644 --- a/tests/FlickerTests/src/com/android/server/wm/flicker/launch/OpenAppTransition.kt +++ b/tests/FlickerTests/src/com/android/server/wm/flicker/launch/OpenAppTransition.kt @@ -228,11 +228,23 @@ abstract class OpenAppTransition(protected val testSpec: FlickerTestParameter) { testSpec.assertWm { this.isAppWindowNotOnTop(testApp.component) .then() - .isAppWindowOnTop(FlickerComponentName.SNAPSHOT, isOptional = true) - .then() - .isAppWindowOnTop(FlickerComponentName.SPLASH_SCREEN, isOptional = true) - .then() - .isAppWindowOnTop(testApp.component) + .isAppWindowOnTop( + testApp.component + .or(FlickerComponentName.SNAPSHOT) + .or(FlickerComponentName.SPLASH_SCREEN) + ) + } + } + + /** + * Checks that [testApp] window is not on top at the start of the transition, and then becomes + * the top visible window until the end of the transition. + */ + @Presubmit + @Test + open fun appWindowIsTopWindowAtEnd() { + testSpec.assertWmEnd { + this.isAppWindowOnTop(testApp.component) } } } From 691eb84c9050c85c0bd36c94d41bcaa1318e5716 Mon Sep 17 00:00:00 2001 From: Nataniel Borges Date: Tue, 21 Jun 2022 09:52:59 +0000 Subject: [PATCH 12/13] 12/ Stabilize IME tests Fix setup and wait condition to ensure tests aren't flaky Bug: 236131465 Test: atest FlickerTests Change-Id: If0db5ae8b85de14f1e6b13eb5ef5b7b5d9ecdb1f --- .../server/wm/flicker/ime/CloseImeAutoOpenWindowToAppTest.kt | 4 ++-- .../server/wm/flicker/ime/OpenImeWindowToOverViewTest.kt | 5 ++--- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/ime/CloseImeAutoOpenWindowToAppTest.kt b/tests/FlickerTests/src/com/android/server/wm/flicker/ime/CloseImeAutoOpenWindowToAppTest.kt index 1d720f4b1965a..67d2067d1b06b 100644 --- a/tests/FlickerTests/src/com/android/server/wm/flicker/ime/CloseImeAutoOpenWindowToAppTest.kt +++ b/tests/FlickerTests/src/com/android/server/wm/flicker/ime/CloseImeAutoOpenWindowToAppTest.kt @@ -69,12 +69,12 @@ class CloseImeAutoOpenWindowToAppTest(private val testSpec: FlickerTestParameter fun buildFlicker(): FlickerBuilder { return FlickerBuilder(instrumentation).apply { setup { - test { + eachRun { testApp.launchViaIntent(wmHelper) } } teardown { - test { + eachRun { testApp.exit(wmHelper) } } diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/ime/OpenImeWindowToOverViewTest.kt b/tests/FlickerTests/src/com/android/server/wm/flicker/ime/OpenImeWindowToOverViewTest.kt index baf67dc470303..eedbd5d3dba8b 100644 --- a/tests/FlickerTests/src/com/android/server/wm/flicker/ime/OpenImeWindowToOverViewTest.kt +++ b/tests/FlickerTests/src/com/android/server/wm/flicker/ime/OpenImeWindowToOverViewTest.kt @@ -104,11 +104,10 @@ class OpenImeWindowToOverViewTest(private val testSpec: FlickerTestParameter) { */ private fun waitNavStatusBarVisibility(stateSync: WindowManagerStateHelper.StateSyncBuilder) { when { - testSpec.isLandscapeOrSeascapeAtStart && !testSpec.isGesturalNavigation -> - stateSync.add(statusBarInvisible) testSpec.isLandscapeOrSeascapeAtStart -> stateSync.add(statusBarInvisible) - .add(navBarInvisible) + else -> + stateSync.withNavBarStatusBarVisible() } } From 27a3799176f920b6fb32f51ac43a937d9a12555c Mon Sep 17 00:00:00 2001 From: Nataniel Borges Date: Thu, 23 Jun 2022 17:44:43 +0000 Subject: [PATCH 13/13] 13/ Compatibilize shell tests with WMHelper.StateSyncBuilder changes Bug: 236131465 Test: atest WMShellFlickerTests Change-Id: Ic65bffa8063409d0b41ae7ab9427f35f4ae15530 --- .../shell/flicker/bubble/BaseBubbleScreen.kt | 6 +-- .../bubble/LaunchBubbleFromLockScreen.kt | 15 ++++---- .../shell/flicker/helpers/AppPairsHelper.kt | 36 +----------------- .../wm/shell/flicker/helpers/BaseAppHelper.kt | 2 +- .../wm/shell/flicker/helpers/ImeAppHelper.kt | 32 +++++----------- .../wm/shell/flicker/helpers/PipAppHelper.kt | 37 ++++++++++++------- .../pip/EnterPipOnUserLeaveHintTest.kt | 4 +- .../wm/shell/flicker/pip/EnterPipTest.kt | 10 ++--- .../pip/EnterPipToOtherOrientationTest.kt | 12 +++--- .../wm/shell/flicker/pip/ExitPipTransition.kt | 8 ++-- .../pip/ExitPipViaExpandButtonClickTest.kt | 6 ++- .../shell/flicker/pip/ExitPipViaIntentTest.kt | 6 ++- .../flicker/pip/ExitPipWithSwipeDownTest.kt | 13 ++++--- .../flicker/pip/ExpandPipOnDoubleClickTest.kt | 6 +-- .../wm/shell/flicker/pip/PipTransition.kt | 6 +-- .../SetRequestedOrientationWhilePinnedTest.kt | 23 +++++++----- .../wm/shell/flicker/pip/tv/TvPipBasicTest.kt | 4 +- .../wm/shell/flicker/pip/tv/TvPipMenuTests.kt | 4 +- .../flicker/pip/tv/TvPipNotificationTests.kt | 14 +++---- .../wm/shell/flicker/pip/tv/TvPipTestBase.kt | 4 +- .../EnterSplitScreenByDragFromAllApps.kt | 5 +-- .../wm/flicker/ime/ReOpenImeWindowTest.kt | 2 +- 22 files changed, 115 insertions(+), 140 deletions(-) diff --git a/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/bubble/BaseBubbleScreen.kt b/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/bubble/BaseBubbleScreen.kt index 278ba9b0f4db3..5b073038059c6 100644 --- a/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/bubble/BaseBubbleScreen.kt +++ b/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/bubble/BaseBubbleScreen.kt @@ -48,7 +48,7 @@ abstract class BaseBubbleScreen(protected val testSpec: FlickerTestParameter) { ServiceManager.getService(Context.NOTIFICATION_SERVICE)) protected val uid = context.packageManager.getApplicationInfo( - testApp.component.packageName, 0).uid + testApp.`package`, 0).uid protected abstract val transition: FlickerBuilder.() -> Unit @@ -59,7 +59,7 @@ abstract class BaseBubbleScreen(protected val testSpec: FlickerTestParameter) { return { setup { test { - notifyManager.setBubblesAllowed(testApp.component.packageName, + notifyManager.setBubblesAllowed(testApp.`package`, uid, NotificationManager.BUBBLE_PREFERENCE_ALL) testApp.launchViaIntent(wmHelper) waitAndGetAddBubbleBtn() @@ -69,7 +69,7 @@ abstract class BaseBubbleScreen(protected val testSpec: FlickerTestParameter) { teardown { test { - notifyManager.setBubblesAllowed(testApp.component.packageName, + notifyManager.setBubblesAllowed(testApp.`package`, uid, NotificationManager.BUBBLE_PREFERENCE_NONE) testApp.exit() } diff --git a/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/bubble/LaunchBubbleFromLockScreen.kt b/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/bubble/LaunchBubbleFromLockScreen.kt index 27d65648dbb7c..e2b19ea22b3be 100644 --- a/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/bubble/LaunchBubbleFromLockScreen.kt +++ b/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/bubble/LaunchBubbleFromLockScreen.kt @@ -16,10 +16,10 @@ package com.android.wm.shell.flicker.bubble +import android.platform.test.annotations.FlakyTest import android.platform.test.annotations.Presubmit import android.view.WindowInsets import android.view.WindowManager -import android.platform.test.annotations.FlakyTest import androidx.test.filters.RequiresDevice import androidx.test.uiautomator.By import androidx.test.uiautomator.Until @@ -29,8 +29,8 @@ import com.android.server.wm.flicker.annotation.Group4 import com.android.server.wm.flicker.dsl.FlickerBuilder import com.android.server.wm.flicker.helpers.isShellTransitionsEnabled import org.junit.Assume -import org.junit.runner.RunWith import org.junit.Test +import org.junit.runner.RunWith import org.junit.runners.Parameterized /** @@ -54,20 +54,21 @@ class LaunchBubbleFromLockScreen(testSpec: FlickerTestParameter) : BaseBubbleScr val addBubbleBtn = waitAndGetAddBubbleBtn() addBubbleBtn?.click() ?: error("Bubble widget not found") device.sleep() - wmHelper.waitFor("noAppWindowsOnTop") { - it.wmState.topVisibleAppWindow.isEmpty() - } + wmHelper.StateSyncBuilder() + .withoutTopVisibleAppWindows() + .waitForAndVerify() device.wakeUp() } } transitions { // Swipe & wait for the notification shade to expand so all can be seen val wm = context.getSystemService(WindowManager::class.java) - val metricInsets = wm.getCurrentWindowMetrics().windowInsets + ?: error("Unable to obtain WM service") + val metricInsets = wm.currentWindowMetrics.windowInsets val insets = metricInsets.getInsetsIgnoringVisibility( WindowInsets.Type.statusBars() or WindowInsets.Type.displayCutout()) - device.swipe(100, insets.top + 100, 100, device.getDisplayHeight() / 2, 4) + device.swipe(100, insets.top + 100, 100, device.displayHeight / 2, 4) device.waitForIdle(2000) instrumentation.uiAutomation.syncInputTransactions() diff --git a/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/helpers/AppPairsHelper.kt b/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/helpers/AppPairsHelper.kt index 41cd31aabf05c..f4305ed198244 100644 --- a/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/helpers/AppPairsHelper.kt +++ b/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/helpers/AppPairsHelper.kt @@ -17,44 +17,10 @@ package com.android.wm.shell.flicker.helpers import android.app.Instrumentation -import com.android.server.wm.flicker.Flicker -import com.android.server.wm.flicker.helpers.WindowUtils import com.android.server.wm.traces.common.FlickerComponentName -import com.android.server.wm.traces.common.region.Region class AppPairsHelper( instrumentation: Instrumentation, activityLabel: String, component: FlickerComponentName -) : BaseAppHelper(instrumentation, activityLabel, component) { - fun getPrimaryBounds(dividerBounds: Region): Region { - val primaryAppBounds = Region.from(0, 0, dividerBounds.bounds.right, - dividerBounds.bounds.bottom + WindowUtils.dockedStackDividerInset) - return primaryAppBounds - } - - fun getSecondaryBounds(dividerBounds: Region): Region { - val displayBounds = WindowUtils.displayBounds - val secondaryAppBounds = Region.from(0, - dividerBounds.bounds.bottom - WindowUtils.dockedStackDividerInset, - displayBounds.right, displayBounds.bottom - WindowUtils.navigationBarFrameHeight) - return secondaryAppBounds - } - - companion object { - const val TEST_REPETITIONS = 1 - const val TIMEOUT_MS = 3_000L - - fun Flicker.waitAppsShown(app1: SplitScreenHelper?, app2: SplitScreenHelper?) { - wmHelper.waitFor("primaryAndSecondaryAppsVisible") { dump -> - val primaryAppVisible = app1?.let { - dump.wmState.isWindowSurfaceShown(app1.defaultWindowName) - } ?: false - val secondaryAppVisible = app2?.let { - dump.wmState.isWindowSurfaceShown(app2.defaultWindowName) - } ?: false - primaryAppVisible && secondaryAppVisible - } - } - } -} +) : BaseAppHelper(instrumentation, activityLabel, component) diff --git a/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/helpers/BaseAppHelper.kt b/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/helpers/BaseAppHelper.kt index 3dd9e05729477..912ba67285f74 100644 --- a/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/helpers/BaseAppHelper.kt +++ b/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/helpers/BaseAppHelper.kt @@ -40,7 +40,7 @@ abstract class BaseAppHelper( component, LauncherStrategyFactory.getInstance(instrumentation).launcherStrategy ) { - private val appSelector = By.pkg(component.packageName).depth(0) + private val appSelector = By.pkg(`package`).depth(0) protected val isTelevision: Boolean get() = context.packageManager.run { diff --git a/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/helpers/ImeAppHelper.kt b/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/helpers/ImeAppHelper.kt index cc5b9f9eb26d5..2e690de666f4c 100644 --- a/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/helpers/ImeAppHelper.kt +++ b/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/helpers/ImeAppHelper.kt @@ -18,7 +18,6 @@ package com.android.wm.shell.flicker.helpers import android.app.Instrumentation import androidx.test.uiautomator.By -import androidx.test.uiautomator.UiDevice import androidx.test.uiautomator.Until import com.android.server.wm.flicker.helpers.FIND_TIMEOUT import com.android.server.wm.traces.parser.toFlickerComponent @@ -35,8 +34,7 @@ open class ImeAppHelper(instrumentation: Instrumentation) : BaseAppHelper( * * @param wmHelper Helper used to wait for WindowManager states */ - @JvmOverloads - open fun openIME(wmHelper: WindowManagerStateHelper? = null) { + open fun openIME(wmHelper: WindowManagerStateHelper) { if (!isTelevision) { val editText = uiDevice.wait( Until.findObject(By.res(getPackage(), "plain_text_input")), @@ -47,7 +45,9 @@ open class ImeAppHelper(instrumentation: Instrumentation) : BaseAppHelper( "was left in an unknown state (e.g. in split screen)" } editText.click() - waitAndAssertIMEShown(uiDevice, wmHelper) + wmHelper.StateSyncBuilder() + .withImeShown() + .waitForAndVerify() } else { // If we do the same thing as above - editText.click() - on TV, that's going to force TV // into the touch mode. We really don't want that. @@ -55,36 +55,22 @@ open class ImeAppHelper(instrumentation: Instrumentation) : BaseAppHelper( } } - protected fun waitAndAssertIMEShown( - device: UiDevice, - wmHelper: WindowManagerStateHelper? = null - ) { - if (wmHelper == null) { - device.waitForIdle() - } else { - wmHelper.waitImeShown() - } - } - /** * Opens the IME and wait for it to be gone * * @param wmHelper Helper used to wait for WindowManager states */ - @JvmOverloads - open fun closeIME(wmHelper: WindowManagerStateHelper? = null) { + open fun closeIME(wmHelper: WindowManagerStateHelper) { if (!isTelevision) { uiDevice.pressBack() // Using only the AccessibilityInfo it is not possible to identify if the IME is active - if (wmHelper == null) { - uiDevice.waitForIdle() - } else { - wmHelper.waitImeGone() - } + wmHelper.StateSyncBuilder() + .withImeGone() + .waitForAndVerify() } else { // While pressing the back button should close the IME on TV as well, it may also lead // to the app closing. So let's instead just ask the app to close the IME. launchViaIntent(action = Components.ImeActivity.ACTION_CLOSE_IME) } } -} \ No newline at end of file +} diff --git a/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/helpers/PipAppHelper.kt b/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/helpers/PipAppHelper.kt index f73d191b19171..216445fe93563 100644 --- a/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/helpers/PipAppHelper.kt +++ b/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/helpers/PipAppHelper.kt @@ -19,13 +19,13 @@ package com.android.wm.shell.flicker.helpers import android.app.Instrumentation import android.media.session.MediaController import android.media.session.MediaSessionManager -import android.os.SystemClock import androidx.test.uiautomator.By import androidx.test.uiautomator.BySelector import androidx.test.uiautomator.Until import com.android.server.wm.flicker.helpers.FIND_TIMEOUT import com.android.server.wm.flicker.helpers.SYSTEMUI_PACKAGE import com.android.server.wm.traces.common.Rect +import com.android.server.wm.traces.common.WindowManagerConditionsFactory import com.android.server.wm.traces.parser.toFlickerComponent import com.android.server.wm.traces.parser.windowmanager.WindowManagerStateHelper import com.android.wm.shell.flicker.pip.tv.closeTvPipWindow @@ -43,11 +43,11 @@ class PipAppHelper(instrumentation: Instrumentation) : BaseAppHelper( private val mediaController: MediaController? get() = mediaSessionManager.getActiveSessions(null).firstOrNull { - it.packageName == component.packageName + it.packageName == `package` } fun clickObject(resId: String) { - val selector = By.res(component.packageName, resId) + val selector = By.res(`package`, resId) val obj = uiDevice.findObject(selector) ?: error("Could not find `$resId` object") if (!isTelevision) { @@ -71,8 +71,12 @@ class PipAppHelper(instrumentation: Instrumentation) : BaseAppHelper( ) { launchViaIntentAndWaitShown( wmHelper, expectedWindowName, action, stringExtras, - waitConditions = arrayOf(WindowManagerStateHelper.pipShownCondition) + waitConditions = arrayOf(WindowManagerConditionsFactory.hasPipWindow()) ) + + wmHelper.StateSyncBuilder() + .withPipShown() + .waitForAndVerify() } /** @@ -95,12 +99,13 @@ class PipAppHelper(instrumentation: Instrumentation) : BaseAppHelper( return false } - @JvmOverloads - fun clickEnterPipButton(wmHelper: WindowManagerStateHelper? = null) { + fun clickEnterPipButton(wmHelper: WindowManagerStateHelper) { clickObject(ENTER_PIP_BUTTON_ID) // Wait on WMHelper or simply wait for 3 seconds - wmHelper?.waitPipShown() ?: SystemClock.sleep(3_000) + wmHelper.StateSyncBuilder() + .withPipShown() + .waitForAndVerify() // when entering pip, the dismiss button is visible at the start. to ensure the pip // animation is complete, wait until the pip dismiss button is no longer visible. // b/176822698: dismiss-only state will be removed in the future @@ -116,7 +121,7 @@ class PipAppHelper(instrumentation: Instrumentation) : BaseAppHelper( } fun checkWithCustomActionsCheckbox() = uiDevice - .findObject(By.res(component.packageName, WITH_CUSTOM_ACTIONS_BUTTON_ID)) + .findObject(By.res(`package`, WITH_CUSTOM_ACTIONS_BUTTON_ID)) ?.takeIf { it.isCheckable } ?.apply { if (!isChecked) clickObject(WITH_CUSTOM_ACTIONS_BUTTON_ID) } ?: error("'With custom actions' checkbox not found") @@ -166,8 +171,10 @@ class PipAppHelper(instrumentation: Instrumentation) : BaseAppHelper( } // Wait for animation to complete. - wmHelper.waitPipGone() - wmHelper.waitForHomeActivityVisible() + wmHelper.StateSyncBuilder() + .withPipGone() + .withHomeActivityVisible() + .waitForAndVerify() } /** @@ -183,8 +190,10 @@ class PipAppHelper(instrumentation: Instrumentation) : BaseAppHelper( ?: error("PIP window expand button not found") val expandButtonBounds = expandPipObject.visibleBounds uiDevice.click(expandButtonBounds.centerX(), expandButtonBounds.centerY()) - wmHelper.waitPipGone() - wmHelper.waitForAppTransitionIdle() + wmHelper.StateSyncBuilder() + .withPipGone() + .withFullScreenApp(component) + .waitForAndVerify() } /** @@ -194,7 +203,9 @@ class PipAppHelper(instrumentation: Instrumentation) : BaseAppHelper( val windowRect = getWindowRect(wmHelper) uiDevice.click(windowRect.centerX(), windowRect.centerY()) uiDevice.click(windowRect.centerX(), windowRect.centerY()) - wmHelper.waitForAppTransitionIdle() + wmHelper.StateSyncBuilder() + .withAppTransitionIdle() + .waitForAndVerify() } companion object { diff --git a/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/pip/EnterPipOnUserLeaveHintTest.kt b/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/pip/EnterPipOnUserLeaveHintTest.kt index e7d641e9c66e6..cb84fc441f752 100644 --- a/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/pip/EnterPipOnUserLeaveHintTest.kt +++ b/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/pip/EnterPipOnUserLeaveHintTest.kt @@ -17,7 +17,6 @@ package com.android.wm.shell.flicker.pip import androidx.test.filters.RequiresDevice -import com.android.launcher3.tapl.LauncherInstrumentation import com.android.server.wm.flicker.FlickerParametersRunnerFactory import com.android.server.wm.flicker.FlickerTestParameter import com.android.server.wm.flicker.annotation.Group3 @@ -51,7 +50,6 @@ import org.junit.runners.Parameterized @FixMethodOrder(MethodSorters.NAME_ASCENDING) @Group3 class EnterPipOnUserLeaveHintTest(testSpec: FlickerTestParameter) : EnterPipTest(testSpec) { - protected val taplInstrumentation = LauncherInstrumentation() /** * Defines the transition used to run the test */ @@ -70,7 +68,7 @@ class EnterPipOnUserLeaveHintTest(testSpec: FlickerTestParameter) : EnterPipTest } } transitions { - taplInstrumentation.goHome() + tapl.goHome() } } diff --git a/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/pip/EnterPipTest.kt b/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/pip/EnterPipTest.kt index eb318fb256c99..c18c8ce345fc3 100644 --- a/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/pip/EnterPipTest.kt +++ b/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/pip/EnterPipTest.kt @@ -16,16 +16,16 @@ package com.android.wm.shell.flicker.pip +import android.platform.test.annotations.FlakyTest import android.platform.test.annotations.Presubmit import android.view.Surface -import android.platform.test.annotations.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.LAUNCHER_COMPONENT import com.android.server.wm.flicker.annotation.Group3 import com.android.server.wm.flicker.dsl.FlickerBuilder +import com.android.server.wm.traces.common.FlickerComponentName.Companion.LAUNCHER import org.junit.FixMethodOrder import org.junit.Test import org.junit.runner.RunWith @@ -157,15 +157,15 @@ open class EnterPipTest(testSpec: FlickerTestParameter) : PipTransition(testSpec } /** - * Checks [LAUNCHER_COMPONENT] layer remains visible throughout the animation + * Checks [LAUNCHER] layer remains visible throughout the animation */ @Presubmit @Test fun launcherLayerBecomesVisible() { testSpec.assertLayers { - isInvisible(LAUNCHER_COMPONENT) + isInvisible(LAUNCHER) .then() - .isVisible(LAUNCHER_COMPONENT) + .isVisible(LAUNCHER) } } diff --git a/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/pip/EnterPipToOtherOrientationTest.kt b/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/pip/EnterPipToOtherOrientationTest.kt index 75481f2199c26..0333577b0d2ac 100644 --- a/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/pip/EnterPipToOtherOrientationTest.kt +++ b/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/pip/EnterPipToOtherOrientationTest.kt @@ -16,9 +16,9 @@ package com.android.wm.shell.flicker.pip +import android.platform.test.annotations.FlakyTest import android.platform.test.annotations.Presubmit import android.view.Surface -import android.platform.test.annotations.FlakyTest import androidx.test.filters.RequiresDevice import com.android.server.wm.flicker.FlickerParametersRunnerFactory import com.android.server.wm.flicker.FlickerTestParameter @@ -33,8 +33,8 @@ import com.android.server.wm.traces.common.FlickerComponentName import com.android.wm.shell.flicker.helpers.FixedAppHelper import com.android.wm.shell.flicker.pip.PipTransition.BroadcastActionTrigger.Companion.ORIENTATION_LANDSCAPE import com.android.wm.shell.flicker.pip.PipTransition.BroadcastActionTrigger.Companion.ORIENTATION_PORTRAIT -import com.android.wm.shell.flicker.testapp.Components.PipActivity.ACTION_ENTER_PIP import com.android.wm.shell.flicker.testapp.Components.FixedActivity.EXTRA_FIXED_ORIENTATION +import com.android.wm.shell.flicker.testapp.Components.PipActivity.ACTION_ENTER_PIP import org.junit.FixMethodOrder import org.junit.Test import org.junit.runner.RunWith @@ -98,10 +98,12 @@ class EnterPipToOtherOrientationTest( // Enter PiP, and assert that the PiP is within bounds now that the device is back // in portrait broadcastActionTrigger.doAction(ACTION_ENTER_PIP) - wmHelper.waitPipShown() - wmHelper.waitForAppTransitionIdle() // during rotation the status bar becomes invisible and reappears at the end - wmHelper.waitForNavBarStatusBarVisible() + wmHelper.StateSyncBuilder() + .withPipShown() + .withAppTransitionIdle() + .withNavBarStatusBarVisible() + .waitForAndVerify() } } diff --git a/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/pip/ExitPipTransition.kt b/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/pip/ExitPipTransition.kt index 0b4bc761838dc..47215b9fb8831 100644 --- a/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/pip/ExitPipTransition.kt +++ b/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/pip/ExitPipTransition.kt @@ -19,10 +19,10 @@ package com.android.wm.shell.flicker.pip import android.platform.test.annotations.Presubmit import android.view.Surface import com.android.server.wm.flicker.FlickerTestParameter -import com.android.server.wm.flicker.LAUNCHER_COMPONENT import com.android.server.wm.flicker.dsl.FlickerBuilder import com.android.server.wm.flicker.helpers.isShellTransitionsEnabled import com.android.server.wm.flicker.helpers.setRotation +import com.android.server.wm.traces.common.FlickerComponentName.Companion.LAUNCHER import org.junit.Test /** @@ -78,7 +78,7 @@ abstract class ExitPipTransition(testSpec: FlickerTestParameter) : PipTransition } /** - * Checks that [pipApp] and [LAUNCHER_COMPONENT] layers are visible at the start + * Checks that [pipApp] and [LAUNCHER] layers are visible at the start * of the transition. Then [pipApp] layer becomes invisible, and remains invisible * until the end of the transition */ @@ -87,10 +87,10 @@ abstract class ExitPipTransition(testSpec: FlickerTestParameter) : PipTransition open fun pipLayerBecomesInvisible() { testSpec.assertLayers { this.isVisible(pipApp.component) - .isVisible(LAUNCHER_COMPONENT) + .isVisible(LAUNCHER) .then() .isInvisible(pipApp.component) - .isVisible(LAUNCHER_COMPONENT) + .isVisible(LAUNCHER) } } } diff --git a/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/pip/ExitPipViaExpandButtonClickTest.kt b/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/pip/ExitPipViaExpandButtonClickTest.kt index 46424a7684082..32022ad5f018e 100644 --- a/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/pip/ExitPipViaExpandButtonClickTest.kt +++ b/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/pip/ExitPipViaExpandButtonClickTest.kt @@ -16,8 +16,8 @@ package com.android.wm.shell.flicker.pip -import android.view.Surface import android.platform.test.annotations.FlakyTest +import android.view.Surface import androidx.test.filters.RequiresDevice import com.android.server.wm.flicker.FlickerParametersRunnerFactory import com.android.server.wm.flicker.FlickerTestParameter @@ -74,7 +74,9 @@ class ExitPipViaExpandButtonClickTest( // This will bring PipApp to fullscreen pipApp.expandPipWindowToApp(wmHelper) // Wait until the other app is no longer visible - wmHelper.waitForWindowSurfaceDisappeared(testApp.component) + wmHelper.StateSyncBuilder() + .withWindowSurfaceDisappeared(testApp.component) + .waitForAndVerify() } } diff --git a/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/pip/ExitPipViaIntentTest.kt b/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/pip/ExitPipViaIntentTest.kt index 18711d8fd3c66..3fbea488d091c 100644 --- a/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/pip/ExitPipViaIntentTest.kt +++ b/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/pip/ExitPipViaIntentTest.kt @@ -16,9 +16,9 @@ package com.android.wm.shell.flicker.pip +import android.platform.test.annotations.FlakyTest import android.platform.test.annotations.Presubmit import android.view.Surface -import android.platform.test.annotations.FlakyTest import androidx.test.filters.RequiresDevice import com.android.server.wm.flicker.FlickerParametersRunnerFactory import com.android.server.wm.flicker.FlickerTestParameter @@ -73,7 +73,9 @@ class ExitPipViaIntentTest(testSpec: FlickerTestParameter) : ExitPipToAppTransit // This will bring PipApp to fullscreen pipApp.exitPipToFullScreenViaIntent(wmHelper) // Wait until the other app is no longer visible - wmHelper.waitForWindowSurfaceDisappeared(testApp.component) + wmHelper.StateSyncBuilder() + .withWindowSurfaceDisappeared(testApp.component) + .waitForAndVerify() } } diff --git a/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/pip/ExitPipWithSwipeDownTest.kt b/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/pip/ExitPipWithSwipeDownTest.kt index 9aae7f3242696..210b1968b2da4 100644 --- a/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/pip/ExitPipWithSwipeDownTest.kt +++ b/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/pip/ExitPipWithSwipeDownTest.kt @@ -16,9 +16,9 @@ package com.android.wm.shell.flicker.pip +import android.platform.test.annotations.FlakyTest import android.platform.test.annotations.Presubmit import android.view.Surface -import android.platform.test.annotations.FlakyTest import androidx.test.filters.RequiresDevice import com.android.server.wm.flicker.FlickerParametersRunnerFactory import com.android.server.wm.flicker.FlickerTestParameter @@ -64,9 +64,12 @@ class ExitPipWithSwipeDownTest(testSpec: FlickerTestParameter) : ExitPipTransiti val pipCenterY = pipRegion.centerY() val displayCenterX = device.displayWidth / 2 device.swipe(pipCenterX, pipCenterY, displayCenterX, device.displayHeight, 10) - wmHelper.waitPipGone() - wmHelper.waitForWindowSurfaceDisappeared(pipApp.component) - wmHelper.waitForAppTransitionIdle() + // Wait until the other app is no longer visible + wmHelper.StateSyncBuilder() + .withPipGone() + .withWindowSurfaceDisappeared(pipApp.component) + .withAppTransitionIdle() + .waitForAndVerify() } } @@ -108,4 +111,4 @@ class ExitPipWithSwipeDownTest(testSpec: FlickerTestParameter) : ExitPipTransiti repetitions = 3) } } -} \ No newline at end of file +} diff --git a/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/pip/ExpandPipOnDoubleClickTest.kt b/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/pip/ExpandPipOnDoubleClickTest.kt index ffbb89ee8f6b4..dc1fdde18d1b6 100644 --- a/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/pip/ExpandPipOnDoubleClickTest.kt +++ b/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/pip/ExpandPipOnDoubleClickTest.kt @@ -23,9 +23,9 @@ 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.LAUNCHER_COMPONENT import com.android.server.wm.flicker.annotation.Group3 import com.android.server.wm.flicker.dsl.FlickerBuilder +import com.android.server.wm.traces.common.FlickerComponentName.Companion.LAUNCHER import org.junit.FixMethodOrder import org.junit.Test import org.junit.runner.RunWith @@ -147,13 +147,13 @@ class ExpandPipOnDoubleClickTest(testSpec: FlickerTestParameter) : PipTransition } /** - * Checks [pipApp] layer remains visible throughout the animation + * Checks [LAUNCHER] layer remains visible throughout the animation */ @Presubmit @Test fun launcherIsAlwaysVisible() { testSpec.assertLayers { - isVisible(LAUNCHER_COMPONENT) + isVisible(LAUNCHER) } } diff --git a/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/pip/PipTransition.kt b/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/pip/PipTransition.kt index 8d542c8ec9e61..fe5dd8b83cfb9 100644 --- a/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/pip/PipTransition.kt +++ b/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/pip/PipTransition.kt @@ -21,6 +21,7 @@ import android.content.Intent import android.platform.test.annotations.Presubmit import android.view.Surface import androidx.test.platform.app.InstrumentationRegistry +import com.android.launcher3.tapl.LauncherInstrumentation import com.android.server.wm.flicker.FlickerBuilderProvider import com.android.server.wm.flicker.FlickerTestParameter import com.android.server.wm.flicker.dsl.FlickerBuilder @@ -41,6 +42,7 @@ import org.junit.Test abstract class PipTransition(protected val testSpec: FlickerTestParameter) { protected val instrumentation: Instrumentation = InstrumentationRegistry.getInstrumentation() + protected val tapl = LauncherInstrumentation() protected val pipApp = PipAppHelper(instrumentation) protected val displayBounds = WindowUtils.getDisplayBounds(testSpec.startRotation) protected val broadcastActionTrigger = BroadcastActionTrigger(instrumentation) @@ -117,13 +119,11 @@ abstract class PipTransition(protected val testSpec: FlickerTestParameter) { test { if (!eachRun) { pipApp.launchViaIntentAndWaitForPip(wmHelper, stringExtras = stringExtras) - wmHelper.waitPipShown() } } eachRun { if (eachRun) { pipApp.launchViaIntentAndWaitForPip(wmHelper, stringExtras = stringExtras) - wmHelper.waitPipShown() } } } @@ -171,4 +171,4 @@ abstract class PipTransition(protected val testSpec: FlickerTestParameter) { @Presubmit @Test open fun entireScreenCovered() = testSpec.entireScreenCovered() -} \ No newline at end of file +} diff --git a/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/pip/SetRequestedOrientationWhilePinnedTest.kt b/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/pip/SetRequestedOrientationWhilePinnedTest.kt index e44cf3866a094..83d3fe2609280 100644 --- a/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/pip/SetRequestedOrientationWhilePinnedTest.kt +++ b/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/pip/SetRequestedOrientationWhilePinnedTest.kt @@ -16,18 +16,18 @@ package com.android.wm.shell.flicker.pip +import android.platform.test.annotations.FlakyTest import android.platform.test.annotations.Presubmit import android.view.Surface -import android.platform.test.annotations.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.Group4 import com.android.server.wm.flicker.dsl.FlickerBuilder +import com.android.server.wm.flicker.helpers.WindowUtils import com.android.server.wm.flicker.helpers.setRotation import com.android.server.wm.flicker.helpers.wakeUpAndGoToHomeScreen -import com.android.server.wm.flicker.helpers.WindowUtils import com.android.server.wm.flicker.rules.RemoveAllTasksButHomeRule.Companion.removeAllTasksButHome import com.android.wm.shell.flicker.pip.PipTransition.BroadcastActionTrigger.Companion.ORIENTATION_LANDSCAPE import com.android.wm.shell.flicker.testapp.Components @@ -66,11 +66,12 @@ open class SetRequestedOrientationWhilePinnedTest( EXTRA_FIXED_ORIENTATION to ORIENTATION_LANDSCAPE.toString())) // Enter PiP. broadcastActionTrigger.doAction(Components.PipActivity.ACTION_ENTER_PIP) - wmHelper.waitPipShown() - wmHelper.waitForRotation(Surface.ROTATION_0) - wmHelper.waitForAppTransitionIdle() // System bar may fade out during fixed rotation. - wmHelper.waitForNavBarStatusBarVisible() + wmHelper.StateSyncBuilder() + .withPipShown() + .withRotation(Surface.ROTATION_0) + .withNavBarStatusBarVisible() + .waitForAndVerify() } } teardown { @@ -85,11 +86,13 @@ open class SetRequestedOrientationWhilePinnedTest( transitions { // Launch the activity back into fullscreen and ensure that it is now in landscape pipApp.launchViaIntent(wmHelper) - wmHelper.waitForFullScreenApp(pipApp.component) - wmHelper.waitForRotation(Surface.ROTATION_90) - wmHelper.waitForAppTransitionIdle() // System bar may fade out during fixed rotation. - wmHelper.waitForNavBarStatusBarVisible() + wmHelper.StateSyncBuilder() + .withFullScreenApp(pipApp.component) + .withRotation(Surface.ROTATION_90) + .withAppTransitionIdle() + .withNavBarStatusBarVisible() + .waitForAndVerify() } } diff --git a/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/pip/tv/TvPipBasicTest.kt b/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/pip/tv/TvPipBasicTest.kt index 49094e609fbc4..31fb16ffbd3e0 100644 --- a/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/pip/tv/TvPipBasicTest.kt +++ b/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/pip/tv/TvPipBasicTest.kt @@ -43,7 +43,7 @@ class TvPipBasicTest( // Set up ratio and enter Pip testApp.clickObject(radioButtonId) - testApp.clickEnterPipButton() + testApp.clickEnterPipButton(wmHelper) val actualRatio: Float = testApp.ui?.visibleBounds?.ratio ?: fail("Application UI not found") @@ -84,4 +84,4 @@ class TvPipBasicTest( ) } } -} \ No newline at end of file +} diff --git a/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/pip/tv/TvPipMenuTests.kt b/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/pip/tv/TvPipMenuTests.kt index 061218a015e44..4be19d61278be 100644 --- a/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/pip/tv/TvPipMenuTests.kt +++ b/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/pip/tv/TvPipMenuTests.kt @@ -244,7 +244,7 @@ class TvPipMenuTests : TvPipTestBase() { } private fun enterPip_openMenu_assertShown(): UiObject2 { - testApp.clickEnterPipButton() + testApp.clickEnterPipButton(wmHelper) // Pressing the Window key should bring up Pip menu uiDevice.pressWindowKey() return uiDevice.waitForTvPipMenu() ?: fail("Pip menu should have been shown") @@ -256,4 +256,4 @@ class TvPipMenuTests : TvPipTestBase() { uiDevice.findTvPipMenuFullscreenButton() ?: fail("\"Full screen\" button should be shown in Pip menu") } -} \ No newline at end of file +} diff --git a/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/pip/tv/TvPipNotificationTests.kt b/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/pip/tv/TvPipNotificationTests.kt index bcf38d340867f..134e97bd46e7c 100644 --- a/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/pip/tv/TvPipNotificationTests.kt +++ b/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/pip/tv/TvPipNotificationTests.kt @@ -56,7 +56,7 @@ class TvPipNotificationTests : TvPipTestBase() { @Test fun pipNotification_postedAndDismissed() { testApp.launchViaIntent() - testApp.clickEnterPipButton() + testApp.clickEnterPipButton(wmHelper) assertNotNull("Pip notification should have been posted", waitForNotificationToAppear { it.isPipNotificationWithTitle(testApp.appName) }) @@ -70,7 +70,7 @@ class TvPipNotificationTests : TvPipTestBase() { @Test fun pipNotification_closeIntent() { testApp.launchViaIntent() - testApp.clickEnterPipButton() + testApp.clickEnterPipButton(wmHelper) val notification: StatusBarNotification = waitForNotificationToAppear { it.isPipNotificationWithTitle(testApp.appName) @@ -87,8 +87,8 @@ class TvPipNotificationTests : TvPipTestBase() { @Test fun pipNotification_menuIntent() { - testApp.launchViaIntent() - testApp.clickEnterPipButton() + testApp.launchViaIntent(wmHelper) + testApp.clickEnterPipButton(wmHelper) val notification: StatusBarNotification = waitForNotificationToAppear { it.isPipNotificationWithTitle(testApp.appName) @@ -106,10 +106,10 @@ class TvPipNotificationTests : TvPipTestBase() { @Test fun pipNotification_mediaSessionTitle_isDisplayed() { - testApp.launchViaIntent() + testApp.launchViaIntent(wmHelper) // Start media session and to PiP testApp.clickStartMediaSessionButton() - testApp.clickEnterPipButton() + testApp.clickEnterPipButton(wmHelper) // Wait for the correct notification to show up... waitForNotificationToAppear { @@ -170,4 +170,4 @@ private val StatusBarNotification.deleteIntent: PendingIntent? get() = tvExtensions?.getParcelable("delete_intent") private fun StatusBarNotification.isPipNotificationWithTitle(expectedTitle: String): Boolean = - tag == "TvPip" && title == expectedTitle \ No newline at end of file + tag == "TvPip" && title == expectedTitle diff --git a/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/pip/tv/TvPipTestBase.kt b/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/pip/tv/TvPipTestBase.kt index 9c3b0fa183b68..a97994e7d6c36 100644 --- a/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/pip/tv/TvPipTestBase.kt +++ b/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/pip/tv/TvPipTestBase.kt @@ -23,6 +23,7 @@ import android.os.SystemClock import android.view.Surface.ROTATION_0 import android.view.Surface.rotationToString import com.android.server.wm.flicker.helpers.wakeUpAndGoToHomeScreen +import com.android.server.wm.traces.parser.windowmanager.WindowManagerStateHelper import com.android.wm.shell.flicker.SYSTEM_UI_PACKAGE_NAME import com.android.wm.shell.flicker.pip.PipTestBase import org.junit.After @@ -33,6 +34,7 @@ import org.junit.Before abstract class TvPipTestBase : PipTestBase(rotationToString(ROTATION_0), ROTATION_0) { private val systemUiProcessObserver = SystemUiProcessObserver() + protected val wmHelper = WindowManagerStateHelper() @Before final override fun televisionSetUp() { @@ -88,4 +90,4 @@ abstract class TvPipTestBase : PipTestBase(rotationToString(ROTATION_0), ROTATIO companion object { private const val AFTER_TEXT_PROCESS_CHECK_DELAY = 1_000L // 1 sec } -} \ No newline at end of file +} 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 702710caded77..cfba3387825c5 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 @@ -56,7 +56,7 @@ class EnterSplitScreenByDragFromAllApps( ) : SplitScreenBase(testSpec) { @Before - open fun before() { + fun before() { Assume.assumeTrue(taplInstrumentation.isTablet) } @@ -73,8 +73,7 @@ class EnterSplitScreenByDragFromAllApps( taplInstrumentation.launchedAppState.taskbar .openAllApps() .getAppIcon(secondaryApp.appName) - .dragToSplitscreen(secondaryApp.component.packageName, - primaryApp.component.packageName) + .dragToSplitscreen(secondaryApp.`package`, primaryApp.`package`) } } diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/ime/ReOpenImeWindowTest.kt b/tests/FlickerTests/src/com/android/server/wm/flicker/ime/ReOpenImeWindowTest.kt index b28e870112f4d..7d4724c48bbbc 100644 --- a/tests/FlickerTests/src/com/android/server/wm/flicker/ime/ReOpenImeWindowTest.kt +++ b/tests/FlickerTests/src/com/android/server/wm/flicker/ime/ReOpenImeWindowTest.kt @@ -77,11 +77,11 @@ open class ReOpenImeWindowTest(private val testSpec: FlickerTestParameter) { testApp.openIME(wmHelper) } eachRun { + this.setRotation(testSpec.startRotation) device.pressRecentApps() wmHelper.StateSyncBuilder() .withRecentsActivityVisible() .waitForAndVerify() - this.setRotation(testSpec.startRotation) } } transitions {