From fd683f7113cf9e825c7384f306b65b934d4f0669 Mon Sep 17 00:00:00 2001 From: Nataniel Borges Date: Thu, 12 Mar 2020 22:01:41 +0100 Subject: [PATCH] Add meaningful exception when the device is in an unknown state Currently, when the device is in an incorrect state (e.g. in split screen) because another test failed to teardown the error message is a java.lang.NullPointerException. Instead of this error, show a message warning about the problem to aid debugging. Test: atest FlickerTests Change-Id: If3bd75c14c90209952484802ee17f817ab4f0f20 --- .../server/wm/flicker/helpers/ImeAppHelper.java | 4 ++++ .../server/wm/flicker/helpers/PipAppHelper.java | 13 ++++++------- 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/helpers/ImeAppHelper.java b/tests/FlickerTests/src/com/android/server/wm/flicker/helpers/ImeAppHelper.java index 098fd6d4250bd..80899396ec71a 100644 --- a/tests/FlickerTests/src/com/android/server/wm/flicker/helpers/ImeAppHelper.java +++ b/tests/FlickerTests/src/com/android/server/wm/flicker/helpers/ImeAppHelper.java @@ -18,6 +18,8 @@ package com.android.server.wm.flicker.helpers; import static android.os.SystemClock.sleep; +import static org.junit.Assert.assertNotNull; + import android.app.Instrumentation; import android.support.test.uiautomator.By; import android.support.test.uiautomator.UiDevice; @@ -35,6 +37,8 @@ public class ImeAppHelper extends FlickerAppHelper { public void clickEditTextWidget(UiDevice device) { UiObject2 editText = device.findObject(By.res(getPackage(), "plain_text_input")); + assertNotNull("Text field not found, this usually happens when the device was left " + + "in an unknown state (e.g. in split screen)", editText); editText.click(); sleep(500); } diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/helpers/PipAppHelper.java b/tests/FlickerTests/src/com/android/server/wm/flicker/helpers/PipAppHelper.java index d5f9a2062a17b..361ca51539e16 100644 --- a/tests/FlickerTests/src/com/android/server/wm/flicker/helpers/PipAppHelper.java +++ b/tests/FlickerTests/src/com/android/server/wm/flicker/helpers/PipAppHelper.java @@ -16,13 +16,14 @@ package com.android.server.wm.flicker.helpers; -import static com.android.server.wm.flicker.helpers.AutomationUtils.getPipWindowSelector; +import static com.android.server.wm.flicker.helpers.AutomationUtils.hasPipWindow; + +import static org.junit.Assert.assertNotNull; import android.app.Instrumentation; import android.support.test.uiautomator.By; import android.support.test.uiautomator.UiDevice; import android.support.test.uiautomator.UiObject2; -import android.support.test.uiautomator.Until; public class PipAppHelper extends FlickerAppHelper { @@ -32,12 +33,10 @@ public class PipAppHelper extends FlickerAppHelper { public void clickEnterPipButton(UiDevice device) { UiObject2 enterPipButton = device.findObject(By.res(getPackage(), "enter_pip")); + assertNotNull("Pip button not found, this usually happens when the device was left " + + "in an unknown state (e.g. in split screen)", enterPipButton); enterPipButton.click(); - UiObject2 pipWindow = device.wait(Until.findObject(getPipWindowSelector()), sFindTimeout); - - if (pipWindow == null) { - throw new RuntimeException("Unable to find PIP window"); - } + hasPipWindow(device); } public void closePipWindow(UiDevice device) {