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

Commit 62648160 authored by Automerger Merge Worker's avatar Automerger Merge Worker
Browse files

New FlickerTests: Create initial flicker tests for Pip am: 992a155b am: 1e665c42 am: 40ed98ad

Change-Id: Ic2f03c16d92b13eec89ce99618d9438ba78a8c58
parents cf0c1a33 40ed98ad
Loading
Loading
Loading
Loading
+8 −0
Original line number Diff line number Diff line
@@ -9,6 +9,14 @@
        <option name="screen-always-on" value="on" />
        <!-- prevents the phone from restarting -->
        <option name="force-skip-system-props" value="true" />
        <!-- set WM tracing verbose level to all -->
        <option name="run-command" value="adb shell cmd window tracing level all" />
        <!-- inform WM to log all transactions -->
        <option name="run-command" value="adb shell cmd window tracing transaction" />
    </target_preparer>
    <target_preparer class="com.android.tradefed.targetprep.DeviceCleaner">
        <!-- keeps the screen on during tests -->
        <option name="cleanup-action" value="REBOOT" />
    </target_preparer>
    <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
        <option name="cleanup-apks" value="true"/>
+25 −15
Original line number Diff line number Diff line
@@ -20,7 +20,6 @@ import static android.os.SystemClock.sleep;
import static android.view.Surface.rotationToString;

