diff --git a/quickstep/tests/src/com/android/quickstep/FallbackRecentsTest.java b/quickstep/tests/src/com/android/quickstep/FallbackRecentsTest.java index a67d787842..b4221b2804 100644 --- a/quickstep/tests/src/com/android/quickstep/FallbackRecentsTest.java +++ b/quickstep/tests/src/com/android/quickstep/FallbackRecentsTest.java @@ -16,9 +16,7 @@ package com.android.quickstep; import static android.content.pm.PackageManager.MATCH_DISABLED_COMPONENTS; - import static androidx.test.InstrumentationRegistry.getInstrumentation; - import static com.android.launcher3.tapl.LauncherInstrumentation.WAIT_TIME_MS; import static com.android.launcher3.tapl.TestHelpers.getHomeIntentInPackage; import static com.android.launcher3.tapl.TestHelpers.getLauncherInMyProcess; @@ -34,7 +32,6 @@ import static com.android.launcher3.util.rule.ShellCommandRule.disableHeadsUpNot import static com.android.launcher3.util.rule.ShellCommandRule.getLauncherCommand; import static com.android.launcher3.util.rule.TestStabilityRule.LOCAL; import static com.android.launcher3.util.rule.TestStabilityRule.PLATFORM_POSTSUBMIT; - import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; @@ -61,6 +58,7 @@ import com.android.launcher3.util.Wait; import com.android.launcher3.util.rule.FailureWatcher; import com.android.launcher3.util.rule.SamplerRule; import com.android.launcher3.util.rule.ScreenRecordRule; +import com.android.launcher3.util.rule.TestIsolationRule; import com.android.launcher3.util.rule.TestStabilityRule; import com.android.launcher3.util.rule.ViewCaptureRule; import com.android.quickstep.views.RecentsView; @@ -93,9 +91,6 @@ public class FallbackRecentsTest { @Rule public final TestRule mDisableHeadsUpNotification = disableHeadsUpNotification(); - @Rule - public final TestRule mSetLauncherCommand; - @Rule public final TestRule mOrderSensitiveRules; @@ -116,19 +111,7 @@ public class FallbackRecentsTest { Utilities.enableRunningInTestHarnessForTests(); } - final ViewCaptureRule viewCaptureRule = new ViewCaptureRule( - RecentsActivity.ACTIVITY_TRACKER::getCreatedActivity); - mOrderSensitiveRules = RuleChain - .outerRule(new SamplerRule()) - .around(new NavigationModeSwitchRule(mLauncher)) - .around(new FailureWatcher(mLauncher, viewCaptureRule::getViewCaptureData)) - .around(viewCaptureRule); - - mOtherLauncherActivity = context.getPackageManager().queryIntentActivities( - getHomeIntentInPackage(context), - MATCH_DISABLED_COMPONENTS).get(0).activityInfo; - - mSetLauncherCommand = (base, desc) -> new Statement() { + final TestRule setLauncherCommand = (base, desc) -> new Statement() { @Override public void evaluate() throws Throwable { TestCommandReceiver.callCommand(TestCommandReceiver.ENABLE_TEST_LAUNCHER); @@ -151,6 +134,21 @@ public class FallbackRecentsTest { } } }; + + final ViewCaptureRule viewCaptureRule = new ViewCaptureRule( + RecentsActivity.ACTIVITY_TRACKER::getCreatedActivity); + mOrderSensitiveRules = RuleChain + .outerRule(new SamplerRule()) + .around(new NavigationModeSwitchRule(mLauncher)) + .around(new FailureWatcher(mLauncher, viewCaptureRule::getViewCaptureData)) + .around(viewCaptureRule) + .around(new TestIsolationRule(mLauncher)) + .around(setLauncherCommand); + + mOtherLauncherActivity = context.getPackageManager().queryIntentActivities( + getHomeIntentInPackage(context), + MATCH_DISABLED_COMPONENTS).get(0).activityInfo; + if (TestHelpers.isInLauncherProcess()) { mLauncher.setSystemHealthSupplier(startTime -> TestCommandReceiver.callCommand( TestCommandReceiver.GET_SYSTEM_HEALTH_MESSAGE, startTime.toString()). diff --git a/tests/Android.bp b/tests/Android.bp index d45e9eb1e4..9bb8787f9e 100644 --- a/tests/Android.bp +++ b/tests/Android.bp @@ -55,6 +55,7 @@ filegroup { "src/com/android/launcher3/util/rule/SamplerRule.java", "src/com/android/launcher3/util/rule/ScreenRecordRule.java", "src/com/android/launcher3/util/rule/ShellCommandRule.java", + "src/com/android/launcher3/util/rule/TestIsolationRule.java", "src/com/android/launcher3/util/rule/TestStabilityRule.java", "src/com/android/launcher3/util/rule/TISBindRule.java", "src/com/android/launcher3/util/viewcapture_analysis/*.java", diff --git a/tests/src/com/android/launcher3/ui/AbstractLauncherUiTest.java b/tests/src/com/android/launcher3/ui/AbstractLauncherUiTest.java index 5240e6a02b..707781ec40 100644 --- a/tests/src/com/android/launcher3/ui/AbstractLauncherUiTest.java +++ b/tests/src/com/android/launcher3/ui/AbstractLauncherUiTest.java @@ -16,11 +16,9 @@ package com.android.launcher3.ui; import static androidx.test.InstrumentationRegistry.getInstrumentation; - import static com.android.launcher3.testing.shared.TestProtocol.ICON_MISSING; import static com.android.launcher3.ui.TaplTestsLauncher3.getAppPackageName; import static com.android.launcher3.util.Executors.MAIN_EXECUTOR; - import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; @@ -68,6 +66,7 @@ import com.android.launcher3.util.rule.FailureWatcher; import com.android.launcher3.util.rule.SamplerRule; import com.android.launcher3.util.rule.ScreenRecordRule; import com.android.launcher3.util.rule.ShellCommandRule; +import com.android.launcher3.util.rule.TestIsolationRule; import com.android.launcher3.util.rule.TestStabilityRule; import com.android.launcher3.util.rule.ViewCaptureRule; @@ -206,7 +205,8 @@ public abstract class AbstractLauncherUiTest { final RuleChain inner = RuleChain .outerRule(new PortraitLandscapeRunner(this)) .around(new FailureWatcher(mLauncher, viewCaptureRule::getViewCaptureData)) - .around(viewCaptureRule); + .around(viewCaptureRule) + .around(new TestIsolationRule(mLauncher)); return TestHelpers.isInLauncherProcess() ? RuleChain.outerRule(ShellCommandRule.setDefaultLauncher()).around(inner) diff --git a/tests/src/com/android/launcher3/util/rule/TestIsolationRule.java b/tests/src/com/android/launcher3/util/rule/TestIsolationRule.java new file mode 100644 index 0000000000..5cc4c5e6e1 --- /dev/null +++ b/tests/src/com/android/launcher3/util/rule/TestIsolationRule.java @@ -0,0 +1,48 @@ +/* + * Copyright (C) 2023 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.launcher3.util.rule; + +import androidx.annotation.NonNull; + +import com.android.launcher3.tapl.LauncherInstrumentation; + +import org.junit.rules.TestRule; +import org.junit.runner.Description; +import org.junit.runners.model.Statement; + +/** + * Isolates tests from some of the state created by the previous test. + */ +public class TestIsolationRule implements TestRule { + final LauncherInstrumentation mLauncher; + + public TestIsolationRule(LauncherInstrumentation launcher) { + mLauncher = launcher; + } + + @NonNull + @Override + public Statement apply(@NonNull Statement base, @NonNull Description description) { + return new Statement() { + @Override + public void evaluate() throws Throwable { + base.evaluate(); + // Make sure that Launcher workspace looks correct. + mLauncher.goHome(); + } + }; + } +}