From 19c7108dfb3fd2ba09572c6ec84e8f46924b1644 Mon Sep 17 00:00:00 2001 From: ByteHamster Date: Thu, 28 Nov 2019 11:09:19 +0100 Subject: Added test for changing playback speed --- app/src/androidTest/assets/3sec.mp3 | Bin 49043 -> 0 bytes app/src/androidTest/assets/testfile.mp3 | Bin 20606 -> 0 bytes .../playback/PlaybackServiceMediaPlayerTest.java | 2 +- .../de/test/antennapod/ui/SpeedChangeTest.java | 121 +++++++++++++++++++++ .../java/de/test/antennapod/ui/UITestUtils.java | 12 +- app/src/main/assets/30sec.mp3 | Bin 0 -> 120017 bytes app/src/main/assets/testfile.mp3 | Bin 20606 -> 0 bytes 7 files changed, 129 insertions(+), 6 deletions(-) delete mode 100644 app/src/androidTest/assets/3sec.mp3 delete mode 100644 app/src/androidTest/assets/testfile.mp3 create mode 100644 app/src/androidTest/java/de/test/antennapod/ui/SpeedChangeTest.java create mode 100644 app/src/main/assets/30sec.mp3 delete mode 100644 app/src/main/assets/testfile.mp3 (limited to 'app') diff --git a/app/src/androidTest/assets/3sec.mp3 b/app/src/androidTest/assets/3sec.mp3 deleted file mode 100644 index 8ae450d01..000000000 Binary files a/app/src/androidTest/assets/3sec.mp3 and /dev/null differ diff --git a/app/src/androidTest/assets/testfile.mp3 b/app/src/androidTest/assets/testfile.mp3 deleted file mode 100644 index f15faadf3..000000000 Binary files a/app/src/androidTest/assets/testfile.mp3 and /dev/null differ diff --git a/app/src/androidTest/java/de/test/antennapod/service/playback/PlaybackServiceMediaPlayerTest.java b/app/src/androidTest/java/de/test/antennapod/service/playback/PlaybackServiceMediaPlayerTest.java index c43818a73..3511fd0b1 100644 --- a/app/src/androidTest/java/de/test/antennapod/service/playback/PlaybackServiceMediaPlayerTest.java +++ b/app/src/androidTest/java/de/test/antennapod/service/playback/PlaybackServiceMediaPlayerTest.java @@ -81,7 +81,7 @@ public class PlaybackServiceMediaPlayerTest { assertTrue(cacheDir.canWrite()); assertTrue(cacheDir.canRead()); if (!dest.exists()) { - InputStream i = InstrumentationRegistry.getContext().getAssets().open("testfile.mp3"); + InputStream i = InstrumentationRegistry.getContext().getAssets().open("3sec.mp3"); OutputStream o = new FileOutputStream(new File(cacheDir, PLAYABLE_DEST_URL)); IOUtils.copy(i, o); o.flush(); diff --git a/app/src/androidTest/java/de/test/antennapod/ui/SpeedChangeTest.java b/app/src/androidTest/java/de/test/antennapod/ui/SpeedChangeTest.java new file mode 100644 index 000000000..d28858f72 --- /dev/null +++ b/app/src/androidTest/java/de/test/antennapod/ui/SpeedChangeTest.java @@ -0,0 +1,121 @@ +package de.test.antennapod.ui; + +import android.content.Context; +import android.content.Intent; +import android.content.SharedPreferences; +import android.preference.PreferenceManager; +import androidx.test.rule.ActivityTestRule; +import androidx.test.runner.AndroidJUnit4; +import de.danoeh.antennapod.R; +import de.danoeh.antennapod.activity.AudioplayerActivity; +import de.danoeh.antennapod.core.feed.FeedItem; +import de.danoeh.antennapod.core.preferences.PlaybackPreferences; +import de.danoeh.antennapod.core.preferences.UserPreferences; +import de.danoeh.antennapod.core.service.playback.PlaybackService; +import de.danoeh.antennapod.core.service.playback.PlayerStatus; +import de.danoeh.antennapod.core.storage.DBReader; +import de.danoeh.antennapod.fragment.QueueFragment; +import de.test.antennapod.EspressoTestUtils; +import org.awaitility.Awaitility; +import org.junit.After; +import org.junit.Before; +import org.junit.Rule; +import org.junit.Test; +import org.junit.runner.RunWith; + +import java.util.List; +import java.util.concurrent.TimeUnit; + +import static androidx.test.espresso.Espresso.onView; +import static androidx.test.espresso.action.ViewActions.click; +import static androidx.test.espresso.assertion.ViewAssertions.matches; +import static androidx.test.espresso.matcher.ViewMatchers.isRoot; +import static androidx.test.espresso.matcher.ViewMatchers.withId; +import static androidx.test.espresso.matcher.ViewMatchers.withText; +import static androidx.test.platform.app.InstrumentationRegistry.getInstrumentation; +import static de.test.antennapod.EspressoTestUtils.waitForView; + +/** + * User interface tests for changing the playback speed. + */ +@RunWith(AndroidJUnit4.class) +public class SpeedChangeTest { + + @Rule + public ActivityTestRule activityRule + = new ActivityTestRule<>(AudioplayerActivity.class, false, false); + private UITestUtils uiTestUtils; + private String[] availableSpeeds; + + @Before + public void setUp() throws Exception { + EspressoTestUtils.clearPreferences(); + EspressoTestUtils.makeNotFirstRun(); + EspressoTestUtils.clearDatabase(); + EspressoTestUtils.setLastNavFragment(QueueFragment.TAG); + + Context context = getInstrumentation().getTargetContext(); + SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context); + prefs.edit().putBoolean(UserPreferences.PREF_FOLLOW_QUEUE, true).commit(); + + uiTestUtils = new UITestUtils(context); + uiTestUtils.setup(); + uiTestUtils.setMediaFileName("30sec.mp3"); + uiTestUtils.addLocalFeedData(true); + + List queue = DBReader.getQueue(); + PlaybackPreferences.writeMediaPlaying(queue.get(0).getMedia(), PlayerStatus.PAUSED, false); + UserPreferences.setPlaybackSpeedArray(new String[] {"1.00", "2.00", "3.00"}); + availableSpeeds = UserPreferences.getPlaybackSpeedArray(); + + context.sendBroadcast(new Intent(PlaybackService.ACTION_SHUTDOWN_PLAYBACK_SERVICE)); + Awaitility.await().until(() -> !PlaybackService.isRunning); + + activityRule.launchActivity(new Intent()); + } + + @After + public void tearDown() throws Exception { + uiTestUtils.tearDown(); + } + + @Test + public void testChangeSpeedServiceNotRunning() { + clickThroughSpeeds(); + } + + @Test + public void testChangeSpeedPlaying() { + onView(isRoot()).perform(waitForView(withId(R.id.butPlay), 1000)); + onView(withId(R.id.butPlay)).perform(click()); + Awaitility.await().atMost(1, TimeUnit.SECONDS).until(() + -> activityRule.getActivity().getPlaybackController().getStatus() == PlayerStatus.PLAYING); + clickThroughSpeeds(); + } + + @Test + public void testChangeSpeedPaused() { + onView(isRoot()).perform(waitForView(withId(R.id.butPlay), 1000)); + onView(withId(R.id.butPlay)).perform(click()); + Awaitility.await().atMost(1, TimeUnit.SECONDS).until(() + -> activityRule.getActivity().getPlaybackController().getStatus() == PlayerStatus.PLAYING); + onView(withId(R.id.butPlay)).perform(click()); + Awaitility.await().atMost(1, TimeUnit.SECONDS).until(() + -> activityRule.getActivity().getPlaybackController().getStatus() == PlayerStatus.PAUSED); + clickThroughSpeeds(); + } + + private void clickThroughSpeeds() { + onView(isRoot()).perform(waitForView(withText(availableSpeeds[0]), 1000)); + onView(withId(R.id.txtvPlaybackSpeed)).check(matches(withText(availableSpeeds[0]))); + onView(withId(R.id.butPlaybackSpeed)).perform(click()); + onView(isRoot()).perform(waitForView(withText(availableSpeeds[1]), 1000)); + onView(withId(R.id.txtvPlaybackSpeed)).check(matches(withText(availableSpeeds[1]))); + onView(withId(R.id.butPlaybackSpeed)).perform(click()); + onView(isRoot()).perform(waitForView(withText(availableSpeeds[2]), 1000)); + onView(withId(R.id.txtvPlaybackSpeed)).check(matches(withText(availableSpeeds[2]))); + onView(withId(R.id.butPlaybackSpeed)).perform(click()); + onView(isRoot()).perform(waitForView(withText(availableSpeeds[0]), 1000)); + onView(withId(R.id.txtvPlaybackSpeed)).check(matches(withText(availableSpeeds[0]))); + } +} diff --git a/app/src/androidTest/java/de/test/antennapod/ui/UITestUtils.java b/app/src/androidTest/java/de/test/antennapod/ui/UITestUtils.java index f25159046..66404e2a8 100644 --- a/app/src/androidTest/java/de/test/antennapod/ui/UITestUtils.java +++ b/app/src/androidTest/java/de/test/antennapod/ui/UITestUtils.java @@ -41,9 +41,7 @@ public class UITestUtils { private static final int NUM_FEEDS = 5; private static final int NUM_ITEMS_PER_FEED = 10; - private static final String TEST_FILE_NAME = "3sec.mp3"; - - + private String testFileName = "3sec.mp3"; private final Context context; private final HTTPBin server = new HTTPBin(); private File destDir; @@ -109,12 +107,12 @@ public class UITestUtils { private File newMediaFile(String name) throws IOException { File mediaFile = new File(hostedMediaDir, name); - if(mediaFile.exists()) { + if (mediaFile.exists()) { mediaFile.delete(); } Assert.assertFalse(mediaFile.exists()); - InputStream in = context.getAssets().open(TEST_FILE_NAME); + InputStream in = context.getAssets().open(testFileName); Assert.assertNotNull(in); FileOutputStream out = new FileOutputStream(mediaFile); @@ -213,4 +211,8 @@ public class UITestUtils { public FeedMedia getCurrentMedia(MainActivity mainActivity) { return (FeedMedia)getPlaybackController(mainActivity).getMedia(); } + + public void setMediaFileName(String filename) { + testFileName = filename; + } } diff --git a/app/src/main/assets/30sec.mp3 b/app/src/main/assets/30sec.mp3 new file mode 100644 index 000000000..48e398434 Binary files /dev/null and b/app/src/main/assets/30sec.mp3 differ diff --git a/app/src/main/assets/testfile.mp3 b/app/src/main/assets/testfile.mp3 deleted file mode 100644 index f15faadf3..000000000 Binary files a/app/src/main/assets/testfile.mp3 and /dev/null differ -- cgit v1.2.3