import static com.android.server.wm.flicker.helpers.AutomationUtils.clearRecents;
import static com.android.server.wm.flicker.helpers.AutomationUtils.closePipWindow;
import static com.android.server.wm.flicker.helpers.AutomationUtils.exitSplitScreen;
import static com.android.server.wm.flicker.helpers.AutomationUtils.expandPipWindow;
import static com.android.server.wm.flicker.helpers.AutomationUtils.launchSplitScreen;
@@ -285,41 +284,52 @@ class CommonTransitions {
                .repeat(ITERATIONS);
    }

    static TransitionBuilder enterPipMode(PipAppHelper testApp, UiDevice device) {
    static TransitionBuilder enterPipMode(PipAppHelper testApp, UiDevice device,
            int beginRotation) {
        return TransitionRunner.newBuilder()
                .withTag("enterPipMode_" + testApp.getLauncherName())
                .withTag("enterPipMode_" + testApp.getLauncherName()
                        + rotationToString(beginRotation))
                .runBeforeAll(AutomationUtils::wakeUpAndGoToHomeScreen)
                .runBefore(device::pressHome)
                .runBefore(() -> setRotation(device, beginRotation))
                .runBefore(testApp::open)
                .run(() -> testApp.clickEnterPipButton(device))
                .runAfter(() -> closePipWindow(device))
                .runAfter(() -> testApp.closePipWindow(device))
                .runAfterAll(testApp::exit)
                .repeat(ITERATIONS);
    }

    static TransitionBuilder exitPipModeToHome(PipAppHelper testApp, UiDevice device) {
    static TransitionBuilder exitPipModeToHome(PipAppHelper testApp, UiDevice device,
            int beginRotation) {
        return TransitionRunner.newBuilder()
                .withTag("exitPipModeToHome_" + testApp.getLauncherName())
                .withTag("exitPipModeToHome_" + testApp.getLauncherName()
                        + rotationToString(beginRotation))
                .recordAllRuns()
                .runBeforeAll(AutomationUtils::wakeUpAndGoToHomeScreen)
                .runBefore(device::pressHome)
                .runBefore(() -> setRotation(device, beginRotation))
                .runBefore(testApp::open)
                .runBefore(() -> testApp.clickEnterPipButton(device))
                .run(() -> closePipWindow(device))
                .run(() -> testApp.clickEnterPipButton(device))
                .run(() -> testApp.closePipWindow(device))
                .run(device::waitForIdle)
                .runAfterAll(testApp::exit)
                .run(testApp::exit)
                .repeat(ITERATIONS);
    }

    static TransitionBuilder exitPipModeToApp(PipAppHelper testApp, UiDevice device) {
    static TransitionBuilder exitPipModeToApp(PipAppHelper testApp, UiDevice device,
            int beginRotation) {
        return TransitionRunner.newBuilder()
                .withTag("exitPipModeToApp_" + testApp.getLauncherName())
                .withTag("exitPipModeToApp_" + testApp.getLauncherName()
                        + rotationToString(beginRotation))
                .recordAllRuns()
                .runBeforeAll(AutomationUtils::wakeUpAndGoToHomeScreen)
                .runBefore(device::pressHome)
                .runBefore(testApp::open)
                .runBefore(() -> testApp.clickEnterPipButton(device))
                .run(device::pressHome)
                .run(() -> setRotation(device, beginRotation))
                .run(testApp::open)
                .run(() -> testApp.clickEnterPipButton(device))
                .run(() -> expandPipWindow(device))
                .run(device::waitForIdle)
                .runAfterAll(testApp::exit)
                .run(testApp::exit)
                .repeat(ITERATIONS);
    }
}
+8 −7
Original line number Diff line number Diff line
@@ -116,7 +116,7 @@ public class DebugTest {
        ImeAppHelper bottomApp = new ImeAppHelper(InstrumentationRegistry.getInstrumentation());
        CommonTransitions.resizeSplitScreen(testApp, bottomApp, uiDevice, Surface.ROTATION_0,
                new Rational(1, 3), new Rational(2, 3))
                .includeJankyRuns().recordEachRun().build().run();
                .includeJankyRuns().build().run();
    }

    // IME tests
@@ -128,7 +128,7 @@ public class DebugTest {
    public void editTextSetFocus() {
        ImeAppHelper testApp = new ImeAppHelper(InstrumentationRegistry.getInstrumentation());
        CommonTransitions.editTextSetFocus(testApp, uiDevice, Surface.ROTATION_0)
                .includeJankyRuns().recordEachRun()
                .includeJankyRuns()
                .build().run();
    }

@@ -139,7 +139,7 @@ public class DebugTest {
    public void editTextLoseFocusToHome() {
        ImeAppHelper testApp = new ImeAppHelper(InstrumentationRegistry.getInstrumentation());
        CommonTransitions.editTextLoseFocusToHome(testApp, uiDevice, Surface.ROTATION_0)
                .includeJankyRuns().recordEachRun()
                .includeJankyRuns()
                .build().run();
    }

@@ -150,7 +150,7 @@ public class DebugTest {
    public void editTextLoseFocusToApp() {
        ImeAppHelper testApp = new ImeAppHelper(InstrumentationRegistry.getInstrumentation());
        CommonTransitions.editTextLoseFocusToHome(testApp, uiDevice, Surface.ROTATION_0)
                .includeJankyRuns().recordEachRun()
                .includeJankyRuns()
                .build().run();
    }

@@ -162,7 +162,7 @@ public class DebugTest {
    @Test
    public void enterPipMode() {
        PipAppHelper testApp = new PipAppHelper(InstrumentationRegistry.getInstrumentation());
        CommonTransitions.enterPipMode(testApp, uiDevice).includeJankyRuns().recordEachRun()
        CommonTransitions.enterPipMode(testApp, uiDevice, Surface.ROTATION_0).includeJankyRuns()
                .build().run();
    }

@@ -172,7 +172,8 @@ public class DebugTest {
    @Test
    public void exitPipModeToHome() {
        PipAppHelper testApp = new PipAppHelper(InstrumentationRegistry.getInstrumentation());
        CommonTransitions.exitPipModeToHome(testApp, uiDevice).includeJankyRuns().recordEachRun()
        CommonTransitions.exitPipModeToHome(testApp, uiDevice, Surface.ROTATION_0)
                .includeJankyRuns()
                .build().run();
    }

@@ -182,7 +183,7 @@ public class DebugTest {
    @Test
    public void exitPipModeToApp() {
        PipAppHelper testApp = new PipAppHelper(InstrumentationRegistry.getInstrumentation());
        CommonTransitions.exitPipModeToApp(testApp, uiDevice).includeJankyRuns().recordEachRun()
        CommonTransitions.exitPipModeToApp(testApp, uiDevice, Surface.ROTATION_0).includeJankyRuns()
                .build().run();
    }
}
+89 −0
Original line number Diff line number Diff line
/*
 * Copyright (C) 2019 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;

import static com.android.server.wm.flicker.CommonTransitions.exitPipModeToApp;

import androidx.test.InstrumentationRegistry;
import androidx.test.filters.LargeTest;

import com.android.server.wm.flicker.helpers.PipAppHelper;

import org.junit.Before;
import org.junit.FixMethodOrder;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.MethodSorters;
import org.junit.runners.Parameterized;

/**
 * Test Pip launch.
 * To run this test: {@code atest FlickerTests:PipToAppTest}
 */
@LargeTest
@RunWith(Parameterized.class)
@FixMethodOrder(MethodSorters.NAME_ASCENDING)
public class PipToAppTest extends NonRotationTestBase {

    static final String sPipWindowTitle = "PipMenuActivity";

    public PipToAppTest(String beginRotationName, int beginRotation) {
        super(beginRotationName, beginRotation);

        this.mTestApp = new PipAppHelper(InstrumentationRegistry.getInstrumentation());
    }

    @Before
    public void runTransition() {
        run(exitPipModeToApp((PipAppHelper) mTestApp, mUiDevice, mBeginRotation)
                .includeJankyRuns().build());
    }

    @Test
    public void checkVisibility_pipWindowBecomesVisible() {
        checkResults(result -> WmTraceSubject.assertThat(result)
                .skipUntilFirstAssertion()
                .showsAppWindowOnTop(sPipWindowTitle)
                .then()
                .hidesAppWindow(sPipWindowTitle)
                .forAllEntries());
    }

    @Test
    public void checkVisibility_pipLayerBecomesVisible() {
        checkResults(result -> LayersTraceSubject.assertThat(result)
                .skipUntilFirstAssertion()
                .showsLayer(sPipWindowTitle)
                .then()
                .hidesLayer(sPipWindowTitle)
                .forAllEntries());
    }

    @Test
    public void checkVisibility_backgroundWindowVisibleBehindPipLayer() {
        checkResults(result -> WmTraceSubject.assertThat(result)
                .skipUntilFirstAssertion()
                .showsAppWindowOnTop(sPipWindowTitle)
                .then()
                .showsBelowAppWindow("Wallpaper")
                .then()
                .showsAppWindowOnTop(mTestApp.getPackage())
                .then()
                .hidesAppWindowOnTop(mTestApp.getPackage())
                .forAllEntries());
    }
}
+93 −0
Original line number Diff line number Diff line
/*
 * Copyright (C) 2019 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;

import static com.android.server.wm.flicker.CommonTransitions.exitPipModeToHome;

import android.view.Surface;

import androidx.test.InstrumentationRegistry;
import androidx.test.filters.LargeTest;
import androidx.test.runner.AndroidJUnit4;

import com.android.server.wm.flicker.helpers.PipAppHelper;

import org.junit.Before;
import org.junit.FixMethodOrder;
import org.junit.Ignore;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.MethodSorters;

/**
 * Test Pip launch.
 * To run this test: {@code atest FlickerTests:PipToHomeTest}
 */
@LargeTest
@RunWith(AndroidJUnit4.class)
@FixMethodOrder(MethodSorters.NAME_ASCENDING)
public class PipToHomeTest extends FlickerTestBase {

    static final String sPipWindowTitle = "PipActivity";

    // public PipToHomeTest(String beginRotationName, int beginRotation) {
    public PipToHomeTest() {
        // super(beginRotationName, beginRotation);

        this.mTestApp = new PipAppHelper(InstrumentationRegistry.getInstrumentation());
    }

    @Before
    public void runTransition() {
        // run(exitPipModeToHome((PipAppHelper) mTestApp, mUiDevice, mBeginRotation)
        run(exitPipModeToHome((PipAppHelper) mTestApp, mUiDevice, Surface.ROTATION_0)
                .includeJankyRuns().build());
    }

    @Ignore
    @Test
    public void checkVisibility_pipWindowBecomesVisible() {
        checkResults(result -> WmTraceSubject.assertThat(result)
                .skipUntilFirstAssertion()
                .showsAppWindowOnTop(sPipWindowTitle)
                .then()
                .hidesAppWindow(sPipWindowTitle)
                .forAllEntries());
    }

    @Test
    public void checkVisibility_pipLayerBecomesVisible() {
        checkResults(result -> LayersTraceSubject.assertThat(result)
                .skipUntilFirstAssertion()
                .showsLayer(sPipWindowTitle)
                .then()
                .hidesLayer(sPipWindowTitle)
                .forAllEntries());
    }

    @Ignore
    @Test
    public void checkVisibility_backgroundWindowVisibleBehindPipLayer() {
        checkResults(result -> WmTraceSubject.assertThat(result)
                .showsAppWindowOnTop(sPipWindowTitle)
                .then()
                .showsBelowAppWindow("Wallpaper")
                .then()
                .showsAppWindowOnTop("Wallpaper")
                .forAllEntries());
    }
}
Loading