Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ab508e96 authored by Antonella Dellanzo's avatar Antonella Dellanzo
Browse files

Updating split screen tests

Updating split screen tests:
- Adding the assertions visibleWindowsShownMoreThanOneConsecutiveEntry and visibleLayersShownMoreThanOneConsecutiveEntry for all the split screen tests (the layer one is disabled as we need ag/13051160 to ignore one layer).
- Replacing some assertions for other that check more things (i.e. replacing the dockedStackDividerIsVisible assertion for dockedStackDividerBecomesVisible).
- Adding some new assertions to the current tests in order to check for more things.

Adding new WM and layer assertions to Flicker tests to avoid repeating code:
- appWindowBecomesVisible
- layerBecomesVisible
- layerBecomesInvisible

Adding new layer assertions to WM shell to avoid repeating code:
- dockedStackDividerBecomesVisible
- dockedStackDividerBecomesInvisible

Test: atest WMShellFlickerTests
Bug: b/171049797
Change-Id: I2bbb23a1cf92df16ee6292e5da4644936a6d99e5
parent 09496f95
Loading
Loading
Loading
Loading
+25 −0
Original line number Original line Diff line number Diff line
@@ -17,6 +17,7 @@
package com.android.wm.shell.flicker
package com.android.wm.shell.flicker


import android.graphics.Region
import android.graphics.Region
import com.android.server.wm.flicker.DOCKED_STACK_DIVIDER
import com.android.server.wm.flicker.dsl.EventLogAssertion
import com.android.server.wm.flicker.dsl.EventLogAssertion
import com.android.server.wm.flicker.dsl.LayersAssertion
import com.android.server.wm.flicker.dsl.LayersAssertion
import com.android.server.wm.flicker.helpers.WindowUtils
import com.android.server.wm.flicker.helpers.WindowUtils
@@ -51,6 +52,30 @@ fun LayersAssertion.dockedStackDividerIsVisible(
    }
    }
}
}


@JvmOverloads
fun LayersAssertion.dockedStackDividerBecomesVisible(
    bugId: Int = 0,
    enabled: Boolean = bugId == 0
) {
    all("dividerLayerBecomesVisible") {
        this.hidesLayer(DOCKED_STACK_DIVIDER)
                .then()
                .showsLayer(DOCKED_STACK_DIVIDER)
    }
}

@JvmOverloads
fun LayersAssertion.dockedStackDividerBecomesInvisible(
    bugId: Int = 0,
    enabled: Boolean = bugId == 0
) {
    all("dividerLayerBecomesInvisible") {
        this.showsLayer(DOCKED_STACK_DIVIDER)
                .then()
                .hidesLayer(DOCKED_STACK_DIVIDER)
    }
}

