Make sure we keep the screen record even if the test succeeds

Bug: 322823478
Test: testEdu
Test: testDevicePressMenu
Flag: NA
Change-Id: Ia11d3cbc0a10e15d716b1845e3590bca2bd1ff76
This commit is contained in:
Sebastian Franco
2024-04-23 10:35:55 -07:00
parent c0a1fbe872
commit ad15dd719e
3 changed files with 19 additions and 2 deletions

View File

@@ -21,8 +21,9 @@ import static org.junit.Assert.assertNotNull;
import androidx.test.filters.LargeTest;
import androidx.test.runner.AndroidJUnit4;
import com.android.launcher3.util.rule.ScreenRecordRule.ScreenRecord;
import com.android.launcher3.Launcher;
import com.android.launcher3.util.rule.ScreenRecordRule.KeepRecordOnSuccess;
import com.android.launcher3.util.rule.ScreenRecordRule.ScreenRecord;
import org.junit.Test;
import org.junit.runner.RunWith;
@@ -31,6 +32,7 @@ import org.junit.runner.RunWith;
@RunWith(AndroidJUnit4.class)
public class TaplTestsLauncher3Test extends AbstractLauncherUiTest<Launcher> {
@KeepRecordOnSuccess
@ScreenRecord // b/322823478
@Test
public void testDevicePressMenu() throws Exception {

View File

@@ -45,6 +45,7 @@ import com.android.launcher3.allapps.WorkPausedCard;
import com.android.launcher3.allapps.WorkProfileManager;
import com.android.launcher3.tapl.LauncherInstrumentation;
import com.android.launcher3.util.TestUtil;
import com.android.launcher3.util.rule.ScreenRecordRule.KeepRecordOnSuccess;
import com.android.launcher3.util.rule.ScreenRecordRule.ScreenRecord;
import com.android.launcher3.util.rule.TestStabilityRule.Stability;
@@ -196,6 +197,7 @@ public class TaplWorkProfileTest extends AbstractLauncherUiTest<Launcher> {
}
@KeepRecordOnSuccess
@ScreenRecord // b/322823478
@Test
public void testEdu() {

View File

@@ -49,6 +49,9 @@ public class ScreenRecordRule implements TestRule {
return base;
}
final Boolean keepRecordOnSuccess = description.getAnnotation(KeepRecordOnSuccess.class)
!= null;
return new Statement() {
@Override
public void evaluate() throws Throwable {
@@ -70,7 +73,7 @@ public class ScreenRecordRule implements TestRule {
device.executeShellCommand("kill -INT " + screenRecordPid);
Log.e(TAG, "Screenrecord captured at: " + outputFile);
output.close();
if (success) {
if (success && !keepRecordOnSuccess) {
automation.executeShellCommand("rm " + outputFile);
}
}
@@ -85,4 +88,14 @@ public class ScreenRecordRule implements TestRule {
@Target(ElementType.METHOD)
public @interface ScreenRecord {
}
/**
* Interface to indicate that we should keep the screen record even if the test succeeds, use
* sparingly since it uses a lof of memory.
*/
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface KeepRecordOnSuccess {
}
}