summaryrefslogtreecommitdiff
path: root/app/src/androidTest/java/de
diff options
context:
space:
mode:
authorTom Hennen <TomHennen@users.noreply.github.com>2015-10-15 17:09:42 -0400
committerTom Hennen <TomHennen@users.noreply.github.com>2015-10-15 17:09:42 -0400
commit0e2b056d4e069d1ec25bdc7c3f5758254efb2df6 (patch)
treed132a94dc61642ad6476b5241980b63c96943ebf /app/src/androidTest/java/de
parent87b42c23dc6aff1fd14acde7d1773b84f67394f8 (diff)
parent33a3f4ac041697c3c3d3ade9e692a7e380dc529d (diff)
downloadAntennaPod-0e2b056d4e069d1ec25bdc7c3f5758254efb2df6.zip
Merge pull request #1258 from TomHennen/fix_playback_tests
Updated playback tests to make them more reliable
Diffstat (limited to 'app/src/androidTest/java/de')
-rw-r--r--app/src/androidTest/java/de/test/antennapod/ui/PlaybackSonicTest.java143
-rw-r--r--app/src/androidTest/java/de/test/antennapod/ui/PlaybackTest.java147
-rw-r--r--app/src/androidTest/java/de/test/antennapod/ui/UITestUtils.java15
3 files changed, 69 insertions, 236 deletions
diff --git a/app/src/androidTest/java/de/test/antennapod/ui/PlaybackSonicTest.java b/app/src/androidTest/java/de/test/antennapod/ui/PlaybackSonicTest.java
index 17ec87aa3..c43757546 100644
--- a/app/src/androidTest/java/de/test/antennapod/ui/PlaybackSonicTest.java
+++ b/app/src/androidTest/java/de/test/antennapod/ui/PlaybackSonicTest.java
@@ -46,98 +46,6 @@ public class PlaybackSonicTest extends ActivityInstrumentationTestCase2<MainActi
private Context context;
- private PlaybackController controller;
- protected FeedMedia currentMedia;
-
- private PlaybackController createController(Activity activity) {
- return new PlaybackController(activity, false) {
-
- @Override
- public void setupGUI() {
- }
-
- @Override
- public void onPositionObserverUpdate() {
- }
-
- @Override
- public void onBufferStart() {
- }
-
- @Override
- public void onBufferEnd() {
- }
-
- @Override
- public void onBufferUpdate(float progress) {
- }
-
- @Override
- public void handleError(int code) {
- }
-
- @Override
- public void onReloadNotification(int code) {
- }
-
- @Override
- public void onSleepTimerUpdate() {
- }
-
- @Override
- public ImageButton getPlayButton() {
- return null;
- }
-
- @Override
- public void postStatusMsg(int msg) {
- }
-
- @Override
- public void clearStatusMsg() {
- }
-
- @Override
- public boolean loadMediaInfo() {
- Playable playable = controller.getMedia();
- if(playable == null) {
- currentMedia = null;
- return true;
- } else if(playable instanceof FeedMedia) {
- currentMedia = (FeedMedia) playable;
- return true;
- } else {
- return false;
- }
- }
-
- @Override
- public void onAwaitingVideoSurface() {
- }
-
- @Override
- public void onServiceQueried() {
- }
-
- @Override
- public void onShutdownNotification() {
- }
-
- @Override
- public void onPlaybackEnd() {
- currentMedia = null;
- }
-
- @Override
- public void onPlaybackSpeedChange() {
- }
-
- @Override
- protected void setScreenOn(boolean enable) {
- }
- };
- }
-
public PlaybackSonicTest() {
super(MainActivity.class);
}
@@ -158,9 +66,6 @@ public class PlaybackSonicTest extends ActivityInstrumentationTestCase2<MainActi
.putBoolean(UserPreferences.PREF_SONIC, true)
.commit();
- controller = createController(getActivity());
- controller.init();
-
solo = new Solo(getInstrumentation(), getActivity());
uiTestUtils = new UITestUtils(context);
@@ -174,7 +79,6 @@ public class PlaybackSonicTest extends ActivityInstrumentationTestCase2<MainActi
@Override
public void tearDown() throws Exception {
- controller.release();
solo.finishOpenedActivities();
uiTestUtils.tearDown();
@@ -187,6 +91,7 @@ public class PlaybackSonicTest extends ActivityInstrumentationTestCase2<MainActi
private void openNavDrawer() {
solo.clickOnScreen(50, 50);
+ getInstrumentation().waitForIdleSync();
}
private void setContinuousPlaybackPreference(boolean value) {
@@ -209,8 +114,10 @@ public class PlaybackSonicTest extends ActivityInstrumentationTestCase2<MainActi
View targetView = drawerView.getChildAt(EPISODES_DRAWER_LIST_INDEX);
solo.waitForView(targetView);
solo.clickOnView(targetView);
+ getInstrumentation().waitForIdleSync();
solo.waitForText(solo.getString(R.string.all_episodes_short_label));
solo.clickOnText(solo.getString(R.string.all_episodes_short_label));
+ getInstrumentation().waitForIdleSync();
final List<FeedItem> episodes = DBReader.getRecentlyPublishedEpisodes(10);
assertTrue(solo.waitForView(solo.getView(R.id.butSecondaryAction)));
@@ -218,8 +125,8 @@ public class PlaybackSonicTest extends ActivityInstrumentationTestCase2<MainActi
solo.clickOnView(solo.getView(R.id.butSecondaryAction));
long mediaId = episodes.get(0).getMedia().getId();
boolean playing = solo.waitForCondition(() -> {
- if (currentMedia != null) {
- return currentMedia.getId() == mediaId;
+ if (uiTestUtils.getCurrentMedia(getActivity()) != null) {
+ return uiTestUtils.getCurrentMedia(getActivity()).getId() == mediaId;
} else {
return false;
}
@@ -237,16 +144,17 @@ public class PlaybackSonicTest extends ActivityInstrumentationTestCase2<MainActi
// this should be 'Queue'
View targetView = drawerView.getChildAt(QUEUE_DRAWER_LIST_INDEX);
solo.waitForView(targetView);
+ getInstrumentation().waitForIdleSync();
solo.clickOnView(targetView);
-
assertTrue(solo.waitForView(solo.getView(R.id.butSecondaryAction)));
+
final List<FeedItem> queue = DBReader.getQueue();
solo.clickOnImageButton(1);
assertTrue(solo.waitForView(solo.getView(R.id.butPlay)));
long mediaId = queue.get(0).getMedia().getId();
boolean playing = solo.waitForCondition(() -> {
- if(currentMedia != null) {
- return currentMedia.getId() == mediaId;
+ if(uiTestUtils.getCurrentMedia(getActivity()) != null) {
+ return uiTestUtils.getCurrentMedia(getActivity()).getId() == mediaId;
} else {
return false;
}
@@ -276,15 +184,19 @@ public class PlaybackSonicTest extends ActivityInstrumentationTestCase2<MainActi
startLocalPlaybackFromQueue();
boolean stopped = solo.waitForCondition(() -> {
- if (currentMedia != null) {
- return currentMedia.getId() != first.getMedia().getId();
+ if (uiTestUtils.getPlaybackController(getActivity()).getStatus()
+ != PlayerStatus.PLAYING) {
+ return true;
+ } else if (uiTestUtils.getCurrentMedia(getActivity()) != null) {
+ return uiTestUtils.getCurrentMedia(getActivity()).getId()
+ != first.getMedia().getId();
} else {
- return false;
+ return true;
}
}, Timeout.getSmallTimeout());
assertTrue(stopped);
Thread.sleep(1000);
- PlayerStatus status = controller.getStatus();
+ PlayerStatus status = uiTestUtils.getPlaybackController(getActivity()).getStatus();
assertFalse(status.equals(PlayerStatus.PLAYING));
}
@@ -298,16 +210,18 @@ public class PlaybackSonicTest extends ActivityInstrumentationTestCase2<MainActi
startLocalPlaybackFromQueue();
boolean firstPlaying = solo.waitForCondition(() -> {
- if (currentMedia != null) {
- return currentMedia.getId() == first.getMedia().getId();
+ if (uiTestUtils.getCurrentMedia(getActivity()) != null) {
+ return uiTestUtils.getCurrentMedia(getActivity()).getId()
+ == first.getMedia().getId();
} else {
return false;
}
}, Timeout.getSmallTimeout());
assertTrue(firstPlaying);
boolean secondPlaying = solo.waitForCondition(() -> {
- if (currentMedia != null) {
- return currentMedia.getId() == second.getMedia().getId();
+ if (uiTestUtils.getCurrentMedia(getActivity()) != null) {
+ return uiTestUtils.getCurrentMedia(getActivity()).getId()
+ == second.getMedia().getId();
} else {
return false;
}
@@ -327,8 +241,8 @@ public class PlaybackSonicTest extends ActivityInstrumentationTestCase2<MainActi
startLocalPlayback();
long mediaId = episodes.get(0).getMedia().getId();
boolean startedPlaying = solo.waitForCondition(() -> {
- if (currentMedia != null) {
- return currentMedia.getId() == mediaId;
+ if (uiTestUtils.getCurrentMedia(getActivity()) != null) {
+ return uiTestUtils.getCurrentMedia(getActivity()).getId() == mediaId;
} else {
return false;
}
@@ -336,14 +250,15 @@ public class PlaybackSonicTest extends ActivityInstrumentationTestCase2<MainActi
assertTrue(startedPlaying);
boolean stoppedPlaying = solo.waitForCondition(() -> {
- return currentMedia == null || currentMedia.getId() != mediaId;
+ return uiTestUtils.getCurrentMedia(getActivity()) == null
+ || uiTestUtils.getCurrentMedia(getActivity()).getId() != mediaId;
}, Timeout.getLargeTimeout());
assertTrue(stoppedPlaying);
startLocalPlayback();
boolean startedReplay = solo.waitForCondition(() -> {
- if(currentMedia != null) {
- return currentMedia.getId() == mediaId;
+ if(uiTestUtils.getCurrentMedia(getActivity()) != null) {
+ return uiTestUtils.getCurrentMedia(getActivity()).getId() == mediaId;
} else {
return false;
}
diff --git a/app/src/androidTest/java/de/test/antennapod/ui/PlaybackTest.java b/app/src/androidTest/java/de/test/antennapod/ui/PlaybackTest.java
index a27089726..195e3d250 100644
--- a/app/src/androidTest/java/de/test/antennapod/ui/PlaybackTest.java
+++ b/app/src/androidTest/java/de/test/antennapod/ui/PlaybackTest.java
@@ -1,6 +1,5 @@
package de.test.antennapod.ui;
-import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
@@ -8,7 +7,6 @@ import android.preference.PreferenceManager;
import android.test.ActivityInstrumentationTestCase2;
import android.test.FlakyTest;
import android.view.View;
-import android.widget.ImageButton;
import android.widget.ListView;
import com.robotium.solo.Solo;
@@ -19,15 +17,12 @@ import java.util.List;
import de.danoeh.antennapod.R;
import de.danoeh.antennapod.activity.MainActivity;
import de.danoeh.antennapod.core.feed.FeedItem;
-import de.danoeh.antennapod.core.feed.FeedMedia;
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.core.storage.DBWriter;
import de.danoeh.antennapod.core.storage.PodDBAdapter;
-import de.danoeh.antennapod.core.util.playback.Playable;
-import de.danoeh.antennapod.core.util.playback.PlaybackController;
/**
* test cases for starting and ending playback from the MainActivity and AudioPlayerActivity
@@ -43,98 +38,6 @@ public class PlaybackTest extends ActivityInstrumentationTestCase2<MainActivity>
private Context context;
- private PlaybackController controller;
- protected FeedMedia currentMedia;
-
- private PlaybackController createController(Activity activity) {
- return new PlaybackController(activity, false) {
-
- @Override
- public void setupGUI() {
- }
-
- @Override
- public void onPositionObserverUpdate() {
- }
-
- @Override
- public void onBufferStart() {
- }
-
- @Override
- public void onBufferEnd() {
- }
-
- @Override
- public void onBufferUpdate(float progress) {
- }
-
- @Override
- public void handleError(int code) {
- }
-
- @Override
- public void onReloadNotification(int code) {
- }
-
- @Override
- public void onSleepTimerUpdate() {
- }
-
- @Override
- public ImageButton getPlayButton() {
- return null;
- }
-
- @Override
- public void postStatusMsg(int msg) {
- }
-
- @Override
- public void clearStatusMsg() {
- }
-
- @Override
- public boolean loadMediaInfo() {
- Playable playable = controller.getMedia();
- if(playable == null) {
- currentMedia = null;
- return true;
- } else if(playable instanceof FeedMedia) {
- currentMedia = (FeedMedia) playable;
- return true;
- } else {
- return false;
- }
- }
-
- @Override
- public void onAwaitingVideoSurface() {
- }
-
- @Override
- public void onServiceQueried() {
- }
-
- @Override
- public void onShutdownNotification() {
- }
-
- @Override
- public void onPlaybackEnd() {
- currentMedia = null;
- }
-
- @Override
- public void onPlaybackSpeedChange() {
- }
-
- @Override
- protected void setScreenOn(boolean enable) {
- }
- };
- }
-
public PlaybackTest() {
super(MainActivity.class);
}
@@ -154,9 +57,6 @@ public class PlaybackTest extends ActivityInstrumentationTestCase2<MainActivity>
.putBoolean(UserPreferences.PREF_PAUSE_ON_HEADSET_DISCONNECT, false)
.commit();
- controller = createController(getActivity());
- controller.init();
-
solo = new Solo(getInstrumentation(), getActivity());
uiTestUtils = new UITestUtils(context);
@@ -170,7 +70,6 @@ public class PlaybackTest extends ActivityInstrumentationTestCase2<MainActivity>
@Override
public void tearDown() throws Exception {
- controller.release();
solo.finishOpenedActivities();
uiTestUtils.tearDown();
@@ -214,8 +113,8 @@ public class PlaybackTest extends ActivityInstrumentationTestCase2<MainActivity>
solo.clickOnView(solo.getView(R.id.butSecondaryAction));
long mediaId = episodes.get(0).getMedia().getId();
boolean playing = solo.waitForCondition(() -> {
- if (currentMedia != null) {
- return currentMedia.getId() == mediaId;
+ if (uiTestUtils.getCurrentMedia(getActivity()) != null) {
+ return uiTestUtils.getCurrentMedia(getActivity()).getId() == mediaId;
} else {
return false;
}
@@ -225,7 +124,6 @@ public class PlaybackTest extends ActivityInstrumentationTestCase2<MainActivity>
private void startLocalPlaybackFromQueue() {
openNavDrawer();
-
// if we try to just click on plain old text then
// we might wind up clicking on the fragment title and not
// the drawer element like we want.
@@ -234,19 +132,20 @@ public class PlaybackTest extends ActivityInstrumentationTestCase2<MainActivity>
View targetView = drawerView.getChildAt(QUEUE_DRAWER_LIST_INDEX);
solo.waitForView(targetView);
solo.clickOnView(targetView);
-
assertTrue(solo.waitForView(solo.getView(R.id.butSecondaryAction)));
+
final List<FeedItem> queue = DBReader.getQueue();
solo.clickOnImageButton(1);
assertTrue(solo.waitForView(solo.getView(R.id.butPlay)));
long mediaId = queue.get(0).getMedia().getId();
boolean playing = solo.waitForCondition(() -> {
- if(currentMedia != null) {
- return currentMedia.getId() == mediaId;
+ if(uiTestUtils.getCurrentMedia(getActivity()) != null) {
+ return uiTestUtils.getCurrentMedia(getActivity()).getId() == mediaId;
} else {
return false;
}
}, Timeout.getSmallTimeout());
+
assertTrue(playing);
}
@@ -269,18 +168,21 @@ public class PlaybackTest extends ActivityInstrumentationTestCase2<MainActivity>
uiTestUtils.addLocalFeedData(true);
List<FeedItem> queue = DBReader.getQueue();
final FeedItem first = queue.get(0);
-
startLocalPlaybackFromQueue();
boolean stopped = solo.waitForCondition(() -> {
- if (currentMedia != null) {
- return currentMedia.getId() != first.getMedia().getId();
+ if (uiTestUtils.getPlaybackController(getActivity()).getStatus()
+ != PlayerStatus.PLAYING) {
+ return true;
+ } else if (uiTestUtils.getCurrentMedia(getActivity()) != null) {
+ return uiTestUtils.getCurrentMedia(getActivity()).getId()
+ != first.getMedia().getId();
} else {
- return false;
+ return true;
}
}, Timeout.getSmallTimeout());
assertTrue(stopped);
Thread.sleep(1000);
- PlayerStatus status = controller.getStatus();
+ PlayerStatus status = uiTestUtils.getPlaybackController(getActivity()).getStatus();
assertFalse(status.equals(PlayerStatus.PLAYING));
}
@@ -294,16 +196,18 @@ public class PlaybackTest extends ActivityInstrumentationTestCase2<MainActivity>
startLocalPlaybackFromQueue();
boolean firstPlaying = solo.waitForCondition(() -> {
- if (currentMedia != null) {
- return currentMedia.getId() == first.getMedia().getId();
+ if (uiTestUtils.getCurrentMedia(getActivity()) != null) {
+ return uiTestUtils.getCurrentMedia(getActivity()).getId()
+ == first.getMedia().getId();
} else {
return false;
}
}, Timeout.getSmallTimeout());
assertTrue(firstPlaying);
boolean secondPlaying = solo.waitForCondition(() -> {
- if (currentMedia != null) {
- return currentMedia.getId() == second.getMedia().getId();
+ if (uiTestUtils.getCurrentMedia(getActivity()) != null) {
+ return uiTestUtils.getCurrentMedia(getActivity()).getId()
+ == second.getMedia().getId();
} else {
return false;
}
@@ -323,8 +227,8 @@ public class PlaybackTest extends ActivityInstrumentationTestCase2<MainActivity>
startLocalPlayback();
long mediaId = episodes.get(0).getMedia().getId();
boolean startedPlaying = solo.waitForCondition(() -> {
- if (currentMedia != null) {
- return currentMedia.getId() == mediaId;
+ if (uiTestUtils.getCurrentMedia(getActivity()) != null) {
+ return uiTestUtils.getCurrentMedia(getActivity()).getId() == mediaId;
} else {
return false;
}
@@ -332,14 +236,15 @@ public class PlaybackTest extends ActivityInstrumentationTestCase2<MainActivity>
assertTrue(startedPlaying);
boolean stoppedPlaying = solo.waitForCondition(() -> {
- return currentMedia == null || currentMedia.getId() != mediaId;
+ return uiTestUtils.getCurrentMedia(getActivity()) == null
+ || uiTestUtils.getCurrentMedia(getActivity()).getId() != mediaId;
}, Timeout.getLargeTimeout());
assertTrue(stoppedPlaying);
startLocalPlayback();
boolean startedReplay = solo.waitForCondition(() -> {
- if(currentMedia != null) {
- return currentMedia.getId() == mediaId;
+ if(uiTestUtils.getCurrentMedia(getActivity()) != null) {
+ return uiTestUtils.getCurrentMedia(getActivity()).getId() == mediaId;
} else {
return false;
}
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 973426841..9670a596a 100644
--- a/app/src/androidTest/java/de/test/antennapod/ui/UITestUtils.java
+++ b/app/src/androidTest/java/de/test/antennapod/ui/UITestUtils.java
@@ -21,6 +21,7 @@ import java.util.Date;
import java.util.List;
import de.danoeh.antennapod.R;
+import de.danoeh.antennapod.activity.MainActivity;
import de.danoeh.antennapod.core.feed.EventDistributor;
import de.danoeh.antennapod.core.feed.Feed;
import de.danoeh.antennapod.core.feed.FeedImage;
@@ -28,6 +29,8 @@ import de.danoeh.antennapod.core.feed.FeedItem;
import de.danoeh.antennapod.core.feed.FeedMedia;
import de.danoeh.antennapod.core.event.QueueEvent;
import de.danoeh.antennapod.core.storage.PodDBAdapter;
+import de.danoeh.antennapod.core.util.playback.PlaybackController;
+import de.danoeh.antennapod.fragment.ExternalPlayerFragment;
import de.greenrobot.event.EventBus;
import de.test.antennapod.util.service.download.HTTPBin;
import de.test.antennapod.util.syndication.feedgenerator.RSS2Generator;
@@ -47,6 +50,7 @@ public class UITestUtils {
public static final int NUM_ITEMS_PER_FEED = 10;
public static final int HOME_VIEW = (Build.VERSION.SDK_INT >= 11) ? android.R.id.home : R.id.home;
+ public static final String TEST_FILE_NAME = "3sec.mp3";
private Context context;
@@ -119,7 +123,7 @@ public class UITestUtils {
}
Assert.assertFalse(mediaFile.exists());
- InputStream in = context.getAssets().open("testfile.mp3");
+ InputStream in = context.getAssets().open(TEST_FILE_NAME);
Assert.assertNotNull(in);
FileOutputStream out = new FileOutputStream(mediaFile);
@@ -218,4 +222,13 @@ public class UITestUtils {
EventDistributor.getInstance().sendFeedUpdateBroadcast();
EventBus.getDefault().post(new QueueEvent(QueueEvent.Action.ADDED_ITEMS, queue));
}
+
+ public PlaybackController getPlaybackController(MainActivity mainActivity) {
+ ExternalPlayerFragment fragment = (ExternalPlayerFragment)mainActivity.getSupportFragmentManager().findFragmentByTag(ExternalPlayerFragment.TAG);
+ return fragment.getPlaybackControllerTestingOnly();
+ }
+
+ public FeedMedia getCurrentMedia(MainActivity mainActivity) {
+ return (FeedMedia)getPlaybackController(mainActivity).getMedia();
+ }
}