@JvmOverloads
@JvmOverloads
fun LayersAssertion.dockedStackDividerIsInvisible(
fun LayersAssertion.dockedStackDividerIsInvisible(
    bugId: Int = 0,
    bugId: Int = 0,
+12 −4
Original line number Original line Diff line number Diff line
@@ -29,7 +29,6 @@ import com.android.server.wm.flicker.helpers.launchSplitScreen
import com.android.server.wm.flicker.helpers.openQuickstep
import com.android.server.wm.flicker.helpers.openQuickstep
import com.android.server.wm.flicker.helpers.wakeUpAndGoToHomeScreen
import com.android.server.wm.flicker.helpers.wakeUpAndGoToHomeScreen
import com.android.wm.shell.flicker.dockedStackDividerIsInvisible
import com.android.wm.shell.flicker.dockedStackDividerIsInvisible
import com.android.wm.shell.flicker.dockedStackDividerIsVisible
import com.android.wm.shell.flicker.helpers.SplitScreenHelper.Companion.TEST_REPETITIONS
import com.android.wm.shell.flicker.helpers.SplitScreenHelper.Companion.TEST_REPETITIONS
import com.android.server.wm.flicker.navBarWindowIsAlwaysVisible
import com.android.server.wm.flicker.navBarWindowIsAlwaysVisible
import com.android.server.wm.flicker.statusBarLayerIsAlwaysVisible
import com.android.server.wm.flicker.statusBarLayerIsAlwaysVisible
@@ -38,6 +37,9 @@ import com.android.server.wm.flicker.statusBarWindowIsAlwaysVisible
import com.android.wm.shell.flicker.dockedStackPrimaryBoundsIsVisible
import com.android.wm.shell.flicker.dockedStackPrimaryBoundsIsVisible
import com.android.wm.shell.flicker.dockedStackSecondaryBoundsIsVisible
import com.android.wm.shell.flicker.dockedStackSecondaryBoundsIsVisible
import org.junit.Assert
import org.junit.Assert
import com.android.wm.shell.flicker.dockedStackDividerBecomesVisible
import com.android.server.wm.flicker.visibleWindowsShownMoreThanOneConsecutiveEntry
import com.android.server.wm.flicker.visibleLayersShownMoreThanOneConsecutiveEntry
import org.junit.FixMethodOrder
import org.junit.FixMethodOrder
import org.junit.Test
import org.junit.Test
import org.junit.runner.RunWith
import org.junit.runner.RunWith
@@ -46,7 +48,7 @@ import org.junit.runners.Parameterized


/**
/**
 * Test SplitScreen launch.
 * Test SplitScreen launch.
 * To run this test: `atest WMShellFlickerTests:EnterSplitScreenTest`
 * To run this test: `atest WMShellFlickerTests:EnterLegacySplitScreenTest`
 */
 */
@Presubmit
@Presubmit
@RequiresDevice
@RequiresDevice
@@ -81,10 +83,16 @@ class EnterLegacySplitScreenTest(
                layersTrace {
                layersTrace {
                    navBarLayerIsAlwaysVisible()
                    navBarLayerIsAlwaysVisible()
                    statusBarLayerIsAlwaysVisible()
                    statusBarLayerIsAlwaysVisible()
                    visibleLayersShownMoreThanOneConsecutiveEntry(
                            listOf(launcherPackageName, splitScreenApp.defaultWindowName,
                                    secondaryApp.defaultWindowName,
                                    nonResizeableApp.defaultWindowName)
                    )
                }
                }
                windowManagerTrace {
                windowManagerTrace {
                    navBarWindowIsAlwaysVisible()
                    navBarWindowIsAlwaysVisible()
                    statusBarWindowIsAlwaysVisible()
                    statusBarWindowIsAlwaysVisible()
                    visibleWindowsShownMoreThanOneConsecutiveEntry(listOf(launcherPackageName))
                }
                }
            }
            }
        }
        }
