Add switch playback mdeia test to catbox
Test: local
Bug: 267234551
Change-Id: I18bfd394ec3c92a9f8b136502095910ada1314e2
diff --git a/libraries/app-helpers/interfaces/auto/src/android/platform/helpers/IAutoMediaHelper.java b/libraries/app-helpers/interfaces/auto/src/android/platform/helpers/IAutoMediaHelper.java
index 7292f95..06abb33 100644
--- a/libraries/app-helpers/interfaces/auto/src/android/platform/helpers/IAutoMediaHelper.java
+++ b/libraries/app-helpers/interfaces/auto/src/android/platform/helpers/IAutoMediaHelper.java
@@ -184,4 +184,29 @@
* <p>Scroll down on page.
*/
boolean scrollDownOnePage();
+
+ /**
+ * Setup expectations: media test app is open.
+ *
+ * <p>This method is used to open Folder Menu with menuOptions and scroll into view the track.
+ * Example - openMenu->Folder->Mediafilename->trackName
+ * openMenuWith(Folder,mediafilename,trackName);
+ *
+ * @param menuOptions used to pass multiple level of menu options in one go.
+ */
+ void selectMediaTrack(String... menuOptions);
+
+ /**
+ * Setup expectations: Now Playing is open.
+ *
+ * <p>This method is used to select previous track.
+ */
+ void minimizeNowPlaying();
+
+ /**
+ * Setup expectations: media test app is open and Minimize control bar present.
+ *
+ * <p>This method is used to maximize the play back screen.
+ */
+ void maximizeNowPlaying();
}
diff --git a/libraries/automotive-helpers/media-center-app-helper/src/android/platform/helpers/MediaCenterHelperImpl.java b/libraries/automotive-helpers/media-center-app-helper/src/android/platform/helpers/MediaCenterHelperImpl.java
index 7d2f21c..6dd8b6c 100644
--- a/libraries/automotive-helpers/media-center-app-helper/src/android/platform/helpers/MediaCenterHelperImpl.java
+++ b/libraries/automotive-helpers/media-center-app-helper/src/android/platform/helpers/MediaCenterHelperImpl.java
@@ -31,6 +31,7 @@
import android.support.test.uiautomator.UiObjectNotFoundException;
import android.support.test.uiautomator.UiScrollable;
import android.support.test.uiautomator.UiSelector;
+import android.support.test.uiautomator.Until;
import java.util.List;
import java.util.regex.Pattern;
@@ -344,10 +345,9 @@
}
}
- /**
- * Minimize the Now Playing window.
- */
- private void minimizeNowPlaying() {
+ /** {@inheritDoc} */
+ @Override
+ public void minimizeNowPlaying() {
UiObject2 trackNameText =
findUiObject(
getResourceFromConfig(
@@ -359,6 +359,20 @@
}
}
+ /** {@inheritDoc} */
+ @Override
+ public void maximizeNowPlaying() {
+ UiObject2 trackNameText =
+ findUiObject(
+ getResourceFromConfig(
+ AutoConfigConstants.MEDIA_CENTER,
+ AutoConfigConstants.MEDIA_CENTER_SCREEN,
+ AutoConfigConstants.MINIMIZED_MEDIA_CONTROLS));
+ if (trackNameText != null) {
+ trackNameText.click();
+ }
+ }
+
/**
* Scrolls through the list in search of the provided menu
*
@@ -485,4 +499,23 @@
}
return noLoginMsg.getText();
}
+
+ /** {@inheritDoc} */
+ @Override
+ public void selectMediaTrack(String... menuOptions) {
+ for (String option : menuOptions) {
+ while (true) {
+ UiObject2 object =
+ mDevice.wait(Until.findObject(By.text(option)), UI_RESPONSE_WAIT_MS);
+ if (object != null) {
+ object.click();
+ mDevice.waitForIdle();
+ break;
+ }
+ if (!scrollDownOnePage()) {
+ throw new UnknownUiException("Unable to find object " + option);
+ }
+ }
+ }
+ }
}
diff --git a/tests/automotive/health/mediacenter/src/android/platform/scenario/mediacenter/SwitchPlayback.java b/tests/automotive/health/mediacenter/src/android/platform/scenario/mediacenter/SwitchPlayback.java
new file mode 100644
index 0000000..8a4713e
--- /dev/null
+++ b/tests/automotive/health/mediacenter/src/android/platform/scenario/mediacenter/SwitchPlayback.java
@@ -0,0 +1,37 @@
+/*
+ * 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 android.platform.test.scenario.mediacenter;
+
+import android.platform.helpers.HelperAccessor;
+import android.platform.helpers.IAutoMediaHelper;
+import android.platform.test.scenario.annotation.Scenario;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.JUnit4;
+
+@Scenario
+@RunWith(JUnit4.class)
+public class SwitchPlayback {
+ static HelperAccessor<IAutoMediaHelper> sMediaCenterHelper =
+ new HelperAccessor<>(IAutoMediaHelper.class);
+
+ @Test
+ public void testSwitchPlayback() {
+ sMediaCenterHelper.get().minimizeNowPlaying();
+ sMediaCenterHelper.get().maximizeNowPlaying();
+ }
+}
diff --git a/tests/automotive/health/mediacenter/tests/src/android/platform/scenario/mediacenter/SwitchPlaybackMicrobenchmark.java b/tests/automotive/health/mediacenter/tests/src/android/platform/scenario/mediacenter/SwitchPlaybackMicrobenchmark.java
new file mode 100644
index 0000000..1ea38cf
--- /dev/null
+++ b/tests/automotive/health/mediacenter/tests/src/android/platform/scenario/mediacenter/SwitchPlaybackMicrobenchmark.java
@@ -0,0 +1,46 @@
+/*
+ * 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 android.platform.test.scenario.mediacenter;
+
+import android.platform.test.microbenchmark.Microbenchmark;
+import android.platform.test.option.StringOption;
+
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
+import org.junit.ClassRule;
+import org.junit.runner.RunWith;
+
+@RunWith(Microbenchmark.class)
+public class SwitchPlaybackMicrobenchmark extends SwitchPlayback {
+ public static final String SONG_NAME = "song-name";
+ private static final String DEFAULT_SONG_NAME = "A normal 1H song";
+
+ @ClassRule
+ public static StringOption mSongName =
+ new StringOption(SONG_NAME).setDefault(DEFAULT_SONG_NAME);
+
+ @BeforeClass
+ public static void openApp() {
+ sMediaCenterHelper.get().open();
+ sMediaCenterHelper.get().dismissInitialDialogs();
+ sMediaCenterHelper.get().selectMediaTrack(mSongName.get());
+ }
+
+ @AfterClass
+ public static void closeApp() {
+ sMediaCenterHelper.get().exit();
+ }
+}