Merge "Taking screenshots for local tests for FallbackRecentsTest" into ub-launcher3-qt-dev

This commit is contained in:
Vadim Tryshev
2019-06-25 23:43:19 +00:00
committed by Android (Google) Code Review
3 changed files with 22 additions and 13 deletions

View File

@@ -43,10 +43,12 @@ import androidx.test.uiautomator.Until;
import com.android.launcher3.tapl.LauncherInstrumentation;
import com.android.launcher3.testcomponent.TestCommandReceiver;
import com.android.launcher3.util.rule.FailureWatcher;
import com.android.quickstep.NavigationModeSwitchRule.NavigationModeSwitch;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.RuleChain;
import org.junit.rules.TestRule;
import org.junit.runner.RunWith;
import org.junit.runners.model.Statement;
@@ -62,10 +64,14 @@ public class FallbackRecentsTest {
private final LauncherInstrumentation mLauncher;
private final ActivityInfo mOtherLauncherActivity;
@Rule public final TestRule mDisableHeadsUpNotification = disableHeadsUpNotification();
@Rule public final TestRule mQuickstepOnOffExecutor;
@Rule
public final TestRule mDisableHeadsUpNotification = disableHeadsUpNotification();
@Rule public final TestRule mSetLauncherCommand;
@Rule
public final TestRule mSetLauncherCommand;
@Rule
public final TestRule mOrderSensitiveRules;
public FallbackRecentsTest() throws RemoteException {
Instrumentation instrumentation = getInstrumentation();
@@ -74,7 +80,10 @@ public class FallbackRecentsTest {
mDevice.setOrientationNatural();
mLauncher = new LauncherInstrumentation(instrumentation);
mQuickstepOnOffExecutor = new NavigationModeSwitchRule(mLauncher);
mOrderSensitiveRules = RuleChain.
outerRule(new NavigationModeSwitchRule(mLauncher)).
around(new FailureWatcher(mDevice));
mOtherLauncherActivity = context.getPackageManager().queryIntentActivities(
getHomeIntentInPackage(context),
MATCH_DISABLED_COMPONENTS).get(0).activityInfo;

View File

@@ -125,7 +125,7 @@ public abstract class AbstractLauncherUiTest {
protected TestRule getRulesInsideActivityMonitor() {
return RuleChain.
outerRule(new PortraitLandscapeRunner(this)).
around(new FailureWatcher(this));
around(new FailureWatcher(mDevice));
}
@Rule

View File

@@ -4,7 +4,7 @@ import static androidx.test.InstrumentationRegistry.getInstrumentation;
import android.util.Log;
import com.android.launcher3.ui.AbstractLauncherUiTest;
import androidx.test.uiautomator.UiDevice;
import org.junit.rules.TestWatcher;
import org.junit.runner.Description;
@@ -16,16 +16,16 @@ import java.io.IOException;
public class FailureWatcher extends TestWatcher {
private static final String TAG = "FailureWatcher";
private static int sScreenshotCount = 0;
private AbstractLauncherUiTest mAbstractLauncherUiTest;
final private UiDevice mDevice;
public FailureWatcher(AbstractLauncherUiTest abstractLauncherUiTest) {
mAbstractLauncherUiTest = abstractLauncherUiTest;
public FailureWatcher(UiDevice device) {
mDevice = device;
}
private void dumpViewHierarchy() {
final ByteArrayOutputStream stream = new ByteArrayOutputStream();
try {
mAbstractLauncherUiTest.getDevice().dumpWindowHierarchy(stream);
mDevice.dumpWindowHierarchy(stream);
stream.flush();
stream.close();
for (String line : stream.toString().split("\\r?\\n")) {
@@ -38,7 +38,7 @@ public class FailureWatcher extends TestWatcher {
@Override
protected void failed(Throwable e, Description description) {
if (mAbstractLauncherUiTest.getDevice() == null) return;
if (mDevice == null) return;
final String pathname = getInstrumentation().getTargetContext().
getFilesDir().getPath() + "/TaplTestScreenshot" + sScreenshotCount++ + ".png";
Log.e(TAG, "Failed test " + description.getMethodName() +
@@ -48,12 +48,12 @@ public class FailureWatcher extends TestWatcher {
dumpViewHierarchy();
try {
final String dumpsysResult = mAbstractLauncherUiTest.getDevice().executeShellCommand(
final String dumpsysResult = mDevice.executeShellCommand(
"dumpsys activity service TouchInteractionService");
Log.d(TAG, "TouchInteractionService: " + dumpsysResult);
} catch (IOException ex) {
}
mAbstractLauncherUiTest.getDevice().takeScreenshot(new File(pathname));
mDevice.takeScreenshot(new File(pathname));
}
}