summaryrefslogtreecommitdiff
path: root/app/src/androidTest/java/de/test/antennapod/ui
diff options
context:
space:
mode:
authorByteHamster <info@bytehamster.com>2019-08-11 21:21:28 +0200
committerByteHamster <info@bytehamster.com>2019-08-11 21:21:28 +0200
commitc29b0ce8c760b75b4c61781acaf56542530ca3cc (patch)
tree56f8509d615bd11ed9fe90c188fd7f6e7415587e /app/src/androidTest/java/de/test/antennapod/ui
parentaca6e3e9e4a69cef4ad7032eb06d49f3c842408f (diff)
downloadAntennaPod-c29b0ce8c760b75b4c61781acaf56542530ca3cc.zip
Fixed app integration tests
Diffstat (limited to 'app/src/androidTest/java/de/test/antennapod/ui')
-rw-r--r--app/src/androidTest/java/de/test/antennapod/ui/MainActivityTest.java242
-rw-r--r--app/src/androidTest/java/de/test/antennapod/ui/NavigationDrawerTest.java253
-rw-r--r--app/src/androidTest/java/de/test/antennapod/ui/PlaybackSonicTest.java52
-rw-r--r--app/src/androidTest/java/de/test/antennapod/ui/PlaybackTest.java52
-rw-r--r--app/src/androidTest/java/de/test/antennapod/ui/PreferencesTest.java294
-rw-r--r--app/src/androidTest/java/de/test/antennapod/ui/UITestUtils.java7
-rw-r--r--app/src/androidTest/java/de/test/antennapod/ui/UITestUtilsTest.java31
-rw-r--r--app/src/androidTest/java/de/test/antennapod/ui/VideoplayerActivityTest.java42
8 files changed, 537 insertions, 436 deletions
diff --git a/app/src/androidTest/java/de/test/antennapod/ui/MainActivityTest.java b/app/src/androidTest/java/de/test/antennapod/ui/MainActivityTest.java
index 8e0064079..d013ab9cf 100644
--- a/app/src/androidTest/java/de/test/antennapod/ui/MainActivityTest.java
+++ b/app/src/androidTest/java/de/test/antennapod/ui/MainActivityTest.java
@@ -1,28 +1,22 @@
package de.test.antennapod.ui;
+import android.app.Activity;
import android.content.Context;
+import android.content.Intent;
import android.content.SharedPreferences;
-import android.support.test.espresso.contrib.DrawerActions;
+import android.support.test.InstrumentationRegistry;
import android.support.test.espresso.intent.Intents;
-import android.support.test.filters.FlakyTest;
import android.support.test.rule.ActivityTestRule;
import android.support.test.runner.AndroidJUnit4;
-import android.view.Gravity;
-import android.widget.ListView;
import com.robotium.solo.Solo;
import com.robotium.solo.Timeout;
import de.danoeh.antennapod.R;
import de.danoeh.antennapod.activity.MainActivity;
import de.danoeh.antennapod.activity.OnlineFeedViewActivity;
-import de.danoeh.antennapod.activity.PreferenceActivity;
import de.danoeh.antennapod.core.feed.Feed;
-import de.danoeh.antennapod.core.preferences.UserPreferences;
import de.danoeh.antennapod.core.storage.PodDBAdapter;
import de.danoeh.antennapod.dialog.RatingDialog;
-import de.danoeh.antennapod.fragment.DownloadsFragment;
-import de.danoeh.antennapod.fragment.EpisodesFragment;
-import de.danoeh.antennapod.fragment.PlaybackHistoryFragment;
-import de.danoeh.antennapod.fragment.QueueFragment;
+import de.test.antennapod.EspressoTestUtils;
import org.junit.After;
import org.junit.Before;
import org.junit.Rule;
@@ -30,23 +24,18 @@ import org.junit.Test;
import org.junit.runner.RunWith;
import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
import static android.support.test.InstrumentationRegistry.getInstrumentation;
import static android.support.test.espresso.Espresso.onView;
import static android.support.test.espresso.action.ViewActions.click;
-import static android.support.test.espresso.action.ViewActions.longClick;
-import static android.support.test.espresso.assertion.ViewAssertions.matches;
-import static android.support.test.espresso.contrib.DrawerMatchers.isClosed;
-import static android.support.test.espresso.intent.Intents.intended;
-import static android.support.test.espresso.intent.matcher.IntentMatchers.hasComponent;
+import static android.support.test.espresso.contrib.ActivityResultMatchers.hasResultCode;
import static android.support.test.espresso.matcher.ViewMatchers.withId;
import static android.support.test.espresso.matcher.ViewMatchers.withText;
-import static de.test.antennapod.NthMatcher.first;
+import static de.test.antennapod.EspressoTestUtils.clickPreference;
+import static de.test.antennapod.EspressoTestUtils.openNavDrawer;
import static junit.framework.TestCase.assertTrue;
import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertThat;
/**
* User interface tests for MainActivity
@@ -59,10 +48,19 @@ public class MainActivityTest {
private SharedPreferences prefs;
@Rule
- public ActivityTestRule<MainActivity> mActivityRule = new ActivityTestRule<>(MainActivity.class);
+ public ActivityTestRule<MainActivity> mActivityRule = new ActivityTestRule<>(MainActivity.class, false, false);
@Before
public void setUp() throws IOException {
+ // override first launch preference
+ // do this BEFORE calling getActivity()!
+ EspressoTestUtils.clearAppData();
+ prefs = InstrumentationRegistry.getContext()
+ .getSharedPreferences(MainActivity.PREF_NAME, Context.MODE_PRIVATE);
+ prefs.edit().putBoolean(MainActivity.PREF_IS_FIRST_LAUNCH, false).commit();
+
+ mActivityRule.launchActivity(new Intent());
+
Intents.init();
Context context = mActivityRule.getActivity();
uiTestUtils = new UITestUtils(context);
@@ -75,11 +73,6 @@ public class MainActivityTest {
adapter.open();
adapter.close();
- // override first launch preference
- // do this BEFORE calling getActivity()!
- prefs = context.getSharedPreferences(MainActivity.PREF_NAME, Context.MODE_PRIVATE);
- prefs.edit().putBoolean(MainActivity.PREF_IS_FIRST_LAUNCH, false).commit();
-
RatingDialog.init(context);
RatingDialog.saveRated();
@@ -95,19 +88,13 @@ public class MainActivityTest {
prefs.edit().clear().commit();
}
- private void openNavDrawer() {
- onView(withId(R.id.drawer_layout))
- .check(matches(isClosed(Gravity.LEFT)))
- .perform(DrawerActions.open());
- }
-
@Test
public void testAddFeed() throws Exception {
uiTestUtils.addHostedFeedData();
final Feed feed = uiTestUtils.hostedFeeds.get(0);
openNavDrawer();
solo.clickOnText(solo.getString(R.string.add_feed_label));
- solo.enterText(0, feed.getDownload_url());
+ solo.enterText(1, feed.getDownload_url());
solo.clickOnButton(solo.getString(R.string.confirm_label));
solo.waitForActivity(OnlineFeedViewActivity.class);
solo.waitForView(R.id.butSubscribe);
@@ -116,154 +103,23 @@ public class MainActivityTest {
assertTrue(solo.waitForText(solo.getString(R.string.open_podcast), 0, Timeout.getLargeTimeout(), false));
}
-
- @Test
- @FlakyTest
- public void testClickNavDrawer() throws Exception {
- uiTestUtils.addLocalFeedData(false);
-
- UserPreferences.setHiddenDrawerItems(new ArrayList<>());
-
- // queue
- openNavDrawer();
- solo.clickOnText(solo.getString(R.string.queue_label));
- solo.waitForView(android.R.id.list);
- assertEquals(solo.getString(R.string.queue_label), getActionbarTitle());
-
- // episodes
- openNavDrawer();
- solo.clickOnText(solo.getString(R.string.episodes_label));
- solo.waitForView(android.R.id.list);
- assertEquals(solo.getString(R.string.episodes_label), getActionbarTitle());
-
- // Subscriptions
- openNavDrawer();
- solo.clickOnText(solo.getString(R.string.subscriptions_label));
- solo.waitForView(R.id.subscriptions_grid);
- assertEquals(solo.getString(R.string.subscriptions_label), getActionbarTitle());
-
- // downloads
- openNavDrawer();
- solo.clickOnText(solo.getString(R.string.downloads_label));
- solo.waitForView(android.R.id.list);
- assertEquals(solo.getString(R.string.downloads_label), getActionbarTitle());
-
- // playback history
- openNavDrawer();
- solo.clickOnText(solo.getString(R.string.playback_history_label));
- solo.waitForView(android.R.id.list);
- assertEquals(solo.getString(R.string.playback_history_label), getActionbarTitle());
-
- // add podcast
- openNavDrawer();
- solo.clickOnText(solo.getString(R.string.add_feed_label));
- solo.waitForView(R.id.txtvFeedurl);
- assertEquals(solo.getString(R.string.add_feed_label), getActionbarTitle());
-
- // podcasts
- ListView list = (ListView) solo.getView(R.id.nav_list);
- for (int i = 0; i < uiTestUtils.hostedFeeds.size(); i++) {
- Feed f = uiTestUtils.hostedFeeds.get(i);
- openNavDrawer();
- solo.scrollListToLine(list, i);
- solo.clickOnText(f.getTitle());
- solo.waitForView(android.R.id.list);
- assertEquals("", getActionbarTitle());
- }
- }
-
private String getActionbarTitle() {
return ((MainActivity) solo.getCurrentActivity()).getSupportActionBar().getTitle().toString();
}
-
@Test
- @FlakyTest
- public void testGoToPreferences() {
+ public void testBackButtonBehaviorGoToPage() {
openNavDrawer();
onView(withText(R.string.settings_label)).perform(click());
- intended(hasComponent(PreferenceActivity.class.getName()));
- }
+ clickPreference(R.string.user_interface_label);
+ clickPreference(R.string.pref_back_button_behavior_title);
- @Test
- public void testDrawerPreferencesHideSomeElements() {
- UserPreferences.setHiddenDrawerItems(new ArrayList<>());
- openNavDrawer();
- onView(first(withText(R.string.queue_label))).perform(longClick());
- onView(withText(R.string.episodes_label)).perform(click());
- onView(withText(R.string.playback_history_label)).perform(click());
- onView(withText(R.string.confirm_label)).perform(click());
-
- List<String> hidden = UserPreferences.getHiddenDrawerItems();
- assertEquals(2, hidden.size());
- assertTrue(hidden.contains(EpisodesFragment.TAG));
- assertTrue(hidden.contains(PlaybackHistoryFragment.TAG));
- }
-
- @Test
- public void testDrawerPreferencesUnhideSomeElements() {
- List<String> hidden = Arrays.asList(PlaybackHistoryFragment.TAG, DownloadsFragment.TAG);
- UserPreferences.setHiddenDrawerItems(hidden);
- openNavDrawer();
- onView(first(withText(R.string.queue_label))).perform(longClick());
-
- onView(withText(R.string.downloads_label)).perform(click());
- onView(withText(R.string.queue_label)).perform(click());
- onView(withText(R.string.confirm_label)).perform(click());
-
- hidden = UserPreferences.getHiddenDrawerItems();
- assertEquals(2, hidden.size());
- assertTrue(hidden.contains(QueueFragment.TAG));
- assertTrue(hidden.contains(PlaybackHistoryFragment.TAG));
- }
-
-
- @Test
- public void testDrawerPreferencesHideAllElements() {
- UserPreferences.setHiddenDrawerItems(new ArrayList<>());
- String[] titles = mActivityRule.getActivity().getResources().getStringArray(R.array.nav_drawer_titles);
-
- openNavDrawer();
- onView(first(withText(R.string.queue_label))).perform(longClick());
- for (String title : titles) {
- onView(first(withText(title))).perform(click());
- }
+ onView(withText(R.string.back_button_go_to_page)).perform(click());
+ onView(withText(R.string.subscriptions_label)).perform(click());
onView(withText(R.string.confirm_label)).perform(click());
- List<String> hidden = UserPreferences.getHiddenDrawerItems();
- assertEquals(titles.length, hidden.size());
- for (String tag : MainActivity.NAV_DRAWER_TAGS) {
- assertTrue(hidden.contains(tag));
- }
- }
-
- @Test
- public void testDrawerPreferencesHideCurrentElement() {
- UserPreferences.setHiddenDrawerItems(new ArrayList<>());
- openNavDrawer();
- onView(withText(R.string.downloads_label)).perform(click());
- openNavDrawer();
-
- onView(first(withText(R.string.queue_label))).perform(longClick());
- onView(first(withText(R.string.downloads_label))).perform(click());
- onView(withText(R.string.confirm_label)).perform(click());
-
- List<String> hidden = UserPreferences.getHiddenDrawerItems();
- assertEquals(1, hidden.size());
- assertTrue(hidden.contains(DownloadsFragment.TAG));
- }
-
- @Test
- public void testBackButtonBehaviorGoToPage() {
- openNavDrawer();
- solo.clickOnText(solo.getString(R.string.settings_label));
- solo.clickOnText(solo.getString(R.string.user_interface_label));
- solo.clickOnText(solo.getString(R.string.pref_back_button_behavior_title));
- solo.clickOnText(solo.getString(R.string.back_button_go_to_page));
- solo.waitForDialogToOpen();
- solo.clickOnText(solo.getString(R.string.subscriptions_label));
- solo.clickOnText(solo.getString(R.string.confirm_label));
solo.goBackToActivity(MainActivity.class.getSimpleName());
+ solo.goBack(); // Close nav drawer
solo.goBack();
assertEquals(solo.getString(R.string.subscriptions_label), getActionbarTitle());
}
@@ -271,11 +127,12 @@ public class MainActivityTest {
@Test
public void testBackButtonBehaviorOpenDrawer() {
openNavDrawer();
- solo.clickOnText(solo.getString(R.string.settings_label));
- solo.clickOnText(solo.getString(R.string.user_interface_label));
- solo.clickOnText(solo.getString(R.string.pref_back_button_behavior_title));
- solo.clickOnText(solo.getString(R.string.back_button_open_drawer));
+ onView(withText(R.string.settings_label)).perform(click());
+ clickPreference(R.string.user_interface_label);
+ clickPreference(R.string.pref_back_button_behavior_title);
+ onView(withText(R.string.back_button_open_drawer)).perform(click());
solo.goBackToActivity(MainActivity.class.getSimpleName());
+ solo.goBack(); // Close nav drawer
solo.goBack();
assertTrue(((MainActivity)solo.getCurrentActivity()).isDrawerOpen());
}
@@ -283,39 +140,42 @@ public class MainActivityTest {
@Test
public void testBackButtonBehaviorDoubleTap() {
openNavDrawer();
- solo.clickOnText(solo.getString(R.string.settings_label));
- solo.clickOnText(solo.getString(R.string.user_interface_label));
- solo.clickOnText(solo.getString(R.string.pref_back_button_behavior_title));
- solo.clickOnText(solo.getString(R.string.back_button_double_tap));
+ onView(withText(R.string.settings_label)).perform(click());
+ clickPreference(R.string.user_interface_label);
+ clickPreference(R.string.pref_back_button_behavior_title);
+ onView(withText(R.string.back_button_double_tap)).perform(click());
solo.goBackToActivity(MainActivity.class.getSimpleName());
+ solo.goBack(); // Close nav drawer
solo.goBack();
solo.goBack();
- assertTrue(solo.getCurrentActivity().isFinishing());
+ assertThat(mActivityRule.getActivityResult(), hasResultCode(Activity.RESULT_CANCELED));
}
@Test
- public void testBackButtonBehaviorPrompt() {
+ public void testBackButtonBehaviorPrompt() throws Exception {
openNavDrawer();
- solo.clickOnText(solo.getString(R.string.settings_label));
- solo.clickOnText(solo.getString(R.string.user_interface_label));
- solo.clickOnText(solo.getString(R.string.pref_back_button_behavior_title));
- solo.clickOnText(solo.getString(R.string.back_button_show_prompt));
+ onView(withText(R.string.settings_label)).perform(click());
+ clickPreference(R.string.user_interface_label);
+ clickPreference(R.string.pref_back_button_behavior_title);
+ onView(withText(R.string.back_button_show_prompt)).perform(click());
solo.goBackToActivity(MainActivity.class.getSimpleName());
+ solo.goBack(); // Close nav drawer
solo.goBack();
- solo.clickOnText(solo.getString(R.string.yes));
- solo.waitForDialogToClose();
- assertTrue(solo.getCurrentActivity().isFinishing());
+ onView(withText(R.string.yes)).perform(click());
+ Thread.sleep(100);
+ assertThat(mActivityRule.getActivityResult(), hasResultCode(Activity.RESULT_CANCELED));
}
@Test
public void testBackButtonBehaviorDefault() {
openNavDrawer();
- solo.clickOnText(solo.getString(R.string.settings_label));
- solo.clickOnText(solo.getString(R.string.user_interface_label));
- solo.clickOnText(solo.getString(R.string.pref_back_button_behavior_title));
- solo.clickOnText(solo.getString(R.string.back_button_default));
+ onView(withText(R.string.settings_label)).perform(click());
+ clickPreference(R.string.user_interface_label);
+ clickPreference(R.string.pref_back_button_behavior_title);
+ onView(withText(R.string.back_button_default)).perform(click());
solo.goBackToActivity(MainActivity.class.getSimpleName());
+ solo.goBack(); // Close nav drawer
solo.goBack();
- assertTrue(solo.getCurrentActivity().isFinishing());
+ assertThat(mActivityRule.getActivityResult(), hasResultCode(Activity.RESULT_CANCELED));
}
}
diff --git a/app/src/androidTest/java/de/test/antennapod/ui/NavigationDrawerTest.java b/app/src/androidTest/java/de/test/antennapod/ui/NavigationDrawerTest.java
new file mode 100644
index 000000000..0ed62010b
--- /dev/null
+++ b/app/src/androidTest/java/de/test/antennapod/ui/NavigationDrawerTest.java
@@ -0,0 +1,253 @@
+package de.test.antennapod.ui;
+
+import android.content.Context;
+import android.content.Intent;
+import android.content.SharedPreferences;
+import android.support.test.InstrumentationRegistry;
+import android.support.test.espresso.contrib.DrawerActions;
+import android.support.test.espresso.intent.Intents;
+import android.support.test.filters.FlakyTest;
+import android.support.test.rule.ActivityTestRule;
+import android.support.test.runner.AndroidJUnit4;
+import android.widget.ListView;
+import com.robotium.solo.Solo;
+import de.danoeh.antennapod.R;
+import de.danoeh.antennapod.activity.MainActivity;
+import de.danoeh.antennapod.activity.PreferenceActivity;
+import de.danoeh.antennapod.core.feed.Feed;
+import de.danoeh.antennapod.core.preferences.UserPreferences;
+import de.danoeh.antennapod.core.storage.PodDBAdapter;
+import de.danoeh.antennapod.dialog.RatingDialog;
+import de.danoeh.antennapod.fragment.DownloadsFragment;
+import de.danoeh.antennapod.fragment.EpisodesFragment;
+import de.danoeh.antennapod.fragment.PlaybackHistoryFragment;
+import de.danoeh.antennapod.fragment.QueueFragment;
+import de.test.antennapod.EspressoTestUtils;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+import static android.support.test.InstrumentationRegistry.getInstrumentation;
+import static android.support.test.espresso.Espresso.onView;
+import static android.support.test.espresso.action.ViewActions.click;
+import static android.support.test.espresso.action.ViewActions.longClick;
+import static android.support.test.espresso.intent.Intents.intended;
+import static android.support.test.espresso.intent.matcher.IntentMatchers.hasComponent;
+import static android.support.test.espresso.matcher.ViewMatchers.isRoot;
+import static android.support.test.espresso.matcher.ViewMatchers.withId;
+import static android.support.test.espresso.matcher.ViewMatchers.withText;
+import static de.test.antennapod.NthMatcher.first;
+import static de.test.antennapod.EspressoTestUtils.waitForView;
+import static junit.framework.TestCase.assertTrue;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.fail;
+
+/**
+ * User interface tests for MainActivity drawer
+ */
+@RunWith(AndroidJUnit4.class)
+public class NavigationDrawerTest {
+
+ private Solo solo;
+ private UITestUtils uiTestUtils;
+ private SharedPreferences prefs;
+
+ @Rule
+ public ActivityTestRule<MainActivity> mActivityRule = new ActivityTestRule<>(MainActivity.class, false, false);
+
+ @Before
+ public void setUp() throws IOException {
+ // override first launch preference
+ // do this BEFORE calling getActivity()!
+ EspressoTestUtils.clearAppData();
+ prefs = InstrumentationRegistry.getContext()
+ .getSharedPreferences(MainActivity.PREF_NAME, Context.MODE_PRIVATE);
+ prefs.edit().putBoolean(MainActivity.PREF_IS_FIRST_LAUNCH, false).commit();
+
+ mActivityRule.launchActivity(new Intent());
+
+ Intents.init();
+ Context context = mActivityRule.getActivity();
+ uiTestUtils = new UITestUtils(context);
+ uiTestUtils.setup();
+
+ // create new database
+ PodDBAdapter.init(context);
+ PodDBAdapter.deleteDatabase();
+ PodDBAdapter adapter = PodDBAdapter.getInstance();
+ adapter.open();
+ adapter.close();
+
+ RatingDialog.init(context);
+ RatingDialog.saveRated();
+
+ solo = new Solo(getInstrumentation(), mActivityRule.getActivity());
+ }
+
+ @After
+ public void tearDown() throws Exception {
+ uiTestUtils.tearDown();
+ solo.finishOpenedActivities();
+ Intents.release();
+ PodDBAdapter.deleteDatabase();
+ prefs.edit().clear().commit();
+ }
+
+ private void openNavDrawer() {
+ onView(isRoot()).perform(waitForView(withId(R.id.drawer_layout), 1000));
+ onView(withId(R.id.drawer_layout)).perform(DrawerActions.open());
+ }
+
+ @Test
+ @FlakyTest
+ public void testClickNavDrawer() throws Exception {
+ uiTestUtils.addLocalFeedData(false);
+
+ setHiddenDrawerItems(new ArrayList<>());
+
+ // queue
+ openNavDrawer();
+ solo.clickOnText(solo.getString(R.string.queue_label));
+ solo.waitForView(R.id.recyclerView);
+ assertEquals(solo.getString(R.string.queue_label), getActionbarTitle());
+
+ // episodes
+ openNavDrawer();
+ solo.clickOnText(solo.getString(R.string.episodes_label));
+ solo.waitForView(android.R.id.list);
+ assertEquals(solo.getString(R.string.episodes_label), getActionbarTitle());
+
+ // Subscriptions
+ openNavDrawer();
+ solo.clickOnText(solo.getString(R.string.subscriptions_label));
+ solo.waitForView(R.id.subscriptions_grid);
+ assertEquals(solo.getString(R.string.subscriptions_label), getActionbarTitle());
+
+ // downloads
+ openNavDrawer();
+ solo.clickOnText(solo.getString(R.string.downloads_label));
+ solo.waitForView(android.R.id.list);
+ assertEquals(solo.getString(R.string.downloads_label), getActionbarTitle());
+
+ // playback history
+ openNavDrawer();
+ solo.clickOnText(solo.getString(R.string.playback_history_label));
+ solo.waitForView(android.R.id.list);
+ assertEquals(solo.getString(R.string.playback_history_label), getActionbarTitle());
+
+ // add podcast
+ openNavDrawer();
+ solo.clickOnText(solo.getString(R.string.add_feed_label));
+ solo.waitForView(R.id.txtvFeedurl);
+ assertEquals(solo.getString(R.string.add_feed_label), getActionbarTitle());
+
+ // podcasts
+ ListView list = (ListView) solo.getView(R.id.nav_list);
+ for (int i = 0; i < uiTestUtils.hostedFeeds.size(); i++) {
+ Feed f = uiTestUtils.hostedFeeds.get(i);
+ openNavDrawer();
+ solo.scrollListToLine(list, i);
+ solo.clickOnText(f.getTitle());
+ solo.waitForView(android.R.id.list);
+ assertEquals("", getActionbarTitle());
+ }
+ }
+
+ private String getActionbarTitle() {
+ return ((MainActivity) solo.getCurrentActivity()).getSupportActionBar().getTitle().toString();
+ }
+
+
+ @Test
+ @FlakyTest
+ public void testGoToPreferences() {
+ openNavDrawer();
+ onView(withText(R.string.settings_label)).perform(click());
+ intended(hasComponent(PreferenceActivity.class.getName()));
+ }
+
+ @Test
+ public void testDrawerPreferencesHideSomeElements() {
+ setHiddenDrawerItems(new ArrayList<>());
+ openNavDrawer();
+ onView(first(withText(R.string.queue_label))).perform(longClick());
+ onView(withText(R.string.episodes_label)).perform(click());
+ onView(withText(R.string.playback_history_label)).perform(click());
+ onView(withText(R.string.confirm_label)).perform(click());
+
+ List<String> hidden = UserPreferences.getHiddenDrawerItems();
+ assertEquals(2, hidden.size());
+ assertTrue(hidden.contains(EpisodesFragment.TAG));
+ assertTrue(hidden.contains(PlaybackHistoryFragment.TAG));
+ }
+
+ @Test
+ public void testDrawerPreferencesUnhideSomeElements() {
+ List<String> hidden = Arrays.asList(PlaybackHistoryFragment.TAG, DownloadsFragment.TAG);
+ setHiddenDrawerItems(hidden);
+ openNavDrawer();
+ onView(first(withText(R.string.queue_label))).perform(longClick());
+
+ onView(withText(R.string.downloads_label)).perform(click());
+ onView(withText(R.string.queue_label)).perform(click());
+ onView(withText(R.string.confirm_label)).perform(click());
+
+ hidden = UserPreferences.getHiddenDrawerItems();
+ assertEquals(2, hidden.size());
+ assertTrue(hidden.contains(QueueFragment.TAG));
+ assertTrue(hidden.contains(PlaybackHistoryFragment.TAG));
+ }
+
+
+ @Test
+ public void testDrawerPreferencesHideAllElements() {
+ setHiddenDrawerItems(new ArrayList<>());
+ String[] titles = mActivityRule.getActivity().getResources().getStringArray(R.array.nav_drawer_titles);
+
+ openNavDrawer();
+ onView(first(withText(R.string.queue_label))).perform(longClick());
+ for (String title : titles) {
+ onView(first(withText(title))).perform(click());
+ }
+ onView(withText(R.string.confirm_label)).perform(click());
+
+ List<String> hidden = UserPreferences.getHiddenDrawerItems();
+ assertEquals(titles.length, hidden.size());
+ for (String tag : MainActivity.NAV_DRAWER_TAGS) {
+ assertTrue(hidden.contains(tag));
+ }
+ }
+
+ @Test
+ public void testDrawerPreferencesHideCurrentElement() {
+ setHiddenDrawerItems(new ArrayList<>());
+ openNavDrawer();
+ onView(withText(R.string.downloads_label)).perform(click());
+ openNavDrawer();
+
+ onView(first(withText(R.string.queue_label))).perform(longClick());
+ onView(first(withText(R.string.downloads_label))).perform(click());
+ onView(withText(R.string.confirm_label)).perform(click());
+
+ List<String> hidden = UserPreferences.getHiddenDrawerItems();
+ assertEquals(1, hidden.size());
+ assertTrue(hidden.contains(DownloadsFragment.TAG));
+ }
+
+ private void setHiddenDrawerItems(List<String> items) {
+ UserPreferences.setHiddenDrawerItems(items);
+ try {
+ mActivityRule.runOnUiThread(() -> mActivityRule.getActivity().updateNavDrawer());
+ } catch (Throwable throwable) {
+ throwable.printStackTrace();
+ fail();
+ }
+ }
+}
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 55ed998bb..6b41ad0ea 100644
--- a/app/src/androidTest/java/de/test/antennapod/ui/PlaybackSonicTest.java
+++ b/app/src/androidTest/java/de/test/antennapod/ui/PlaybackSonicTest.java
@@ -1,13 +1,12 @@
package de.test.antennapod.ui;
-import android.annotation.TargetApi;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
-import android.os.Build;
import android.preference.PreferenceManager;
-import android.test.ActivityInstrumentationTestCase2;
-import android.test.FlakyTest;
+import android.support.test.InstrumentationRegistry;
+import android.support.test.filters.LargeTest;
+import android.support.test.rule.ActivityTestRule;
import android.view.View;
import android.widget.ListView;
@@ -25,14 +24,21 @@ 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.test.antennapod.EspressoTestUtils;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+
+import static android.support.test.InstrumentationRegistry.getInstrumentation;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
/**
* test cases for starting and ending playback from the MainActivity and AudioPlayerActivity
*/
-@TargetApi(Build.VERSION_CODES.JELLY_BEAN)
-public class PlaybackSonicTest extends ActivityInstrumentationTestCase2<MainActivity> {
-
- private static final String TAG = PlaybackTest.class.getSimpleName();
+@LargeTest
+public class PlaybackSonicTest {
private static final int EPISODES_DRAWER_LIST_INDEX = 1;
private static final int QUEUE_DRAWER_LIST_INDEX = 0;
@@ -41,15 +47,13 @@ public class PlaybackSonicTest extends ActivityInstrumentationTestCase2<MainActi
private Context context;
- public PlaybackSonicTest() {
- super(MainActivity.class);
- }
+ @Rule
+ public ActivityTestRule<MainActivity> activityTestRule = new ActivityTestRule<>(MainActivity.class, false, false);
- @Override
+ @Before
public void setUp() throws Exception {
- super.setUp();
-
- context = getInstrumentation().getTargetContext();
+ EspressoTestUtils.clearAppData();
+ context = InstrumentationRegistry.getTargetContext();
PodDBAdapter.init(context);
PodDBAdapter.deleteDatabase();
@@ -62,7 +66,8 @@ public class PlaybackSonicTest extends ActivityInstrumentationTestCase2<MainActi
.putString(UserPreferences.PREF_MEDIA_PLAYER, "sonic")
.commit();
- solo = new Solo(getInstrumentation(), getActivity());
+ activityTestRule.launchActivity(new Intent());
+ solo = new Solo(getInstrumentation(), activityTestRule.getActivity());
uiTestUtils = new UITestUtils(context);
uiTestUtils.setup();
@@ -73,7 +78,7 @@ public class PlaybackSonicTest extends ActivityInstrumentationTestCase2<MainActi
adapter.close();
}
- @Override
+ @After
public void tearDown() throws Exception {
solo.finishOpenedActivities();
uiTestUtils.tearDown();
@@ -81,8 +86,10 @@ public class PlaybackSonicTest extends ActivityInstrumentationTestCase2<MainActi
// shut down playback service
skipEpisode();
context.sendBroadcast(new Intent(PlaybackService.ACTION_SHUTDOWN_PLAYBACK_SERVICE));
+ }
- super.tearDown();
+ private MainActivity getActivity() {
+ return activityTestRule.getActivity();
}
private void openNavDrawer() {
@@ -158,12 +165,14 @@ public class PlaybackSonicTest extends ActivityInstrumentationTestCase2<MainActi
assertTrue(playing);
}
+ @Test
public void testStartLocal() throws Exception {
uiTestUtils.addLocalFeedData(true);
DBWriter.clearQueue().get();
startLocalPlayback();
}
+ @Test
public void testContinousPlaybackOffSingleEpisode() throws Exception {
setContinuousPlaybackPreference(false);
uiTestUtils.addLocalFeedData(true);
@@ -171,7 +180,7 @@ public class PlaybackSonicTest extends ActivityInstrumentationTestCase2<MainActi
startLocalPlayback();
}
- @FlakyTest(tolerance = 3)
+ @Test
public void testContinousPlaybackOffMultipleEpisodes() throws Exception {
setContinuousPlaybackPreference(false);
uiTestUtils.addLocalFeedData(true);
@@ -196,7 +205,7 @@ public class PlaybackSonicTest extends ActivityInstrumentationTestCase2<MainActi
assertFalse(status.equals(PlayerStatus.PLAYING));
}
- @FlakyTest(tolerance = 3)
+ @Test
public void testContinuousPlaybackOnMultipleEpisodes() throws Exception {
setContinuousPlaybackPreference(true);
uiTestUtils.addLocalFeedData(true);
@@ -262,13 +271,14 @@ public class PlaybackSonicTest extends ActivityInstrumentationTestCase2<MainActi
assertTrue(startedReplay);
}
+ @Test
public void testReplayEpisodeContinuousPlaybackOn() throws Exception {
replayEpisodeCheck(true);
}
+ @Test
public void testReplayEpisodeContinuousPlaybackOff() throws Exception {
replayEpisodeCheck(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 74d59abd7..099549a69 100644
--- a/app/src/androidTest/java/de/test/antennapod/ui/PlaybackTest.java
+++ b/app/src/androidTest/java/de/test/antennapod/ui/PlaybackTest.java
@@ -4,8 +4,9 @@ import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.preference.PreferenceManager;
-import android.test.ActivityInstrumentationTestCase2;
-import android.test.FlakyTest;
+import android.support.test.InstrumentationRegistry;
+import android.support.test.filters.LargeTest;
+import android.support.test.rule.ActivityTestRule;
import android.view.View;
import android.widget.ListView;
@@ -23,30 +24,32 @@ 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 org.junit.After;
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
/**
* test cases for starting and ending playback from the MainActivity and AudioPlayerActivity
*/
-public class PlaybackTest extends ActivityInstrumentationTestCase2<MainActivity> {
-
- private static final String TAG = PlaybackTest.class.getSimpleName();
+@LargeTest
+public class PlaybackTest {
private static final int EPISODES_DRAWER_LIST_INDEX = 1;
private static final int QUEUE_DRAWER_LIST_INDEX = 0;
+ @Rule
+ public ActivityTestRule<MainActivity> activityTestRule = new ActivityTestRule<>(MainActivity.class);
+
private Solo solo;
private UITestUtils uiTestUtils;
-
private Context context;
- public PlaybackTest() {
- super(MainActivity.class);
- }
-
- @Override
+ @Before
public void setUp() throws Exception {
- super.setUp();
-
- context = getInstrumentation().getTargetContext();
+ context = InstrumentationRegistry.getTargetContext();
PodDBAdapter.init(context);
PodDBAdapter.deleteDatabase();
@@ -58,7 +61,7 @@ public class PlaybackTest extends ActivityInstrumentationTestCase2<MainActivity>
.putBoolean(UserPreferences.PREF_PAUSE_ON_HEADSET_DISCONNECT, false)
.commit();
- solo = new Solo(getInstrumentation(), getActivity());
+ solo = new Solo(InstrumentationRegistry.getInstrumentation(), getActivity());
uiTestUtils = new UITestUtils(context);
uiTestUtils.setup();
@@ -69,7 +72,7 @@ public class PlaybackTest extends ActivityInstrumentationTestCase2<MainActivity>
adapter.close();
}
- @Override
+ @After
public void tearDown() throws Exception {
solo.finishOpenedActivities();
uiTestUtils.tearDown();
@@ -77,12 +80,15 @@ public class PlaybackTest extends ActivityInstrumentationTestCase2<MainActivity>
// shut down playback service
skipEpisode();
context.sendBroadcast(new Intent(PlaybackService.ACTION_SHUTDOWN_PLAYBACK_SERVICE));
+ }
- super.tearDown();
+ private MainActivity getActivity() {
+ return activityTestRule.getActivity();
}
+
private void openNavDrawer() {
solo.clickOnImageButton(0);
- getInstrumentation().waitForIdleSync();
+ InstrumentationRegistry.getInstrumentation().waitForIdleSync();
}
private void setContinuousPlaybackPreference(boolean value) {
@@ -150,12 +156,14 @@ public class PlaybackTest extends ActivityInstrumentationTestCase2<MainActivity>
assertTrue(playing);
}
+ @Test
public void testStartLocal() throws Exception {
uiTestUtils.addLocalFeedData(true);
DBWriter.clearQueue().get();
startLocalPlayback();
}
+ @Test
public void testContinousPlaybackOffSingleEpisode() throws Exception {
setContinuousPlaybackPreference(false);
uiTestUtils.addLocalFeedData(true);
@@ -163,7 +171,7 @@ public class PlaybackTest extends ActivityInstrumentationTestCase2<MainActivity>
startLocalPlayback();
}
- @FlakyTest(tolerance = 3)
+ @Test
public void testContinousPlaybackOffMultipleEpisodes() throws Exception {
setContinuousPlaybackPreference(false);
uiTestUtils.addLocalFeedData(true);
@@ -187,7 +195,7 @@ public class PlaybackTest extends ActivityInstrumentationTestCase2<MainActivity>
assertFalse(status.equals(PlayerStatus.PLAYING));
}
- @FlakyTest(tolerance = 3)
+ @Test
public void testContinuousPlaybackOnMultipleEpisodes() throws Exception {
setContinuousPlaybackPreference(true);
uiTestUtils.addLocalFeedData(true);
@@ -252,13 +260,13 @@ public class PlaybackTest extends ActivityInstrumentationTestCase2<MainActivity>
assertTrue(startedReplay);
}
+ @Test
public void testReplayEpisodeContinuousPlaybackOn() throws Exception {
replayEpisodeCheck(true);
}
+ @Test
public void testReplayEpisodeContinuousPlaybackOff() throws Exception {
replayEpisodeCheck(false);
}
-
-
}
diff --git a/app/src/androidTest/java/de/test/antennapod/ui/PreferencesTest.java b/app/src/androidTest/java/de/test/antennapod/ui/PreferencesTest.java
index d934bf3e2..4b2dc75a9 100644
--- a/app/src/androidTest/java/de/test/antennapod/ui/PreferencesTest.java
+++ b/app/src/androidTest/java/de/test/antennapod/ui/PreferencesTest.java
@@ -1,22 +1,19 @@
package de.test.antennapod.ui;
+import android.content.Intent;
import android.content.SharedPreferences;
import android.content.res.Resources;
import android.preference.PreferenceManager;
-import android.support.test.espresso.contrib.RecyclerViewActions;
-import android.support.test.rule.ActivityTestRule;
-import android.support.test.runner.AndroidJUnit4;
-import android.view.View;
+import android.support.test.filters.LargeTest;
+import android.support.test.rule.ActivityTestRule;
import com.robotium.solo.Solo;
import com.robotium.solo.Timeout;
-import org.hamcrest.Matcher;
-import org.junit.After;
+import de.test.antennapod.EspressoTestUtils;
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
-import org.junit.runner.RunWith;
import java.util.Arrays;
import java.util.concurrent.TimeUnit;
@@ -35,38 +32,33 @@ import de.danoeh.antennapod.fragment.SubscriptionFragment;
import static android.support.test.InstrumentationRegistry.getInstrumentation;
import static android.support.test.espresso.Espresso.onView;
import static android.support.test.espresso.action.ViewActions.click;
-import static android.support.test.espresso.matcher.ViewMatchers.hasDescendant;
-import static android.support.test.espresso.matcher.ViewMatchers.withId;
+import static android.support.test.espresso.assertion.ViewAssertions.matches;
+import static android.support.test.espresso.matcher.ViewMatchers.isDisplayed;
import static android.support.test.espresso.matcher.ViewMatchers.withText;
+import static de.test.antennapod.EspressoTestUtils.clickPreference;
import static junit.framework.TestCase.assertEquals;
import static junit.framework.TestCase.assertTrue;
-@RunWith(AndroidJUnit4.class)
+@LargeTest
public class PreferencesTest {
private Solo solo;
private Resources res;
- private SharedPreferences prefs;
@Rule
- public ActivityTestRule<PreferenceActivity> mActivityRule = new ActivityTestRule<>(PreferenceActivity.class);
+ public ActivityTestRule<PreferenceActivity> mActivityRule = new ActivityTestRule<>(PreferenceActivity.class, false, false);
@Before
public void setUp() {
+ EspressoTestUtils.clearAppData();
+ mActivityRule.launchActivity(new Intent());
+ SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(mActivityRule.getActivity());
+ prefs.edit().putBoolean(UserPreferences.PREF_ENABLE_AUTODL, true).commit();
+
solo = new Solo(getInstrumentation(), mActivityRule.getActivity());
Timeout.setSmallTimeout(500);
Timeout.setLargeTimeout(1000);
res = mActivityRule.getActivity().getResources();
UserPreferences.init(mActivityRule.getActivity());
-
- prefs = PreferenceManager.getDefaultSharedPreferences(mActivityRule.getActivity());
- prefs.edit().clear();
- prefs.edit().putBoolean(UserPreferences.PREF_ENABLE_AUTODL, true).commit();
- }
-
- @After
- public void tearDown() {
- solo.finishOpenedActivities();
- prefs.edit().clear();
}
@Test
@@ -78,8 +70,8 @@ public class PreferencesTest {
} else {
otherTheme = R.string.pref_theme_title_light;
}
- clickPreference(withText(R.string.user_interface_label));
- clickPreference(withText(R.string.pref_set_theme_title));
+ clickPreference(R.string.user_interface_label);
+ clickPreference(R.string.pref_set_theme_title);
onView(withText(otherTheme)).perform(click());
assertTrue(solo.waitForCondition(() -> UserPreferences.getTheme() != theme, Timeout.getLargeTimeout()));
}
@@ -93,8 +85,8 @@ public class PreferencesTest {
} else {
otherTheme = R.string.pref_theme_title_light;
}
- clickPreference(withText(R.string.user_interface_label));
- clickPreference(withText(R.string.pref_set_theme_title));
+ clickPreference(R.string.user_interface_label);
+ clickPreference(R.string.pref_set_theme_title);
onView(withText(otherTheme)).perform(click());
assertTrue(solo.waitForCondition(() -> UserPreferences.getTheme() != theme, Timeout.getLargeTimeout()));
}
@@ -102,34 +94,31 @@ public class PreferencesTest {
@Test
public void testEnablePersistentPlaybackControls() {
final boolean persistNotify = UserPreferences.isPersistNotify();
- clickPreference(withText(R.string.user_interface_label));
- clickPreference(withText(R.string.pref_persistNotify_title));
+ clickPreference(R.string.user_interface_label);
+ clickPreference(R.string.pref_persistNotify_title);
assertTrue(solo.waitForCondition(() -> persistNotify != UserPreferences.isPersistNotify(), Timeout.getLargeTimeout()));
- clickPreference(withText(R.string.pref_persistNotify_title));
+ clickPreference(R.string.pref_persistNotify_title);
assertTrue(solo.waitForCondition(() -> persistNotify == UserPreferences.isPersistNotify(), Timeout.getLargeTimeout()));
}
@Test
public void testSetLockscreenButtons() {
- solo.clickOnText(solo.getString(R.string.user_interface_label));
+ onView(withText(R.string.user_interface_label)).perform(click());
solo.scrollDown();
String[] buttons = res.getStringArray(R.array.compact_notification_buttons_options);
- solo.clickOnText(solo.getString(R.string.pref_compact_notification_buttons_title));
+ onView(withText(R.string.pref_compact_notification_buttons_title)).perform(click());
solo.waitForDialogToOpen(1000);
- // First uncheck every checkbox
- for (String button : buttons) {
- assertTrue(solo.searchText(button));
- if (solo.isTextChecked(button)) {
- solo.clickOnText(button);
- }
- }
+ // First uncheck checkbox
+ onView(withText(buttons[2])).perform(click());
+
// Now try to check all checkboxes
- solo.clickOnText(buttons[0]);
- solo.clickOnText(buttons[1]);
- solo.clickOnText(buttons[2]);
+ onView(withText(buttons[0])).perform(click());
+ onView(withText(buttons[1])).perform(click());
+ onView(withText(buttons[2])).perform(click());
+
// Make sure that the third checkbox is unchecked
assertTrue(!solo.isTextChecked(buttons[2]));
- solo.clickOnText(solo.getString(R.string.confirm_label));
+ onView(withText(R.string.confirm_label)).perform(click());
solo.waitForDialogToClose(1000);
assertTrue(solo.waitForCondition(UserPreferences::showRewindOnCompactNotification, Timeout.getLargeTimeout()));
assertTrue(solo.waitForCondition(UserPreferences::showFastForwardOnCompactNotification, Timeout.getLargeTimeout()));
@@ -138,107 +127,109 @@ public class PreferencesTest {
@Test
public void testEnqueueAtFront() {
- solo.clickOnText(solo.getString(R.string.playback_pref));
+ onView(withText(R.string.playback_pref)).perform(click());
final boolean enqueueAtFront = UserPreferences.enqueueAtFront();
solo.scrollDown();
solo.scrollDown();
- solo.clickOnText(solo.getString(R.string.pref_queueAddToFront_title));
+ onView(withText(R.string.pref_queueAddToFront_title)).perform(click());
assertTrue(solo.waitForCondition(() -> enqueueAtFront != UserPreferences.enqueueAtFront(), Timeout.getLargeTimeout()));
- solo.clickOnText(solo.getString(R.string.pref_queueAddToFront_title));
+ onView(withText(R.string.pref_queueAddToFront_title)).perform(click());
assertTrue(solo.waitForCondition(() -> enqueueAtFront == UserPreferences.enqueueAtFront(), Timeout.getLargeTimeout()));
}
@Test
public void testHeadPhonesDisconnect() {
- solo.clickOnText(solo.getString(R.string.playback_pref));
+ onView(withText(R.string.playback_pref)).perform(click());
final boolean pauseOnHeadsetDisconnect = UserPreferences.isPauseOnHeadsetDisconnect();
- solo.clickOnText(solo.getString(R.string.pref_pauseOnHeadsetDisconnect_title));
+ onView(withText(R.string.pref_pauseOnHeadsetDisconnect_title)).perform(click());
assertTrue(solo.waitForCondition(() -> pauseOnHeadsetDisconnect != UserPreferences.isPauseOnHeadsetDisconnect(), Timeout.getLargeTimeout()));
- solo.clickOnText(solo.getString(R.string.pref_pauseOnHeadsetDisconnect_title));
+ onView(withText(R.string.pref_pauseOnHeadsetDisconnect_title)).perform(click());
assertTrue(solo.waitForCondition(() -> pauseOnHeadsetDisconnect == UserPreferences.isPauseOnHeadsetDisconnect(), Timeout.getLargeTimeout()));
}
@Test
public void testHeadPhonesReconnect() {
- solo.clickOnText(solo.getString(R.string.playback_pref));
+ onView(withText(R.string.playback_pref)).perform(click());
if(UserPreferences.isPauseOnHeadsetDisconnect() == false) {
- solo.clickOnText(solo.getString(R.string.pref_pauseOnHeadsetDisconnect_title));
+ onView(withText(R.string.pref_pauseOnHeadsetDisconnect_title)).perform(click());
assertTrue(solo.waitForCondition(UserPreferences::isPauseOnHeadsetDisconnect, Timeout.getLargeTimeout()));
}
final boolean unpauseOnHeadsetReconnect = UserPreferences.isUnpauseOnHeadsetReconnect();
- solo.clickOnText(solo.getString(R.string.pref_unpauseOnHeadsetReconnect_title));
+ onView(withText(R.string.pref_unpauseOnHeadsetReconnect_title)).perform(click());
assertTrue(solo.waitForCondition(() -> unpauseOnHeadsetReconnect != UserPreferences.isUnpauseOnHeadsetReconnect(), Timeout.getLargeTimeout()));
- solo.clickOnText(solo.getString(R.string.pref_unpauseOnHeadsetReconnect_title));
+ onView(withText(R.string.pref_unpauseOnHeadsetReconnect_title)).perform(click());
assertTrue(solo.waitForCondition(() -> unpauseOnHeadsetReconnect == UserPreferences.isUnpauseOnHeadsetReconnect(), Timeout.getLargeTimeout()));
}
@Test
public void testBluetoothReconnect() {
- solo.clickOnText(solo.getString(R.string.playback_pref));
+ onView(withText(R.string.playback_pref)).perform(click());
if(UserPreferences.isPauseOnHeadsetDisconnect() == false) {
- solo.clickOnText(solo.getString(R.string.pref_pauseOnHeadsetDisconnect_title));
+ onView(withText(R.string.pref_pauseOnHeadsetDisconnect_title)).perform(click());
assertTrue(solo.waitForCondition(UserPreferences::isPauseOnHeadsetDisconnect, Timeout.getLargeTimeout()));
}
final boolean unpauseOnBluetoothReconnect = UserPreferences.isUnpauseOnBluetoothReconnect();
- solo.clickOnText(solo.getString(R.string.pref_unpauseOnBluetoothReconnect_title));
+ onView(withText(R.string.pref_unpauseOnBluetoothReconnect_title)).perform(click());
assertTrue(solo.waitForCondition(() -> unpauseOnBluetoothReconnect != UserPreferences.isUnpauseOnBluetoothReconnect(), Timeout.getLargeTimeout()));
- solo.clickOnText(solo.getString(R.string.pref_unpauseOnBluetoothReconnect_title));
+ onView(withText(R.string.pref_unpauseOnBluetoothReconnect_title)).perform(click());
assertTrue(solo.waitForCondition(() -> unpauseOnBluetoothReconnect == UserPreferences.isUnpauseOnBluetoothReconnect(), Timeout.getLargeTimeout()));
}
@Test
public void testContinuousPlayback() {
- solo.clickOnText(solo.getString(R.string.playback_pref));
+ onView(withText(R.string.playback_pref)).perform(click());
final boolean continuousPlayback = UserPreferences.isFollowQueue();
solo.scrollDown();
solo.scrollDown();
- solo.clickOnText(solo.getString(R.string.pref_followQueue_title));
+ onView(withText(R.string.pref_followQueue_title)).perform(click());
assertTrue(solo.waitForCondition(() -> continuousPlayback != UserPreferences.isFollowQueue(), Timeout.getLargeTimeout()));
- solo.clickOnText(solo.getString(R.string.pref_followQueue_title));
+ onView(withText(R.string.pref_followQueue_title)).perform(click());
assertTrue(solo.waitForCondition(() -> continuousPlayback == UserPreferences.isFollowQueue(), Timeout.getLargeTimeout()));
}
@Test
public void testAutoDelete() {
- solo.clickOnText(solo.getString(R.string.storage_pref));
+ onView(withText(R.string.storage_pref)).perform(click());
final boolean autoDelete = UserPreferences.isAutoDelete();
- solo.clickOnText(solo.getString(R.string.pref_auto_delete_title));
+ onView(withText(R.string.pref_auto_delete_title)).perform(click());
assertTrue(solo.waitForCondition(() -> autoDelete != UserPreferences.isAutoDelete(), Timeout.getLargeTimeout()));
- solo.clickOnText(solo.getString(R.string.pref_auto_delete_title));
+ onView(withText(R.string.pref_auto_delete_title)).perform(click());
assertTrue(solo.waitForCondition(() -> autoDelete == UserPreferences.isAutoDelete(), Timeout.getLargeTimeout()));
}
@Test
public void testPlaybackSpeeds() {
- clickPreference(withText(R.string.playback_pref));
- clickPreference(withText(R.string.pref_playback_speed_title));
- assertTrue(solo.searchText(res.getStringArray(R.array.playback_speed_values)[0]));
+ clickPreference(R.string.playback_pref);
+ clickPreference(R.string.media_player);
+ onView(withText(R.string.media_player_exoplayer)).perform(click());
+ clickPreference(R.string.pref_playback_speed_title);
+ solo.waitForDialogToOpen();
+ onView(withText("0.50")).check(matches(isDisplayed()));
onView(withText(R.string.cancel_label)).perform(click());
}
@Test
public void testPauseForInterruptions() {
- solo.clickOnText(solo.getString(R.string.playback_pref));
+ onView(withText(R.string.playback_pref)).perform(click());
final boolean pauseForFocusLoss = UserPreferences.shouldPauseForFocusLoss();
- solo.clickOnText(solo.getString(R.string.pref_pausePlaybackForFocusLoss_title));
+ onView(withText(R.string.pref_pausePlaybackForFocusLoss_title)).perform(click());
assertTrue(solo.waitForCondition(() -> pauseForFocusLoss != UserPreferences.shouldPauseForFocusLoss(), Timeout.getLargeTimeout()));
- solo.clickOnText(solo.getString(R.string.pref_pausePlaybackForFocusLoss_title));
+ onView(withText(R.string.pref_pausePlaybackForFocusLoss_title)).perform(click());
assertTrue(solo.waitForCondition(() -> pauseForFocusLoss == UserPreferences.shouldPauseForFocusLoss(), Timeout.getLargeTimeout()));
}
@Test
public void testDisableUpdateInterval() {
- solo.clickOnText(solo.getString(R.string.network_pref));
- solo.clickOnText(solo.getString(R.string.pref_autoUpdateIntervallOrTime_sum));
- solo.waitForDialogToOpen();
- solo.clickOnText(solo.getString(R.string.pref_autoUpdateIntervallOrTime_Disable));
+ onView(withText(R.string.network_pref)).perform(click());
+ onView(withText(R.string.pref_autoUpdateIntervallOrTime_title)).perform(click());
+ onView(withText(R.string.pref_autoUpdateIntervallOrTime_Disable)).perform(click());
assertTrue(solo.waitForCondition(() -> UserPreferences.getUpdateInterval() == 0, 1000));
}
@Test
public void testSetUpdateInterval() {
- clickPreference(withText(R.string.network_pref));
- clickPreference(withText(R.string.pref_autoUpdateIntervallOrTime_title));
+ clickPreference(R.string.network_pref);
+ clickPreference(R.string.pref_autoUpdateIntervallOrTime_title);
onView(withText(R.string.pref_autoUpdateIntervallOrTime_Interval)).perform(click());
String search = "12 " + solo.getString(R.string.pref_update_interval_hours_plural);
onView(withText(search)).perform(click());
@@ -247,41 +238,31 @@ public class PreferencesTest {
}
@Test
- public void testMobileUpdates() {
- clickPreference(withText(R.string.network_pref));
- final boolean mobileUpdates = UserPreferences.isAllowMobileUpdate();
- clickPreference(withText(R.string.pref_mobileUpdate_title));
- assertTrue(solo.waitForCondition(() -> mobileUpdates != UserPreferences.isAllowMobileUpdate(), Timeout.getLargeTimeout()));
- clickPreference(withText(R.string.pref_mobileUpdate_title));
- assertTrue(solo.waitForCondition(() -> mobileUpdates == UserPreferences.isAllowMobileUpdate(), Timeout.getLargeTimeout()));
- }
-
- @Test
public void testSetSequentialDownload() {
- clickPreference(withText(R.string.network_pref));
- clickPreference(withText(R.string.pref_parallel_downloads_title));
+ clickPreference(R.string.network_pref);
+ clickPreference(R.string.pref_parallel_downloads_title);
solo.waitForDialogToOpen();
solo.clearEditText(0);
solo.enterText(0, "1");
- solo.clickOnText(solo.getString(android.R.string.ok));
+ onView(withText(android.R.string.ok)).perform(click());
assertTrue(solo.waitForCondition(() -> UserPreferences.getParallelDownloads() == 1, Timeout.getLargeTimeout()));
}
@Test
public void testSetParallelDownloads() {
- clickPreference(withText(R.string.network_pref));
- clickPreference(withText(R.string.pref_parallel_downloads_title));
+ clickPreference(R.string.network_pref);
+ clickPreference(R.string.pref_parallel_downloads_title);
solo.waitForDialogToOpen();
solo.clearEditText(0);
solo.enterText(0, "10");
- solo.clickOnText(solo.getString(android.R.string.ok));
+ onView(withText(android.R.string.ok)).perform(click());
assertTrue(solo.waitForCondition(() -> UserPreferences.getParallelDownloads() == 10, Timeout.getLargeTimeout()));
}
@Test
public void testSetParallelDownloadsInvalidInput() {
- clickPreference(withText(R.string.network_pref));
- clickPreference(withText(R.string.pref_parallel_downloads_title));
+ clickPreference(R.string.network_pref);
+ clickPreference(R.string.pref_parallel_downloads_title);
solo.waitForDialogToOpen();
solo.clearEditText(0);
solo.enterText(0, "0");
@@ -297,9 +278,9 @@ public class PreferencesTest {
String[] values = res.getStringArray(R.array.episode_cache_size_values);
String entry = entries[entries.length/2];
final int value = Integer.valueOf(values[values.length/2]);
- clickPreference(withText(R.string.network_pref));
- clickPreference(withText(R.string.pref_automatic_download_title));
- clickPreference(withText(R.string.pref_episode_cache_title));
+ clickPreference(R.string.network_pref);
+ clickPreference(R.string.pref_automatic_download_title);
+ clickPreference(R.string.pref_episode_cache_title);
solo.waitForDialogToOpen();
solo.clickOnText(entry);
assertTrue(solo.waitForCondition(() -> UserPreferences.getEpisodeCacheSize() == value, Timeout.getLargeTimeout()));
@@ -312,12 +293,11 @@ public class PreferencesTest {
String minEntry = entries[0];
final int minValue = Integer.valueOf(values[0]);
- clickPreference(withText(R.string.network_pref));
- clickPreference(withText(R.string.pref_automatic_download_title));
- clickPreference(withText(R.string.pref_episode_cache_title));
- solo.waitForDialogToOpen(1000);
+ clickPreference(R.string.network_pref);
+ clickPreference(R.string.pref_automatic_download_title);
+ clickPreference(R.string.pref_episode_cache_title);
solo.scrollUp();
- solo.clickOnText(minEntry);
+ onView(withText(minEntry)).perform(click());
assertTrue(solo.waitForCondition(() -> UserPreferences.getEpisodeCacheSize() == minValue, Timeout.getLargeTimeout()));
}
@@ -327,46 +307,44 @@ public class PreferencesTest {
String[] values = res.getStringArray(R.array.episode_cache_size_values);
String maxEntry = entries[entries.length-1];
final int maxValue = Integer.valueOf(values[values.length-1]);
- solo.clickOnText(solo.getString(R.string.network_pref));
- solo.clickOnText(solo.getString(R.string.pref_automatic_download_title));
- solo.waitForText(solo.getString(R.string.pref_automatic_download_title));
- solo.clickOnText(solo.getString(R.string.pref_episode_cache_title));
- solo.waitForDialogToOpen();
- solo.clickOnText(maxEntry);
+ onView(withText(R.string.network_pref)).perform(click());
+ onView(withText(R.string.pref_automatic_download_title)).perform(click());
+ onView(withText(R.string.pref_episode_cache_title)).perform(click());
+ onView(withText(maxEntry)).perform(click());
assertTrue(solo.waitForCondition(() -> UserPreferences.getEpisodeCacheSize() == maxValue, Timeout.getLargeTimeout()));
}
@Test
public void testAutomaticDownload() {
final boolean automaticDownload = UserPreferences.isEnableAutodownload();
- clickPreference(withText(R.string.network_pref));
- clickPreference(withText(R.string.pref_automatic_download_title));
- clickPreference(withText(R.string.pref_automatic_download_title));
+ clickPreference(R.string.network_pref);
+ clickPreference(R.string.pref_automatic_download_title);
+ clickPreference(R.string.pref_automatic_download_title);
assertTrue(solo.waitForCondition(() -> automaticDownload != UserPreferences.isEnableAutodownload(), Timeout.getLargeTimeout()));
if(UserPreferences.isEnableAutodownload() == false) {
- clickPreference(withText(R.string.pref_automatic_download_title));
+ clickPreference(R.string.pref_automatic_download_title);
}
assertTrue(solo.waitForCondition(() -> UserPreferences.isEnableAutodownload() == true, Timeout.getLargeTimeout()));
final boolean enableAutodownloadOnBattery = UserPreferences.isEnableAutodownloadOnBattery();
- solo.clickOnText(solo.getString(R.string.pref_automatic_download_on_battery_title));
+ onView(withText(R.string.pref_automatic_download_on_battery_title)).perform(click());
assertTrue(solo.waitForCondition(() -> enableAutodownloadOnBattery != UserPreferences.isEnableAutodownloadOnBattery(), Timeout.getLargeTimeout()));
- solo.clickOnText(solo.getString(R.string.pref_automatic_download_on_battery_title));
+ onView(withText(R.string.pref_automatic_download_on_battery_title)).perform(click());
assertTrue(solo.waitForCondition(() -> enableAutodownloadOnBattery == UserPreferences.isEnableAutodownloadOnBattery(), Timeout.getLargeTimeout()));
final boolean enableWifiFilter = UserPreferences.isEnableAutodownloadWifiFilter();
- solo.clickOnText(solo.getString(R.string.pref_autodl_wifi_filter_title));
+ onView(withText(R.string.pref_autodl_wifi_filter_title)).perform(click());
assertTrue(solo.waitForCondition(() -> enableWifiFilter != UserPreferences.isEnableAutodownloadWifiFilter(), Timeout.getLargeTimeout()));
- solo.clickOnText(solo.getString(R.string.pref_autodl_wifi_filter_title));
+ onView(withText(R.string.pref_autodl_wifi_filter_title)).perform(click());
assertTrue(solo.waitForCondition(() -> enableWifiFilter == UserPreferences.isEnableAutodownloadWifiFilter(), Timeout.getLargeTimeout()));
}
@Test
public void testEpisodeCleanupQueueOnly() {
- solo.clickOnText(solo.getString(R.string.network_pref));
- solo.clickOnText(solo.getString(R.string.pref_automatic_download_title));
- solo.clickOnText(solo.getString(R.string.pref_episode_cleanup_title));
+ onView(withText(R.string.network_pref)).perform(click());
+ onView(withText(R.string.pref_automatic_download_title)).perform(click());
+ onView(withText(R.string.pref_episode_cleanup_title)).perform(click());
solo.waitForText(solo.getString(R.string.episode_cleanup_queue_removal));
- solo.clickOnText(solo.getString(R.string.episode_cleanup_queue_removal));
+ onView(withText(R.string.episode_cleanup_queue_removal)).perform(click());
assertTrue(solo.waitForCondition(() -> {
EpisodeCleanupAlgorithm alg = UserPreferences.getEpisodeCleanupAlgorithm();
return alg instanceof APQueueCleanupAlgorithm;
@@ -376,11 +354,11 @@ public class PreferencesTest {
@Test
public void testEpisodeCleanupNeverAlg() {
- solo.clickOnText(solo.getString(R.string.network_pref));
- solo.clickOnText(solo.getString(R.string.pref_automatic_download_title));
- solo.clickOnText(solo.getString(R.string.pref_episode_cleanup_title));
+ onView(withText(R.string.network_pref)).perform(click());
+ onView(withText(R.string.pref_automatic_download_title)).perform(click());
+ onView(withText(R.string.pref_episode_cleanup_title)).perform(click());
solo.waitForText(solo.getString(R.string.episode_cleanup_never));
- solo.clickOnText(solo.getString(R.string.episode_cleanup_never));
+ onView(withText(R.string.episode_cleanup_never)).perform(click());
assertTrue(solo.waitForCondition(() -> {
EpisodeCleanupAlgorithm alg = UserPreferences.getEpisodeCleanupAlgorithm();
return alg instanceof APNullCleanupAlgorithm;
@@ -390,11 +368,11 @@ public class PreferencesTest {
@Test
public void testEpisodeCleanupClassic() {
- solo.clickOnText(solo.getString(R.string.network_pref));
- solo.clickOnText(solo.getString(R.string.pref_automatic_download_title));
- solo.clickOnText(solo.getString(R.string.pref_episode_cleanup_title));
+ onView(withText(R.string.network_pref)).perform(click());
+ onView(withText(R.string.pref_automatic_download_title)).perform(click());
+ onView(withText(R.string.pref_episode_cleanup_title)).perform(click());
solo.waitForText(solo.getString(R.string.episode_cleanup_after_listening));
- solo.clickOnText(solo.getString(R.string.episode_cleanup_after_listening));
+ onView(withText(R.string.episode_cleanup_after_listening)).perform(click());
assertTrue(solo.waitForCondition(() -> {
EpisodeCleanupAlgorithm alg = UserPreferences.getEpisodeCleanupAlgorithm();
if (alg instanceof APCleanupAlgorithm) {
@@ -408,9 +386,9 @@ public class PreferencesTest {
@Test
public void testEpisodeCleanupNumDays() {
- clickPreference(withText(R.string.network_pref));
- clickPreference(withText(R.string.pref_automatic_download_title));
- clickPreference(withText(R.string.pref_episode_cleanup_title));
+ clickPreference(R.string.network_pref);
+ clickPreference(R.string.pref_automatic_download_title);
+ clickPreference(R.string.pref_episode_cleanup_title);
solo.waitForDialogToOpen();
String search = res.getQuantityString(R.plurals.episode_cleanup_days_after_listening, 5, 5);
onView(withText(search)).perform(click());
@@ -430,9 +408,8 @@ public class PreferencesTest {
int seconds = UserPreferences.getRewindSecs();
int deltas[] = res.getIntArray(R.array.seek_delta_values);
- clickPreference(withText(R.string.playback_pref));
- clickPreference(withText(R.string.pref_rewind));
- solo.waitForDialogToOpen();
+ clickPreference(R.string.playback_pref);
+ clickPreference(R.string.pref_rewind);
int currentIndex = Arrays.binarySearch(deltas, seconds);
assertTrue(currentIndex >= 0 && currentIndex < deltas.length); // found?
@@ -442,20 +419,18 @@ public class PreferencesTest {
onView(withText(String.valueOf(deltas[newIndex]) + " seconds")).perform(click());
onView(withText("Confirm")).perform(click());
- solo.waitForDialogToClose();
assertTrue(solo.waitForCondition(() -> UserPreferences.getRewindSecs() == deltas[newIndex],
Timeout.getLargeTimeout()));
}
@Test
public void testFastForwardChange() {
- clickPreference(withText(R.string.playback_pref));
+ clickPreference(R.string.playback_pref);
for (int i = 2; i > 0; i--) { // repeat twice to catch any error where fastforward is tracking rewind
int seconds = UserPreferences.getFastForwardSecs();
int deltas[] = res.getIntArray(R.array.seek_delta_values);
- clickPreference(withText(R.string.pref_fast_forward));
- solo.waitForDialogToOpen();
+ clickPreference(R.string.pref_fast_forward);
int currentIndex = Arrays.binarySearch(deltas, seconds);
assertTrue(currentIndex >= 0 && currentIndex < deltas.length); // found?
@@ -463,7 +438,7 @@ public class PreferencesTest {
// Find next value (wrapping around to next)
int newIndex = (currentIndex + 1) % deltas.length;
- onView(withText(String.valueOf(deltas[newIndex]) + " seconds")).perform(click());
+ onView(withText(deltas[newIndex] + " seconds")).perform(click());
onView(withText("Confirm")).perform(click());
solo.waitForDialogToClose();
@@ -474,33 +449,27 @@ public class PreferencesTest {
@Test
public void testBackButtonBehaviorGoToPageSelector() {
- clickPreference(withText(R.string.user_interface_label));
- clickPreference(withText(R.string.pref_back_button_behavior_title));
- solo.waitForDialogToOpen();
- solo.clickOnText(solo.getString(R.string.back_button_go_to_page));
- solo.waitForDialogToOpen();
- solo.clickOnText(solo.getString(R.string.queue_label));
- solo.clickOnText(solo.getString(R.string.confirm_label));
+ clickPreference(R.string.user_interface_label);
+ clickPreference(R.string.pref_back_button_behavior_title);
+ onView(withText(R.string.back_button_go_to_page)).perform(click());
+ onView(withText(R.string.queue_label)).perform(click());
+ onView(withText(R.string.confirm_label)).perform(click());
assertTrue(solo.waitForCondition(() -> UserPreferences.getBackButtonBehavior() == UserPreferences.BackButtonBehavior.GO_TO_PAGE,
Timeout.getLargeTimeout()));
assertTrue(solo.waitForCondition(() -> UserPreferences.getBackButtonGoToPage().equals(QueueFragment.TAG),
Timeout.getLargeTimeout()));
- clickPreference(withText(R.string.pref_back_button_behavior_title));
- solo.waitForDialogToOpen();
- solo.clickOnText(solo.getString(R.string.back_button_go_to_page));
- solo.waitForDialogToOpen();
- solo.clickOnText(solo.getString(R.string.episodes_label));
- solo.clickOnText(solo.getString(R.string.confirm_label));
+ clickPreference(R.string.pref_back_button_behavior_title);
+ onView(withText(R.string.back_button_go_to_page)).perform(click());
+ onView(withText(R.string.episodes_label)).perform(click());
+ onView(withText(R.string.confirm_label)).perform(click());
assertTrue(solo.waitForCondition(() -> UserPreferences.getBackButtonBehavior() == UserPreferences.BackButtonBehavior.GO_TO_PAGE,
Timeout.getLargeTimeout()));
assertTrue(solo.waitForCondition(() -> UserPreferences.getBackButtonGoToPage().equals(EpisodesFragment.TAG),
Timeout.getLargeTimeout()));
- clickPreference(withText(R.string.pref_back_button_behavior_title));
- solo.waitForDialogToOpen();
- solo.clickOnText(solo.getString(R.string.back_button_go_to_page));
- solo.waitForDialogToOpen();
- solo.clickOnText(solo.getString(R.string.subscriptions_label));
- solo.clickOnText(solo.getString(R.string.confirm_label));
+ clickPreference(R.string.pref_back_button_behavior_title);
+ onView(withText(R.string.back_button_go_to_page)).perform(click());
+ onView(withText(R.string.subscriptions_label)).perform(click());
+ onView(withText(R.string.confirm_label)).perform(click());
assertTrue(solo.waitForCondition(() -> UserPreferences.getBackButtonBehavior() == UserPreferences.BackButtonBehavior.GO_TO_PAGE,
Timeout.getLargeTimeout()));
assertTrue(solo.waitForCondition(() -> UserPreferences.getBackButtonGoToPage().equals(SubscriptionFragment.TAG),
@@ -509,20 +478,15 @@ public class PreferencesTest {
@Test
public void testDeleteRemovesFromQueue() {
- clickPreference(withText(R.string.storage_pref));
+ clickPreference(R.string.storage_pref);
if (!UserPreferences.shouldDeleteRemoveFromQueue()) {
- clickPreference(withText(R.string.pref_delete_removes_from_queue_title));
+ clickPreference(R.string.pref_delete_removes_from_queue_title);
assertTrue(solo.waitForCondition(UserPreferences::shouldDeleteRemoveFromQueue, Timeout.getLargeTimeout()));
}
final boolean deleteRemovesFromQueue = UserPreferences.shouldDeleteRemoveFromQueue();
- solo.clickOnText(solo.getString(R.string.pref_delete_removes_from_queue_title));
+ onView(withText(R.string.pref_delete_removes_from_queue_title)).perform(click());
assertTrue(solo.waitForCondition(() -> deleteRemovesFromQueue != UserPreferences.shouldDeleteRemoveFromQueue(), Timeout.getLargeTimeout()));
- solo.clickOnText(solo.getString(R.string.pref_delete_removes_from_queue_title));
+ onView(withText(R.string.pref_delete_removes_from_queue_title)).perform(click());
assertTrue(solo.waitForCondition(() -> deleteRemovesFromQueue == UserPreferences.shouldDeleteRemoveFromQueue(), Timeout.getLargeTimeout()));
}
-
- private void clickPreference(Matcher<View> matcher) {
- onView(withId(R.id.list))
- .perform(RecyclerViewActions.actionOnItem(hasDescendant(matcher), click()));
- }
}
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 263790c2f..20c54cb15 100644
--- a/app/src/androidTest/java/de/test/antennapod/ui/UITestUtils.java
+++ b/app/src/androidTest/java/de/test/antennapod/ui/UITestUtils.java
@@ -4,8 +4,6 @@ import android.content.Context;
import android.graphics.Bitmap;
import android.util.Log;
-import junit.framework.Assert;
-
import org.apache.commons.io.FileUtils;
import org.apache.commons.io.IOUtils;
import org.apache.commons.lang3.StringUtils;
@@ -30,6 +28,7 @@ import de.danoeh.antennapod.fragment.ExternalPlayerFragment;
import de.test.antennapod.util.service.download.HTTPBin;
import de.test.antennapod.util.syndication.feedgenerator.RSS2Generator;
import org.greenrobot.eventbus.EventBus;
+import org.junit.Assert;
/**
* Utility methods for UI tests.
@@ -39,8 +38,6 @@ class UITestUtils {
private static final String TAG = UITestUtils.class.getSimpleName();
- private static final String DATA_FOLDER = "test/UITestUtils";
-
private static final int NUM_FEEDS = 5;
private static final int NUM_ITEMS_PER_FEED = 10;
@@ -61,7 +58,7 @@ class UITestUtils {
public void setup() throws IOException {
- destDir = context.getExternalFilesDir(DATA_FOLDER);
+ destDir = new File(context.getFilesDir(), "test/UITestUtils");
destDir.mkdir();
hostedFeedDir = new File(destDir, "hostedFeeds");
hostedFeedDir.mkdir();
diff --git a/app/src/androidTest/java/de/test/antennapod/ui/UITestUtilsTest.java b/app/src/androidTest/java/de/test/antennapod/ui/UITestUtilsTest.java
index 45ba472ff..7555bb69a 100644
--- a/app/src/androidTest/java/de/test/antennapod/ui/UITestUtilsTest.java
+++ b/app/src/androidTest/java/de/test/antennapod/ui/UITestUtilsTest.java
@@ -1,35 +1,44 @@
package de.test.antennapod.ui;
-import android.test.InstrumentationTestCase;
-
import java.io.File;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.List;
+import android.support.test.InstrumentationRegistry;
+import android.support.test.filters.LargeTest;
+import android.support.test.filters.MediumTest;
import de.danoeh.antennapod.core.feed.Feed;
import de.danoeh.antennapod.core.feed.FeedItem;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
/**
* Test for the UITestUtils. Makes sure that all URLs are reachable and that the class does not cause any crashes.
*/
-public class UITestUtilsTest extends InstrumentationTestCase {
+@MediumTest
+public class UITestUtilsTest {
private UITestUtils uiTestUtils;
- @Override
- protected void setUp() throws Exception {
- super.setUp();
- uiTestUtils = new UITestUtils(getInstrumentation().getTargetContext());
+ @Before
+ public void setUp() throws Exception {
+ uiTestUtils = new UITestUtils(InstrumentationRegistry.getTargetContext());
uiTestUtils.setup();
}
- @Override
+ @After
public void tearDown() throws Exception {
- super.tearDown();
uiTestUtils.tearDown();
}
+ @Test
public void testAddHostedFeeds() throws Exception {
uiTestUtils.addHostedFeedData();
final List<Feed> feeds = uiTestUtils.hostedFeeds;
@@ -46,7 +55,7 @@ public class UITestUtilsTest extends InstrumentationTestCase {
}
}
- private void testUrlReachable(String strUtl) throws Exception {
+ public void testUrlReachable(String strUtl) throws Exception {
URL url = new URL(strUtl);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("GET");
@@ -78,10 +87,12 @@ public class UITestUtilsTest extends InstrumentationTestCase {
}
}
+ @Test
public void testAddLocalFeedDataNoDownload() throws Exception {
addLocalFeedDataCheck(false);
}
+ @Test
public void testAddLocalFeedDataDownload() throws Exception {
addLocalFeedDataCheck(true);
}
diff --git a/app/src/androidTest/java/de/test/antennapod/ui/VideoplayerActivityTest.java b/app/src/androidTest/java/de/test/antennapod/ui/VideoplayerActivityTest.java
index da6f07cab..c4dd032d7 100644
--- a/app/src/androidTest/java/de/test/antennapod/ui/VideoplayerActivityTest.java
+++ b/app/src/androidTest/java/de/test/antennapod/ui/VideoplayerActivityTest.java
@@ -1,38 +1,36 @@
package de.test.antennapod.ui;
-import android.test.ActivityInstrumentationTestCase2;
-
-import com.robotium.solo.Solo;
+import android.content.Intent;
+import android.support.test.filters.MediumTest;
+import android.support.test.rule.ActivityTestRule;
+import de.danoeh.antennapod.R;
import de.danoeh.antennapod.activity.VideoplayerActivity;
+import org.junit.Ignore;
+import org.junit.Rule;
+import org.junit.Test;
+
+import static android.support.test.espresso.Espresso.onView;
+import static android.support.test.espresso.assertion.ViewAssertions.matches;
+import static android.support.test.espresso.matcher.ViewMatchers.isDisplayed;
+import static android.support.test.espresso.matcher.ViewMatchers.withId;
/**
* Test class for VideoplayerActivity
*/
-public class VideoplayerActivityTest extends ActivityInstrumentationTestCase2<VideoplayerActivity> {
-
- private Solo solo;
-
- public VideoplayerActivityTest() {
- super(VideoplayerActivity.class);
- }
-
- @Override
- public void setUp() throws Exception {
- super.setUp();
- solo = new Solo(getInstrumentation(), getActivity());
- }
+@MediumTest
+@Ignore
+public class VideoplayerActivityTest {
- @Override
- public void tearDown() throws Exception {
- solo.finishOpenedActivities();
- super.tearDown();
- }
+ @Rule
+ public ActivityTestRule<VideoplayerActivity> activityTestRule = new ActivityTestRule<>(VideoplayerActivity.class, false, false);
/**
* Test if activity can be started.
*/
+ @Test
public void testStartActivity() throws Exception {
- solo.waitForActivity(VideoplayerActivity.class);
+ activityTestRule.launchActivity(new Intent());
+ onView(withId(R.id.videoframe)).check(matches(isDisplayed()));
}
}