@@ -103,9 +111,9 @@ class EnterLegacySplitScreenTest(
            }
            }
            assertions {
            assertions {
                layersTrace {
                layersTrace {
                    dockedStackDividerIsVisible()
                    dockedStackPrimaryBoundsIsVisible(
                    dockedStackPrimaryBoundsIsVisible(
                            rotation, splitScreenApp.defaultWindowName, 169271943)
                            rotation, splitScreenApp.defaultWindowName, 169271943)
                    dockedStackDividerBecomesVisible()
                }
                }
                windowManagerTrace {
                windowManagerTrace {
                    end {
                    end {
@@ -132,11 +140,11 @@ class EnterLegacySplitScreenTest(
            }
            }
            assertions {
            assertions {
                layersTrace {
                layersTrace {
                    dockedStackDividerIsVisible()
                    dockedStackPrimaryBoundsIsVisible(
                    dockedStackPrimaryBoundsIsVisible(
                            rotation, splitScreenApp.defaultWindowName, 169271943)
                            rotation, splitScreenApp.defaultWindowName, 169271943)
                    dockedStackSecondaryBoundsIsVisible(
                    dockedStackSecondaryBoundsIsVisible(
                            rotation, secondaryApp.defaultWindowName, 169271943)
                            rotation, secondaryApp.defaultWindowName, 169271943)
                    dockedStackDividerBecomesVisible()
                }
                }
                windowManagerTrace {
                windowManagerTrace {
                    end {
                    end {
+16 −3
Original line number Original line Diff line number Diff line
@@ -21,6 +21,11 @@ import android.util.Rational
import android.view.Surface
import android.view.Surface
import androidx.test.filters.FlakyTest
import androidx.test.filters.FlakyTest
import androidx.test.filters.RequiresDevice
import androidx.test.filters.RequiresDevice
import com.android.server.wm.flicker.visibleLayersShownMoreThanOneConsecutiveEntry
import com.android.server.wm.flicker.visibleWindowsShownMoreThanOneConsecutiveEntry
import com.android.server.wm.flicker.navBarWindowIsAlwaysVisible
import com.android.server.wm.flicker.statusBarWindowIsAlwaysVisible
import com.android.server.wm.flicker.layerBecomesInvisible
import com.android.server.wm.flicker.dsl.FlickerBuilder
import com.android.server.wm.flicker.dsl.FlickerBuilder
import com.android.server.wm.flicker.dsl.runWithFlicker
import com.android.server.wm.flicker.dsl.runWithFlicker
import com.android.server.wm.flicker.helpers.exitSplitScreen
import com.android.server.wm.flicker.helpers.exitSplitScreen
@@ -29,8 +34,6 @@ import com.android.server.wm.flicker.helpers.resizeSplitScreen
import com.android.server.wm.flicker.helpers.wakeUpAndGoToHomeScreen
import com.android.server.wm.flicker.helpers.wakeUpAndGoToHomeScreen
import com.android.wm.shell.flicker.dockedStackDividerIsInvisible
import com.android.wm.shell.flicker.dockedStackDividerIsInvisible
import com.android.wm.shell.flicker.helpers.SplitScreenHelper.Companion.TEST_REPETITIONS
import com.android.wm.shell.flicker.helpers.SplitScreenHelper.Companion.TEST_REPETITIONS
import com.android.server.wm.flicker.navBarWindowIsAlwaysVisible
import com.android.server.wm.flicker.statusBarWindowIsAlwaysVisible
import org.junit.FixMethodOrder
import org.junit.FixMethodOrder
import org.junit.Test
import org.junit.Test
import org.junit.runner.RunWith
import org.junit.runner.RunWith
@@ -39,7 +42,7 @@ import org.junit.runners.Parameterized


/**
/**
 * Test exit SplitScreen mode.
 * Test exit SplitScreen mode.
 * To run this test: `atest WMShellFlickerTests:ExitSplitScreenTest`
 * To run this test: `atest WMShellFlickerTests:ExitLegacySplitScreenTest`
 */
 */
@Presubmit
@Presubmit
@RequiresDevice
@RequiresDevice
@@ -71,6 +74,15 @@ class ExitLegacySplitScreenTest(
                    secondaryApp.exit()
                    secondaryApp.exit()
                }
                }
            }
            }
            assertions {
                windowManagerTrace {
                    visibleWindowsShownMoreThanOneConsecutiveEntry()
                }
                layersTrace {
                    visibleLayersShownMoreThanOneConsecutiveEntry(
                            listOf(launcherPackageName))
                }
            }
        }
        }


    @Test
    @Test
@@ -87,6 +99,7 @@ class ExitLegacySplitScreenTest(
            assertions {
            assertions {
                layersTrace {
                layersTrace {
                    dockedStackDividerIsInvisible()
                    dockedStackDividerIsInvisible()
                    layerBecomesInvisible(splitScreenApp.defaultWindowName)
                }
                }
                windowManagerTrace {
                windowManagerTrace {
                    navBarWindowIsAlwaysVisible()
                    navBarWindowIsAlwaysVisible()
+13 −12
Original line number Original line Diff line number Diff line
@@ -17,10 +17,10 @@
package com.android.wm.shell.flicker.legacysplitscreen
package com.android.wm.shell.flicker.legacysplitscreen


import android.platform.test.annotations.Presubmit
import android.platform.test.annotations.Presubmit
import android.support.test.launcherhelper.LauncherStrategyFactory
import android.view.Surface
import android.view.Surface
import androidx.test.filters.RequiresDevice
import androidx.test.filters.RequiresDevice
import androidx.test.platform.app.InstrumentationRegistry
import androidx.test.platform.app.InstrumentationRegistry
import com.android.server.wm.flicker.DOCKED_STACK_DIVIDER
import com.android.server.wm.flicker.Flicker
import com.android.server.wm.flicker.Flicker
import com.android.server.wm.flicker.FlickerTestRunner
import com.android.server.wm.flicker.FlickerTestRunner
import com.android.server.wm.flicker.FlickerTestRunnerFactory
import com.android.server.wm.flicker.FlickerTestRunnerFactory
@@ -35,12 +35,16 @@ import com.android.server.wm.flicker.helpers.setRotation
import com.android.server.wm.flicker.helpers.wakeUpAndGoToHomeScreen
import com.android.server.wm.flicker.helpers.wakeUpAndGoToHomeScreen
import com.android.server.wm.flicker.navBarLayerIsAlwaysVisible
import com.android.server.wm.flicker.navBarLayerIsAlwaysVisible
import com.android.server.wm.flicker.navBarLayerRotatesAndScales
import com.android.server.wm.flicker.navBarLayerRotatesAndScales
import com.android.server.wm.flicker.visibleWindowsShownMoreThanOneConsecutiveEntry
import com.android.server.wm.flicker.visibleLayersShownMoreThanOneConsecutiveEntry
import com.android.server.wm.flicker.layerBecomesInvisible
import com.android.server.wm.flicker.navBarWindowIsAlwaysVisible
import com.android.server.wm.flicker.navBarWindowIsAlwaysVisible
import com.android.server.wm.flicker.noUncoveredRegions
import com.android.server.wm.flicker.noUncoveredRegions
import com.android.server.wm.flicker.repetitions
import com.android.server.wm.flicker.repetitions
import com.android.server.wm.flicker.statusBarLayerIsAlwaysVisible
import com.android.server.wm.flicker.statusBarLayerIsAlwaysVisible
import com.android.server.wm.flicker.statusBarLayerRotatesScales
import com.android.server.wm.flicker.statusBarLayerRotatesScales
import com.android.server.wm.flicker.statusBarWindowIsAlwaysVisible
import com.android.server.wm.flicker.statusBarWindowIsAlwaysVisible
import com.android.wm.shell.flicker.dockedStackDividerBecomesInvisible
import org.junit.FixMethodOrder
import org.junit.FixMethodOrder
import org.junit.runner.RunWith
import org.junit.runner.RunWith
import org.junit.runners.MethodSorters
import org.junit.runners.MethodSorters
@@ -48,7 +52,7 @@ import org.junit.runners.Parameterized


/**
/**
 * Test open app to split screen.
 * Test open app to split screen.
 * To run this test: `atest WMShellFlickerTests:SplitScreenToLauncherTest`
 * To run this test: `atest WMShellFlickerTests:LegacySplitScreenToLauncherTest`
 */
 */
@Presubmit
@Presubmit
@RequiresDevice
@RequiresDevice
@@ -63,6 +67,8 @@ class LegacySplitScreenToLauncherTest(
        @JvmStatic
        @JvmStatic
        fun getParams(): Collection<Array<Any>> {
        fun getParams(): Collection<Array<Any>> {
            val instrumentation = InstrumentationRegistry.getInstrumentation()
            val instrumentation = InstrumentationRegistry.getInstrumentation()
            val launcherPackageName = LauncherStrategyFactory.getInstance(instrumentation)
                    .launcherStrategy.supportedLauncherPackage
            val testApp = StandardAppHelper(instrumentation,
            val testApp = StandardAppHelper(instrumentation,
                "com.android.wm.shell.flicker.testapp", "SimpleApp")
                "com.android.wm.shell.flicker.testapp", "SimpleApp")


@@ -101,6 +107,7 @@ class LegacySplitScreenToLauncherTest(
                        windowManagerTrace {
                        windowManagerTrace {
                            navBarWindowIsAlwaysVisible()
                            navBarWindowIsAlwaysVisible()
                            statusBarWindowIsAlwaysVisible()
                            statusBarWindowIsAlwaysVisible()
                            visibleWindowsShownMoreThanOneConsecutiveEntry()
                        }
                        }


                        layersTrace {
                        layersTrace {
@@ -109,19 +116,13 @@ class LegacySplitScreenToLauncherTest(
                            noUncoveredRegions(configuration.endRotation)
                            noUncoveredRegions(configuration.endRotation)
                            navBarLayerRotatesAndScales(configuration.endRotation)
                            navBarLayerRotatesAndScales(configuration.endRotation)
                            statusBarLayerRotatesScales(configuration.endRotation)
                            statusBarLayerRotatesScales(configuration.endRotation)
                            visibleLayersShownMoreThanOneConsecutiveEntry(
                                    listOf(launcherPackageName))


                            // b/161435597 causes the test not to work on 90 degrees
                            // b/161435597 causes the test not to work on 90 degrees
                            all("dividerLayerBecomesInvisible") {
                            dockedStackDividerBecomesInvisible()
                                this.showsLayer(DOCKED_STACK_DIVIDER)
                                    .then()
                                    .hidesLayer(DOCKED_STACK_DIVIDER)
                            }


                            all("appLayerBecomesInvisible") {
                            layerBecomesInvisible(testApp.getPackage())
                                this.showsLayer(testApp.getPackage())
                                    .then()
                                    .hidesLayer(testApp.getPackage())
                            }
                        }
                        }


                        eventLog {
                        eventLog {
+17 −7
Original line number Original line Diff line number Diff line
@@ -17,10 +17,10 @@
package com.android.wm.shell.flicker.legacysplitscreen
package com.android.wm.shell.flicker.legacysplitscreen


import android.platform.test.annotations.Presubmit
import android.platform.test.annotations.Presubmit
import android.support.test.launcherhelper.LauncherStrategyFactory
import android.view.Surface
import android.view.Surface
import androidx.test.filters.RequiresDevice
import androidx.test.filters.RequiresDevice
import androidx.test.platform.app.InstrumentationRegistry
import androidx.test.platform.app.InstrumentationRegistry
import com.android.server.wm.flicker.DOCKED_STACK_DIVIDER
import com.android.server.wm.flicker.Flicker
import com.android.server.wm.flicker.Flicker
import com.android.server.wm.flicker.FlickerTestRunner
import com.android.server.wm.flicker.FlickerTestRunner
import com.android.server.wm.flicker.FlickerTestRunnerFactory
import com.android.server.wm.flicker.FlickerTestRunnerFactory
@@ -35,12 +35,17 @@ import com.android.server.wm.flicker.helpers.setRotation
import com.android.server.wm.flicker.helpers.wakeUpAndGoToHomeScreen
import com.android.server.wm.flicker.helpers.wakeUpAndGoToHomeScreen
import com.android.server.wm.flicker.navBarLayerIsAlwaysVisible
import com.android.server.wm.flicker.navBarLayerIsAlwaysVisible
import com.android.server.wm.flicker.navBarLayerRotatesAndScales
import com.android.server.wm.flicker.navBarLayerRotatesAndScales
import com.android.server.wm.flicker.appWindowBecomesVisible
import com.android.server.wm.flicker.visibleWindowsShownMoreThanOneConsecutiveEntry
import com.android.server.wm.flicker.visibleLayersShownMoreThanOneConsecutiveEntry
import com.android.server.wm.flicker.layerBecomesVisible
import com.android.server.wm.flicker.navBarWindowIsAlwaysVisible
import com.android.server.wm.flicker.navBarWindowIsAlwaysVisible
import com.android.server.wm.flicker.noUncoveredRegions
import com.android.server.wm.flicker.noUncoveredRegions
import com.android.server.wm.flicker.repetitions
import com.android.server.wm.flicker.repetitions
import com.android.server.wm.flicker.statusBarLayerIsAlwaysVisible
import com.android.server.wm.flicker.statusBarLayerIsAlwaysVisible
import com.android.server.wm.flicker.statusBarLayerRotatesScales
import com.android.server.wm.flicker.statusBarLayerRotatesScales
import com.android.server.wm.flicker.statusBarWindowIsAlwaysVisible
import com.android.server.wm.flicker.statusBarWindowIsAlwaysVisible
import com.android.wm.shell.flicker.dockedStackDividerBecomesVisible
import org.junit.FixMethodOrder
import org.junit.FixMethodOrder
import org.junit.runner.RunWith
import org.junit.runner.RunWith
import org.junit.runners.MethodSorters
import org.junit.runners.MethodSorters
@@ -48,7 +53,7 @@ import org.junit.runners.Parameterized


/**
/**
 * Test open app to split screen.
 * Test open app to split screen.
 * To run this test: `atest WMShellFlickerTests:OpenAppToSplitScreenTest`
 * To run this test: `atest WMShellFlickerTests:OpenAppToLegacySplitScreenTest`
 */
 */
@Presubmit
@Presubmit
@RequiresDevice
@RequiresDevice
@@ -63,6 +68,8 @@ class OpenAppToLegacySplitScreenTest(
        @JvmStatic
        @JvmStatic
        fun getParams(): Collection<Array<Any>> {
        fun getParams(): Collection<Array<Any>> {
            val instrumentation = InstrumentationRegistry.getInstrumentation()
            val instrumentation = InstrumentationRegistry.getInstrumentation()
            val launcherPackageName = LauncherStrategyFactory.getInstance(instrumentation)
                    .launcherStrategy.supportedLauncherPackage
            val testApp = StandardAppHelper(instrumentation,
            val testApp = StandardAppHelper(instrumentation,
                "com.android.wm.shell.flicker.testapp", "SimpleApp")
                "com.android.wm.shell.flicker.testapp", "SimpleApp")


@@ -79,6 +86,7 @@ class OpenAppToLegacySplitScreenTest(
                        }
                        }
                        eachRun {
                        eachRun {
                            testApp.open()
                            testApp.open()
                            device.pressHome()
                            this.setRotation(configuration.endRotation)
                            this.setRotation(configuration.endRotation)
                        }
                        }
                    }
                    }
@@ -99,6 +107,9 @@ class OpenAppToLegacySplitScreenTest(
                        windowManagerTrace {
                        windowManagerTrace {
                            navBarWindowIsAlwaysVisible()
                            navBarWindowIsAlwaysVisible()
                            statusBarWindowIsAlwaysVisible()
                            statusBarWindowIsAlwaysVisible()
                            visibleWindowsShownMoreThanOneConsecutiveEntry()

                            appWindowBecomesVisible(testApp.getPackage())
                        }
                        }


                        layersTrace {
                        layersTrace {
@@ -108,12 +119,11 @@ class OpenAppToLegacySplitScreenTest(
                            navBarLayerRotatesAndScales(configuration.endRotation,
                            navBarLayerRotatesAndScales(configuration.endRotation,
                                bugId = 140855415)
                                bugId = 140855415)
                            statusBarLayerRotatesScales(configuration.endRotation)
                            statusBarLayerRotatesScales(configuration.endRotation)
                            visibleLayersShownMoreThanOneConsecutiveEntry(
                                    listOf(launcherPackageName))


                            all("dividerLayerBecomesVisible") {
                            dockedStackDividerBecomesVisible()
                                this.hidesLayer(DOCKED_STACK_DIVIDER)
                            layerBecomesVisible(testApp.getPackage())
                                    .then()
                                    .showsLayer(DOCKED_STACK_DIVIDER)
                            }
                        }
                        }


                        eventLog {
                        eventLog {
Loading