diff options
| author | 2020-12-21 12:31:02 +0000 | |
|---|---|---|
| committer | 2020-12-21 12:48:51 +0000 | |
| commit | 7c6db063bc71eb967e837bbd64ff8a70c29b0c75 (patch) | |
| tree | 84cb1049cd762a5342f6bd1362322e9cb94e36e0 | |
| parent | 026102b5c8cd659209bf6809c2005f4aacdda076 (diff) | |
Filter out WmShellFlickerTests that are not supported on TV
By default all new WmShellFlickerTests are enabled on TV even despite
the fact that most of them focus the features that are not supported on
TV, and never been run on TV devices prior to adding. Some examples are:
com.android.wm.shell.flicker.apppairs.AppPairsTest
com.android.wm.shell.flicker.splitscreen.*
com.android.wm.shell.flicker.legacysplitscreen.*
To address this we move from "opt-out" to "opt-in" model for
WmShellFlickerTests on TV.
Bug: 176074784
Test: run `atest WMShellFlickerTests` on ADT-3
Change-Id: Ic71f9ed4cd0f3b13d81763b2741e827f32b26c4a
5 files changed, 32 insertions, 19 deletions
diff --git a/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/FlickerTestBase.kt b/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/FlickerTestBase.kt index 7809be04de96..baa2ef7f4cb5 100644 --- a/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/FlickerTestBase.kt +++ b/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/FlickerTestBase.kt @@ -17,6 +17,8 @@ package com.android.wm.shell.flicker import android.content.pm.PackageManager +import android.content.pm.PackageManager.FEATURE_LEANBACK +import android.content.pm.PackageManager.FEATURE_LEANBACK_ONLY import android.os.RemoteException import android.os.SystemClock import android.platform.helpers.IAppHelper @@ -24,6 +26,8 @@ import android.view.Surface import androidx.test.platform.app.InstrumentationRegistry import androidx.test.uiautomator.UiDevice import com.android.server.wm.flicker.Flicker +import org.junit.Assume.assumeFalse +import org.junit.Before /** * Base class of all Flicker test that performs common functions for all flicker tests: @@ -36,17 +40,23 @@ import com.android.server.wm.flicker.Flicker * - Fails tests if results are not available for any test due to jank. */ abstract class FlickerTestBase { - val instrumentation by lazy { - InstrumentationRegistry.getInstrumentation() - } - val uiDevice by lazy { - UiDevice.getInstance(instrumentation) - } - val packageManager: PackageManager by lazy { - instrumentation.context.getPackageManager() + val instrumentation by lazy { InstrumentationRegistry.getInstrumentation() } + val uiDevice by lazy { UiDevice.getInstance(instrumentation) } + val packageManager: PackageManager by lazy { instrumentation.context.getPackageManager() } + protected val isTelevision: Boolean by lazy { + packageManager.run { + hasSystemFeature(FEATURE_LEANBACK) || hasSystemFeature(FEATURE_LEANBACK_ONLY) + } } /** + * By default WmShellFlickerTests do not run on TV devices. + * If the test should run on TV - it should override this method. + */ + @Before + open fun televisionSetUp() = assumeFalse(isTelevision) + + /** * Build a test tag for the test * @param testName Name of the transition(s) being tested * @param app App being launcher diff --git a/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/pip/PipTestBase.kt b/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/pip/PipTestBase.kt index 03a92119fc86..96b6c912d152 100644 --- a/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/pip/PipTestBase.kt +++ b/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/pip/PipTestBase.kt @@ -17,10 +17,20 @@ package com.android.wm.shell.flicker.pip import com.android.wm.shell.flicker.helpers.PipAppHelper +import org.junit.Before abstract class PipTestBase( rotationName: String, rotation: Int ) : AppTestBase(rotationName, rotation) { protected val testApp = PipAppHelper(instrumentation) + + @Before + override fun televisionSetUp() { + /** + * The super implementation assumes ([org.junit.Assume]) that not running on TV, thus + * disabling the test on TV. This test, however, *should run on TV*, so we overriding this + * method and simply leaving it blank. + */ + } } 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 66efb5ae3c2d..d21bb9d3cd6d 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 @@ -51,8 +51,7 @@ class TvPipMenuTests : TvPipTestBase() { } @Before - override fun setUp() { - super.setUp() + fun tvPipMenuTestsTestUp() { // Launch the app and go to PiP testApp.launchViaIntent() } 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 75388bf2a189..4b6fe505a3f4 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 @@ -40,8 +40,7 @@ import org.junit.Test @RequiresDevice class TvPipNotificationTests : TvPipTestBase() { @Before - override fun setUp() { - super.setUp() + fun tvPipNotificationTestsSetUp() { val started = startNotificationListener() if (!started) { error("NotificationListener hasn't started") 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 251bc064352d..31e9167c79b2 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 @@ -19,8 +19,6 @@ package com.android.wm.shell.flicker.pip.tv import android.app.ActivityManager import android.app.IActivityManager import android.app.IProcessObserver -import android.content.pm.PackageManager.FEATURE_LEANBACK -import android.content.pm.PackageManager.FEATURE_LEANBACK_ONLY import android.os.SystemClock import android.view.Surface.ROTATION_0 import android.view.Surface.rotationToString @@ -34,14 +32,11 @@ import org.junit.Before abstract class TvPipTestBase : PipTestBase(rotationToString(ROTATION_0), ROTATION_0) { - private val isTelevision: Boolean - get() = packageManager.run { - hasSystemFeature(FEATURE_LEANBACK) || hasSystemFeature(FEATURE_LEANBACK_ONLY) - } private val systemUiProcessObserver = SystemUiProcessObserver() @Before - open fun setUp() { + final override fun televisionSetUp() { + // Should run only on TVs. Assume.assumeTrue(isTelevision) systemUiProcessObserver.start() |