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

Commit 8459b0ce authored by Kohsuke Yatoh's avatar Kohsuke Yatoh Committed by Android (Google) Code Review
Browse files

Merge changes from topics "presubmit-am-10eb3d835eca4319b6144c8f4c068e9c",...

Merge changes from topics "presubmit-am-10eb3d835eca4319b6144c8f4c068e9c", "presubmit-am-4b02653e83b548f494f92f7a023c91b9" into tm-dev

* changes:
  Use case-insensitive match for action label.
  Take screenshot on failure.
parents 6889563b fcfbaa6b
Loading
Loading
Loading
Loading
+6 −0
Original line number Diff line number Diff line
@@ -31,4 +31,10 @@
    <test class="com.android.tradefed.testtype.AndroidJUnitTest">
        <option name="package" value="com.android.inputmethod.stresstest" />
    </test>

    <!-- Collect the files in the dump directory for debugging -->
    <metrics_collector class="com.android.tradefed.device.metric.FilePullerLogCollector">
        <option name="directory-keys" value="/sdcard/InputMethodStressTest/" />
        <option name="collect-on-run-ended-only" value="true" />
    </metrics_collector>
</configuration>
+4 −0
Original line number Diff line number Diff line
@@ -48,6 +48,10 @@ public final class AutoShowTest {
    @Rule
    public UnlockScreenRule mUnlockScreenRule = new UnlockScreenRule();

    @Rule
    public ScreenCaptureRule mScreenCaptureRule =
            new ScreenCaptureRule("/sdcard/InputMethodStressTest");

    @Test
    public void autoShow() {
        Instrumentation instrumentation = InstrumentationRegistry.getInstrumentation();
+4 −0
Original line number Diff line number Diff line
@@ -55,6 +55,10 @@ public final class ImeOpenCloseStressTest {
    @Rule
    public UnlockScreenRule mUnlockScreenRule = new UnlockScreenRule();

    @Rule
    public ScreenCaptureRule mScreenCaptureRule =
            new ScreenCaptureRule("/sdcard/InputMethodStressTest");

    @Test
    public void test() {
        Instrumentation instrumentation = InstrumentationRegistry.getInstrumentation();
+8 −1
Original line number Diff line number Diff line
@@ -48,6 +48,7 @@ import org.junit.Test;
import org.junit.runner.RunWith;

import java.util.concurrent.TimeUnit;
import java.util.regex.Pattern;

@RootPermissionTest
@RunWith(AndroidJUnit4.class)
@@ -75,6 +76,10 @@ public final class NotificationTest {
    @Rule
    public UnlockScreenRule mUnlockScreenRule = new UnlockScreenRule();

    @Rule
    public ScreenCaptureRule mScreenCaptureRule =
            new ScreenCaptureRule("/sdcard/InputMethodStressTest");

    private Context mContext;
    private NotificationManager mNotificationManager;
    private UiDevice mUiDevice;
@@ -95,7 +100,9 @@ public final class NotificationTest {
    public void testDirectReply() {
        postMessagingNotification();
        mUiDevice.openNotification();
        mUiDevice.wait(Until.findObject(By.text(REPLY_ACTION_LABEL)), TIMEOUT).click();
        // The text can be shown as-is, or all-caps, depending on the system.
        Pattern actionLabelPattern = Pattern.compile(REPLY_ACTION_LABEL, Pattern.CASE_INSENSITIVE);
        mUiDevice.wait(Until.findObject(By.text(actionLabelPattern)), TIMEOUT).click();
        // Verify that IME is visible.
        assertThat(mUiDevice.wait(Until.findObject(By.pkg(getImePackage(mContext))), TIMEOUT))
                .isNotNull();
+69 −0
Original line number Diff line number Diff line
/*
 * Copyright (C) 2022 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.inputmethod.stresstest;

import com.android.compatibility.common.util.SystemUtil;

import org.junit.rules.TestWatcher;
import org.junit.runner.Description;

import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * Takes a screenshot when the test fails.
 *
 * <p>Use {@link com.android.tradefed.device.metric.FilePullerLogCollector} to collect screenshots
 * taken.
 * For example, in AndroidTest.xml:
 * <code>
 *     <metrics_collector class="com.android.tradefed.device.metric.FilePullerLogCollector">
 *         <option name="directory-keys" value="/sdcard/MyTest/" />
 *         <option name="collect-on-run-ended-only" value="true" />
 *     </metrics_collector>
 * </code>
 * in MyTest.java:
 * <code>
 *     @Rule
 *     public ScreenCaptureRule mScreenCaptureRule = new ScreenCaptureRule("/sdcard/MyTest");
 * </code>
 */
public class ScreenCaptureRule extends TestWatcher {

    private static final String TAG = "ScreenCaptureRule";

    private final String mOutDir;

    public ScreenCaptureRule(String outDir) {
        mOutDir = outDir;
    }

    @Override
    protected void failed(Throwable e, Description description) {
        super.failed(e, description);
        String time = new SimpleDateFormat("yyyyMMdd-HHmmss").format(new Date());
        String fileName = "screenshot-" + time + ".png";
        capture(fileName);
    }

    /** Take a screenshot. */
    public void capture(String fileName) {
        SystemUtil.runCommandAndPrintOnLogcat(TAG, String.format("mkdir -p %s", mOutDir));
        SystemUtil.runCommandAndPrintOnLogcat(TAG,
                String.format("screencap %s/%s", mOutDir, fileName));
    }
}