From e3c65aa56e3c8f6d8e2510a35c990563e3ffc12a Mon Sep 17 00:00:00 2001 From: Akash-Ramjyothi Date: Sun, 26 Jul 2020 03:18:33 +0530 Subject: [PATCH 01/20] Added UI Testing --- build.gradle | 5 + .../org.amahi.anywhere_2020.07.11_05.41.li | Bin 0 -> 237003 bytes .../ExpandedControlsActivityTest.java | 54 ++++++++++ .../activity/IntroductionActivityTest.java | 81 +++++++++++++++ .../activity/NativeVideoActivityTest.java | 82 +++++++++++++++ .../activity/NavigationActivityTest.java | 95 +++++++++++++++++ .../activity/OfflineFilesActivityTest.java | 85 +++++++++++++++ .../activity/RecentFilesActivityTest.java | 83 +++++++++++++++ .../activity/ServerAppActivityTest.java | 62 +++++++++++ .../activity/ServerFileAudioActivityTest.java | 97 ++++++++++++++++++ .../activity/ServerFileImageActivityTest.java | 57 ++++++++++ .../activity/ServerFileVideoActivityTest.java | 87 ++++++++++++++++ .../activity/ServerFilesActivityTest.java | 75 ++++++++++++++ .../activity/SettingsActivityTest.java | 56 ++++++++++ 14 files changed, 919 insertions(+) create mode 100644 captures/org.amahi.anywhere_2020.07.11_05.41.li create mode 100644 src/androidTest/java/org/amahi/anywhere/activity/ExpandedControlsActivityTest.java create mode 100644 src/androidTest/java/org/amahi/anywhere/activity/IntroductionActivityTest.java create mode 100644 src/androidTest/java/org/amahi/anywhere/activity/NativeVideoActivityTest.java create mode 100644 src/androidTest/java/org/amahi/anywhere/activity/NavigationActivityTest.java create mode 100644 src/androidTest/java/org/amahi/anywhere/activity/OfflineFilesActivityTest.java create mode 100644 src/androidTest/java/org/amahi/anywhere/activity/RecentFilesActivityTest.java create mode 100644 src/androidTest/java/org/amahi/anywhere/activity/ServerAppActivityTest.java create mode 100644 src/androidTest/java/org/amahi/anywhere/activity/ServerFileAudioActivityTest.java create mode 100644 src/androidTest/java/org/amahi/anywhere/activity/ServerFileImageActivityTest.java create mode 100644 src/androidTest/java/org/amahi/anywhere/activity/ServerFileVideoActivityTest.java create mode 100644 src/androidTest/java/org/amahi/anywhere/activity/ServerFilesActivityTest.java create mode 100644 src/androidTest/java/org/amahi/anywhere/activity/SettingsActivityTest.java diff --git a/build.gradle b/build.gradle index b7c5f9285..e566c6946 100644 --- a/build.gradle +++ b/build.gradle @@ -139,6 +139,11 @@ dependencies { implementation 'com.github.dmytrodanylyk.android-process-button:library:1.0.4' implementation 'com.jakewharton.timber:timber:4.5.1' +// Espresso Testing Framework Implementations + androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.0' + androidTestImplementation 'androidx.test.espresso:espresso-web:3.1.0' + androidTestImplementation 'androidx.test.espresso:espresso-intents:3.1.0' + // Otto and Retrofit implementation 'com.squareup:otto:1.3.8' implementation 'com.github.apl-devs:appintro:v4.2.3' diff --git a/captures/org.amahi.anywhere_2020.07.11_05.41.li b/captures/org.amahi.anywhere_2020.07.11_05.41.li new file mode 100644 index 0000000000000000000000000000000000000000..fd246df5c67b5af7875ebadd344fca2f31adfbaf GIT binary patch literal 237003 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
Q3Ty9f9PRa*=O;>z=weVJVtuVagbE==q)Y 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 mActivityRule = new ActivityTestRule<>( + ExpandedControlsActivity.class + ); + + @Before + public void setUp() throws Exception { + } + + @Test + public void test1(){ + onView(withId(R.menu.action_bar_expanded_controller)); + } + + @Test + public void test2(){ + onView(withId(R.id.media_route_menu_item)); + } + + @After + public void tearDown() throws Exception { + } +} diff --git a/src/androidTest/java/org/amahi/anywhere/activity/IntroductionActivityTest.java b/src/androidTest/java/org/amahi/anywhere/activity/IntroductionActivityTest.java new file mode 100644 index 000000000..7cea32e74 --- /dev/null +++ b/src/androidTest/java/org/amahi/anywhere/activity/IntroductionActivityTest.java @@ -0,0 +1,81 @@ +package org.amahi.anywhere.activity; + +import androidx.test.filters.LargeTest; +import androidx.test.internal.runner.junit4.AndroidJUnit4ClassRunner; +import androidx.test.rule.ActivityTestRule; +import androidx.test.runner.AndroidJUnit4; + +import org.amahi.anywhere.R; +import org.amahi.anywhere.util.Android; +import org.junit.After; +import org.junit.Before; +import org.junit.FixMethodOrder; +import org.junit.Rule; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.junit.runners.MethodSorters; + +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.isDisplayed; +import static androidx.test.espresso.matcher.ViewMatchers.withId; + +import static androidx.test.espresso.matcher.ViewMatchers.withText; +import static org.junit.Assert.*; + +@RunWith(AndroidJUnit4.class) +@LargeTest +@FixMethodOrder(MethodSorters.DEFAULT) + +public class IntroductionActivityTest { + + @Rule + public ActivityTestRule mActivityRule = new ActivityTestRule<>( + IntroductionActivity.class + ); + + @Before + public void setUp() throws Exception { + } + + @Test + public void test1(){ + onView(withText(R.string.intro_phone_1)).check(matches(isDisplayed())); + onView(withText(R.string.intro_desc_phone_1)).check(matches(isDisplayed())); + } + + @Test + public void test2(){ + onView(withText(R.string.intro_title_2)); + onView(withText(R.string.intro_desc_2)); + } + + @Test + public void test3(){ + onView(withText(R.string.intro_title_3)); + onView(withText(R.string.intro_desc_phone_3)); + } + + @Test + public void test4(){ + onView(withText(R.string.intro_title_4)); + onView(withText(R.string.intro_desc_phone_4)); + } + + @Test + public void test5(){ + onView(withText(R.string.intro_title_5)); + onView(withText(R.string.intro_desc_phone_5)); + } + + @Test + public void test6(){ + onView(withText(R.string.intro_title_6)); + onView(withText(R.string.intro_desc_6)); + } + + @After + public void tearDown() throws Exception { + } +} diff --git a/src/androidTest/java/org/amahi/anywhere/activity/NativeVideoActivityTest.java b/src/androidTest/java/org/amahi/anywhere/activity/NativeVideoActivityTest.java new file mode 100644 index 000000000..58bafb1d3 --- /dev/null +++ b/src/androidTest/java/org/amahi/anywhere/activity/NativeVideoActivityTest.java @@ -0,0 +1,82 @@ +package org.amahi.anywhere.activity; + +import androidx.test.filters.LargeTest; +import androidx.test.internal.runner.junit4.AndroidJUnit4ClassRunner; +import androidx.test.rule.ActivityTestRule; +import androidx.test.runner.AndroidJUnit4; + +import org.amahi.anywhere.R; +import org.amahi.anywhere.util.Android; +import org.junit.After; +import org.junit.Before; +import org.junit.FixMethodOrder; +import org.junit.Rule; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.junit.runners.MethodSorters; + +import static androidx.test.espresso.Espresso.onView; +import static androidx.test.espresso.action.ViewActions.click; +import static androidx.test.espresso.assertion.ViewAssertions.doesNotExist; +import static androidx.test.espresso.assertion.ViewAssertions.matches; +import static androidx.test.espresso.matcher.ViewMatchers.isDisplayed; +import static androidx.test.espresso.matcher.ViewMatchers.withId; + +import static androidx.test.espresso.matcher.ViewMatchers.withText; +import static org.junit.Assert.*; + +@RunWith(AndroidJUnit4.class) +@LargeTest +@FixMethodOrder(MethodSorters.DEFAULT) + +public class NativeVideoActivityTest { + + @Rule + public ActivityTestRule mActivityRule = new ActivityTestRule<>( + IntroductionActivity.class + ); + + @Before + public void setUp() throws Exception { + } + + @Test + public void test1(){ + onView(withText(R.string.intro_phone_1)).check(matches(isDisplayed())); + onView(withText(R.string.intro_desc_phone_1)).check(matches(isDisplayed())); + } + + @Test + public void test2(){ + onView(withText(R.string.intro_title_2)); + onView(withText(R.string.intro_desc_2)); + } + + @Test + public void test3(){ + onView(withText(R.string.intro_title_3)); + onView(withText(R.string.intro_desc_phone_3)); + } + + @Test + public void test4(){ + onView(withText(R.string.intro_title_4)); + onView(withText(R.string.intro_desc_phone_4)); + } + + @Test + public void test5(){ + onView(withText(R.string.intro_title_5)); + onView(withText(R.string.intro_desc_phone_5)); + } + + @Test + public void test6(){ + onView(withText(R.string.intro_title_6)); + onView(withText(R.string.intro_desc_6)); + } + + @After + public void tearDown() throws Exception { + } +} diff --git a/src/androidTest/java/org/amahi/anywhere/activity/NavigationActivityTest.java b/src/androidTest/java/org/amahi/anywhere/activity/NavigationActivityTest.java new file mode 100644 index 000000000..cd58c0fe9 --- /dev/null +++ b/src/androidTest/java/org/amahi/anywhere/activity/NavigationActivityTest.java @@ -0,0 +1,95 @@ +package org.amahi.anywhere.activity; + +import androidx.test.filters.LargeTest; +import androidx.test.internal.runner.junit4.AndroidJUnit4ClassRunner; +import androidx.test.rule.ActivityTestRule; +import androidx.test.runner.AndroidJUnit4; + +import org.amahi.anywhere.R; +import org.amahi.anywhere.util.Android; +import org.junit.After; +import org.junit.Before; +import org.junit.FixMethodOrder; +import org.junit.Rule; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.junit.runners.MethodSorters; + +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.isDisplayed; +import static androidx.test.espresso.matcher.ViewMatchers.withId; + +import static androidx.test.espresso.matcher.ViewMatchers.withText; +import static org.junit.Assert.*; + +@RunWith(AndroidJUnit4.class) +@LargeTest +@FixMethodOrder(MethodSorters.DEFAULT) + +public class NavigationActivityTest { + + @Rule + public ActivityTestRule mActivityRule = new ActivityTestRule<>( + NavigationActivity.class + ); + + @Before + public void setUp() throws Exception { + } + + @Test + public void test1(){ + onView(withId(R.id.view_stub_tv_loading)); + } + + @Test + public void test2(){ + onView(withId(R.id.tv_loading)); + } + + @Test + public void test3(){ + onView(withId(R.id.container_content)); + } + + @Test + public void test4(){ + onView(withId(R.id.container_navigation)); + } + + @Test + public void test5(){ + onView(withId(R.id.toolbar)); + } + + @Test + public void test6(){ + onView(withText(R.string.title_shares)); + } + + @Test + public void test7(){ + onView(withText(R.string.menu_navigation_open)); + } + + @Test + public void test8(){ + onView(withId(R.id.drawer_content)); + } + + @Test + public void test9(){ + onView(withText(R.string.application_name)); + } + + @Test + public void test10(){ + onView(withText(R.string.title_apps)); + } + + @After + public void tearDown() throws Exception { + } +} diff --git a/src/androidTest/java/org/amahi/anywhere/activity/OfflineFilesActivityTest.java b/src/androidTest/java/org/amahi/anywhere/activity/OfflineFilesActivityTest.java new file mode 100644 index 000000000..59d8c2897 --- /dev/null +++ b/src/androidTest/java/org/amahi/anywhere/activity/OfflineFilesActivityTest.java @@ -0,0 +1,85 @@ +package org.amahi.anywhere.activity; + +import androidx.test.filters.LargeTest; +import androidx.test.internal.runner.junit4.AndroidJUnit4ClassRunner; +import androidx.test.rule.ActivityTestRule; +import androidx.test.runner.AndroidJUnit4; + +import org.amahi.anywhere.R; +import org.amahi.anywhere.util.Android; +import org.junit.After; +import org.junit.Before; +import org.junit.FixMethodOrder; +import org.junit.Rule; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.junit.runners.MethodSorters; + +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.isDisplayed; +import static androidx.test.espresso.matcher.ViewMatchers.withId; + +import static androidx.test.espresso.matcher.ViewMatchers.withText; +import static org.junit.Assert.*; + +@RunWith(AndroidJUnit4.class) +@LargeTest +@FixMethodOrder(MethodSorters.DEFAULT) + +public class OfflineFilesActivityTest { + + @Rule + public ActivityTestRule mActivityRule = new ActivityTestRule<>( + OfflineFilesActivity.class + ); + + @Before + public void setUp() throws Exception { + } + + @Test + public void test1(){ + onView(withText(R.string.title_offline_files)).check(matches(isDisplayed())); + } + + @Test + public void test2(){ + onView(withId(R.id.container_files)).check(matches(isDisplayed())); + } + + @Test + public void test3(){ + onView(withText(R.string.message_progress_file_downloading)); + } + + @Test + public void test4(){ + onView(withText(R.string.message_file_download_complete)); + } + + @Test + public void test5(){ + onView(withId(R.id.parent_view)); + } + + @Test + public void test6(){ + onView(withText(R.string.alert_delete_dialog)); + } + + @Test + public void test7(){ + onView(withText(R.string.alert_delete_confirm)); + } + + @Test + public void test8(){ + onView(withText(R.string.message_offline_file_deleted)); + } + + @After + public void tearDown() throws Exception { + } +} diff --git a/src/androidTest/java/org/amahi/anywhere/activity/RecentFilesActivityTest.java b/src/androidTest/java/org/amahi/anywhere/activity/RecentFilesActivityTest.java new file mode 100644 index 000000000..5ae11bcf1 --- /dev/null +++ b/src/androidTest/java/org/amahi/anywhere/activity/RecentFilesActivityTest.java @@ -0,0 +1,83 @@ +package org.amahi.anywhere.activity; + +import androidx.test.filters.LargeTest; +import androidx.test.internal.runner.junit4.AndroidJUnit4ClassRunner; +import androidx.test.rule.ActivityTestRule; +import androidx.test.runner.AndroidJUnit4; + +import org.amahi.anywhere.R; +import org.amahi.anywhere.util.Android; +import org.junit.After; +import org.junit.Before; +import org.junit.FixMethodOrder; +import org.junit.Rule; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.junit.runners.MethodSorters; + +import static androidx.test.espresso.Espresso.onView; +import static androidx.test.espresso.action.ViewActions.click; +import static androidx.test.espresso.assertion.ViewAssertions.doesNotExist; +import static androidx.test.espresso.assertion.ViewAssertions.matches; +import static androidx.test.espresso.matcher.ViewMatchers.isDisplayed; +import static androidx.test.espresso.matcher.ViewMatchers.isNotChecked; +import static androidx.test.espresso.matcher.ViewMatchers.withId; + +import static androidx.test.espresso.matcher.ViewMatchers.withText; +import static org.hamcrest.Matchers.not; +import static org.junit.Assert.*; + +@RunWith(AndroidJUnit4.class) +@LargeTest +@FixMethodOrder(MethodSorters.DEFAULT) + +public class RecentFilesActivityTest { + + @Rule + public ActivityTestRule mActivityRule = new ActivityTestRule<>( + RecentFilesActivity.class + ); + + @Before + public void setUp() throws Exception { + } + + @Test + public void test1(){ + onView(withText(R.string.title_recent_files)).check(matches(isDisplayed())); + } + + @Test + public void test2(){ + onView(withId(R.id.recent_list)).check(matches(not(isDisplayed()))); + } + + @Test + public void test3(){ + onView(withId(android.R.id.empty)).check(matches(isDisplayed())); + } + + @Test + public void test4(){ + onView(withId(R.id.layout_refresh)).check(matches(isDisplayed())); + } + + @Test + public void test5(){ + onView(withText(R.string.message_delete_file_error)).check(doesNotExist()); + } + + @Test + public void test6(){ + onView(withText(R.string.message_offline_file_deleted)).check(doesNotExist()); + } + + @Test + public void test7(){ + onView(withId(R.id.media_route_menu_item)).check(doesNotExist()); + } + + @After + public void tearDown() throws Exception { + } +} diff --git a/src/androidTest/java/org/amahi/anywhere/activity/ServerAppActivityTest.java b/src/androidTest/java/org/amahi/anywhere/activity/ServerAppActivityTest.java new file mode 100644 index 000000000..42bb0413c --- /dev/null +++ b/src/androidTest/java/org/amahi/anywhere/activity/ServerAppActivityTest.java @@ -0,0 +1,62 @@ +package org.amahi.anywhere.activity; + +import androidx.test.filters.LargeTest; +import androidx.test.internal.runner.junit4.AndroidJUnit4ClassRunner; +import androidx.test.rule.ActivityTestRule; +import androidx.test.runner.AndroidJUnit4; + +import org.amahi.anywhere.R; +import org.amahi.anywhere.util.Android; +import org.junit.After; +import org.junit.Before; +import org.junit.FixMethodOrder; +import org.junit.Rule; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.junit.runners.MethodSorters; + +import static androidx.test.espresso.Espresso.onView; +import static androidx.test.espresso.action.ViewActions.click; +import static androidx.test.espresso.assertion.ViewAssertions.doesNotExist; +import static androidx.test.espresso.assertion.ViewAssertions.matches; +import static androidx.test.espresso.matcher.ViewMatchers.isDisplayed; +import static androidx.test.espresso.matcher.ViewMatchers.withId; + +import static androidx.test.espresso.matcher.ViewMatchers.withText; +import static org.junit.Assert.*; + +@RunWith(AndroidJUnit4.class) +@LargeTest +@FixMethodOrder(MethodSorters.DEFAULT) + +public class ServerAppActivityTest { + + @Rule + public ActivityTestRule mActivityRule = new ActivityTestRule<>( + OfflineFilesActivity.class + ); + + @Before + public void setUp() throws Exception { + } + + @Test + public void test1(){ + onView(withText(R.string.title_offline_files)).check(matches(isDisplayed())); + } + + @Test + public void test2(){ + onView(withId(R.id.container_files)).check(matches(isDisplayed())); + } + + @Test + public void test3(){ + onView(withText(R.string.message_progress_file_downloading)); + } + + + @After + public void tearDown() throws Exception { + } +} diff --git a/src/androidTest/java/org/amahi/anywhere/activity/ServerFileAudioActivityTest.java b/src/androidTest/java/org/amahi/anywhere/activity/ServerFileAudioActivityTest.java new file mode 100644 index 000000000..a41fc7108 --- /dev/null +++ b/src/androidTest/java/org/amahi/anywhere/activity/ServerFileAudioActivityTest.java @@ -0,0 +1,97 @@ +package org.amahi.anywhere.activity; + +import androidx.test.filters.LargeTest; +import androidx.test.internal.runner.junit4.AndroidJUnit4ClassRunner; +import androidx.test.rule.ActivityTestRule; +import androidx.test.runner.AndroidJUnit4; + +import org.amahi.anywhere.R; +import org.amahi.anywhere.util.Android; +import org.junit.After; +import org.junit.Before; +import org.junit.FixMethodOrder; +import org.junit.Rule; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.junit.runners.MethodSorters; + +import static androidx.test.espresso.Espresso.onView; +import static androidx.test.espresso.action.ViewActions.click; +import static androidx.test.espresso.assertion.ViewAssertions.doesNotExist; +import static androidx.test.espresso.assertion.ViewAssertions.matches; +import static androidx.test.espresso.matcher.ViewMatchers.isDisplayed; +import static androidx.test.espresso.matcher.ViewMatchers.withId; + +import static androidx.test.espresso.matcher.ViewMatchers.withText; +import static org.hamcrest.Matchers.not; +import static org.junit.Assert.*; + +@RunWith(AndroidJUnit4.class) +@LargeTest +@FixMethodOrder(MethodSorters.DEFAULT) + +public class ServerFileAudioActivityTest { + + @Rule + public ActivityTestRule mActivityRule = new ActivityTestRule<>( + RecentFilesActivity.class + ); + + @Before + public void setUp() throws Exception { + } + + @Test + public void test1(){ + onView(withText(R.string.title_recent_files)).check(matches(isDisplayed())); + } + + @Test + public void test2(){ + onView(withId(R.id.recent_list)).check(matches(not(isDisplayed()))); + } + + @Test + public void test3(){ + onView(withId(android.R.id.empty)).check(matches(isDisplayed())); + } + + @Test + public void test4(){ + onView(withId(R.id.layout_refresh)).check(matches(isDisplayed())); + } + + @Test + public void test5(){ + onView(withText(R.string.message_delete_file_error)).check(doesNotExist()); + } + + @Test + public void test6(){ + onView(withText(R.string.message_offline_file_deleted)).check(doesNotExist()); + } + + @Test + public void test7(){ + onView(withId(R.id.media_route_menu_item)).check(doesNotExist()); + } + + @Test + public void test8(){ + onView(withId(R.id.media_route_menu_item)); + } + + @Test + public void test9(){ + onView(withId(R.id.menu_audio_list)); + } + + @Test + public void test10(){ + onView(withId(R.id.audio_list_container)); + } + + @After + public void tearDown() throws Exception { + } +} diff --git a/src/androidTest/java/org/amahi/anywhere/activity/ServerFileImageActivityTest.java b/src/androidTest/java/org/amahi/anywhere/activity/ServerFileImageActivityTest.java new file mode 100644 index 000000000..0c44f6264 --- /dev/null +++ b/src/androidTest/java/org/amahi/anywhere/activity/ServerFileImageActivityTest.java @@ -0,0 +1,57 @@ +package org.amahi.anywhere.activity; + +import androidx.test.filters.LargeTest; +import androidx.test.internal.runner.junit4.AndroidJUnit4ClassRunner; +import androidx.test.rule.ActivityTestRule; +import androidx.test.runner.AndroidJUnit4; + +import org.amahi.anywhere.R; +import org.amahi.anywhere.util.Android; +import org.junit.After; +import org.junit.Before; +import org.junit.FixMethodOrder; +import org.junit.Rule; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.junit.runners.MethodSorters; + +import static androidx.test.espresso.Espresso.onView; +import static androidx.test.espresso.action.ViewActions.click; +import static androidx.test.espresso.assertion.ViewAssertions.doesNotExist; +import static androidx.test.espresso.assertion.ViewAssertions.matches; +import static androidx.test.espresso.matcher.ViewMatchers.isDisplayed; +import static androidx.test.espresso.matcher.ViewMatchers.withId; + +import static androidx.test.espresso.matcher.ViewMatchers.withText; +import static org.hamcrest.Matchers.not; +import static org.junit.Assert.*; + +@RunWith(AndroidJUnit4.class) +@LargeTest +@FixMethodOrder(MethodSorters.DEFAULT) + +public class ServerFileImageActivityTest { + + @Rule + public ActivityTestRule mActivityRule = new ActivityTestRule<>( + RecentFilesActivity.class + ); + + @Before + public void setUp() throws Exception { + } + + @Test + public void test1(){ + onView(withText(R.string.title_recent_files)).check(matches(isDisplayed())); + } + + @Test + public void test2(){ + onView(withId(R.id.recent_list)).check(matches(not(isDisplayed()))); + } + + @After + public void tearDown() throws Exception { + } +} diff --git a/src/androidTest/java/org/amahi/anywhere/activity/ServerFileVideoActivityTest.java b/src/androidTest/java/org/amahi/anywhere/activity/ServerFileVideoActivityTest.java new file mode 100644 index 000000000..e9fea6f35 --- /dev/null +++ b/src/androidTest/java/org/amahi/anywhere/activity/ServerFileVideoActivityTest.java @@ -0,0 +1,87 @@ +package org.amahi.anywhere.activity; + +import androidx.test.filters.LargeTest; +import androidx.test.internal.runner.junit4.AndroidJUnit4ClassRunner; +import androidx.test.rule.ActivityTestRule; +import androidx.test.runner.AndroidJUnit4; + +import org.amahi.anywhere.R; +import org.amahi.anywhere.util.Android; +import org.junit.After; +import org.junit.Before; +import org.junit.FixMethodOrder; +import org.junit.Rule; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.junit.runners.MethodSorters; + +import static androidx.test.espresso.Espresso.onView; +import static androidx.test.espresso.action.ViewActions.click; +import static androidx.test.espresso.assertion.ViewAssertions.doesNotExist; +import static androidx.test.espresso.assertion.ViewAssertions.matches; +import static androidx.test.espresso.matcher.ViewMatchers.isDisplayed; +import static androidx.test.espresso.matcher.ViewMatchers.withId; + +import static androidx.test.espresso.matcher.ViewMatchers.withText; +import static org.hamcrest.Matchers.not; +import static org.junit.Assert.*; + +@RunWith(AndroidJUnit4.class) +@LargeTest +@FixMethodOrder(MethodSorters.DEFAULT) + +public class ServerFileVideoActivityTest { + + @Rule + public ActivityTestRule mActivityRule = new ActivityTestRule<>( + RecentFilesActivity.class + ); + + @Before + public void setUp() throws Exception { + } + + @Test + public void test1(){ + onView(withText(R.string.title_recent_files)).check(matches(isDisplayed())); + } + + @Test + public void test2(){ + onView(withId(R.id.recent_list)).check(matches(not(isDisplayed()))); + } + + @Test + public void test3(){ + onView(withId(android.R.id.empty)).check(matches(isDisplayed())); + } + + @Test + public void test4(){ + onView(withId(R.id.layout_refresh)).check(matches(isDisplayed())); + } + + @Test + public void test5(){ + onView(withText(R.string.message_delete_file_error)).check(doesNotExist()); + } + + @Test + public void test6(){ + onView(withText(R.string.message_offline_file_deleted)).check(doesNotExist()); + } + + @Test + public void test7(){ + onView(withId(R.id.media_route_menu_item)).check(doesNotExist()); + } + + @Test + public void test8(){ + onView(withText(R.string.title_recent_files)).check(matches(isDisplayed())); + } + + @After + public void tearDown() throws Exception { + } +} diff --git a/src/androidTest/java/org/amahi/anywhere/activity/ServerFilesActivityTest.java b/src/androidTest/java/org/amahi/anywhere/activity/ServerFilesActivityTest.java new file mode 100644 index 000000000..0820fe031 --- /dev/null +++ b/src/androidTest/java/org/amahi/anywhere/activity/ServerFilesActivityTest.java @@ -0,0 +1,75 @@ +package org.amahi.anywhere.activity; + +import androidx.test.filters.LargeTest; +import androidx.test.internal.runner.junit4.AndroidJUnit4ClassRunner; +import androidx.test.rule.ActivityTestRule; +import androidx.test.runner.AndroidJUnit4; + +import org.amahi.anywhere.R; +import org.amahi.anywhere.util.Android; +import org.junit.After; +import org.junit.Before; +import org.junit.FixMethodOrder; +import org.junit.Rule; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.junit.runners.MethodSorters; + +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.isDisplayed; +import static androidx.test.espresso.matcher.ViewMatchers.withId; + +import static androidx.test.espresso.matcher.ViewMatchers.withText; +import static org.junit.Assert.*; + +@RunWith(AndroidJUnit4.class) +@LargeTest +@FixMethodOrder(MethodSorters.DEFAULT) + +public class ServerFilesActivityTest { + + @Rule + public ActivityTestRule mActivityRule = new ActivityTestRule<>( + OfflineFilesActivity.class + ); + + @Before + public void setUp() throws Exception { + } + + @Test + public void test1(){ + onView(withText(R.string.title_offline_files)).check(matches(isDisplayed())); + } + + @Test + public void test2(){ + onView(withId(R.id.container_files)).check(matches(isDisplayed())); + } + + @Test + public void test3(){ + onView(withText(R.string.message_progress_file_downloading)); + } + + @Test + public void test4(){ + onView(withText(R.string.title_offline_files)).check(matches(isDisplayed())); + } + + @Test + public void test5(){ + onView(withId(R.id.container_files)).check(matches(isDisplayed())); + } + + @Test + public void test6(){ + onView(withText(R.string.message_progress_file_downloading)); + } + + @After + public void tearDown() throws Exception { + } +} diff --git a/src/androidTest/java/org/amahi/anywhere/activity/SettingsActivityTest.java b/src/androidTest/java/org/amahi/anywhere/activity/SettingsActivityTest.java new file mode 100644 index 000000000..6b77d5069 --- /dev/null +++ b/src/androidTest/java/org/amahi/anywhere/activity/SettingsActivityTest.java @@ -0,0 +1,56 @@ +package org.amahi.anywhere.activity; + +import androidx.test.filters.LargeTest; +import androidx.test.internal.runner.junit4.AndroidJUnit4ClassRunner; +import androidx.test.rule.ActivityTestRule; +import androidx.test.runner.AndroidJUnit4; + +import org.amahi.anywhere.R; +import org.amahi.anywhere.util.Android; +import org.junit.After; +import org.junit.Before; +import org.junit.FixMethodOrder; +import org.junit.Rule; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.junit.runners.MethodSorters; + +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.isDisplayed; +import static androidx.test.espresso.matcher.ViewMatchers.withId; + +import static androidx.test.espresso.matcher.ViewMatchers.withText; +import static org.hamcrest.Matchers.not; +import static org.junit.Assert.*; + +@RunWith(AndroidJUnit4.class) +@LargeTest +@FixMethodOrder(MethodSorters.DEFAULT) + +public class SettingsActivityTest { + + @Rule + public ActivityTestRule mActivityRule = new ActivityTestRule<>( + SettingsActivity.class + ); + + @Before + public void setUp() throws Exception { + } + + @Test + public void test1(){ + onView(withId(R.id.settings_container)).check(matches(isDisplayed())); + } + + @Test + public void test2(){ + onView(withId(android.R.id.home)); + } + + @After + public void tearDown() throws Exception { + } +} From 8ec27440fef78500d6aab4e61057f029a9b25cdb Mon Sep 17 00:00:00 2001 From: Akash-Ramjyothi <54114888+Akash-Ramjyothi@users.noreply.github.com> Date: Sun, 26 Jul 2020 04:04:45 +0530 Subject: [PATCH 02/20] Update .travis.yml --- .travis.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.travis.yml b/.travis.yml index bb4eb1c6d..d4bdcacf8 100644 --- a/.travis.yml +++ b/.travis.yml @@ -31,6 +31,9 @@ before_script: - adb shell settings put global transition_animation_scale 0 & - adb shell settings put global animator_duration_scale 0 & - adb shell input keyevent 82 & + +script: + - ./gradlew connectedAndroidTest notifications: email: false From 650fe22fec30293a70d25aa0e6529ea75644e2c2 Mon Sep 17 00:00:00 2001 From: Akash-Ramjyothi <54114888+Akash-Ramjyothi@users.noreply.github.com> Date: Sun, 26 Jul 2020 04:33:35 +0530 Subject: [PATCH 03/20] Update .travis.yml --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index d4bdcacf8..2c4d063d0 100644 --- a/.travis.yml +++ b/.travis.yml @@ -33,7 +33,7 @@ before_script: - adb shell input keyevent 82 & script: - - ./gradlew connectedAndroidTest + - ./gradlew connectedDebugAndroidTest notifications: email: false From daa81ec20c3db809a1315e1fd84d38c94d9d2b5d Mon Sep 17 00:00:00 2001 From: Chirag Jain Date: Sun, 26 Jul 2020 07:40:55 +0530 Subject: [PATCH 04/20] remove captures --- .../org.amahi.anywhere_2020.07.11_05.41.li | Bin 237003 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 captures/org.amahi.anywhere_2020.07.11_05.41.li diff --git a/captures/org.amahi.anywhere_2020.07.11_05.41.li b/captures/org.amahi.anywhere_2020.07.11_05.41.li deleted file mode 100644 index fd246df5c67b5af7875ebadd344fca2f31adfbaf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 237003 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
Q3Ty9f9PRa*=O;>z=weVJVtuVagbE==q)Y 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 Date: Sun, 26 Jul 2020 07:41:58 +0530 Subject: [PATCH 05/20] reformat tests --- .../ExpandedControlsActivityTest.java | 11 ++------ .../activity/IntroductionActivityTest.java | 18 +++++-------- .../activity/NativeVideoActivityTest.java | 19 +++++-------- .../activity/NavigationActivityTest.java | 27 +++++++------------ .../activity/OfflineFilesActivityTest.java | 21 ++++++--------- .../activity/RecentFilesActivityTest.java | 20 +++++--------- .../activity/ServerAppActivityTest.java | 12 +++------ .../activity/ServerFileAudioActivityTest.java | 25 +++++++---------- .../activity/ServerFileImageActivityTest.java | 10 ++----- .../activity/ServerFileVideoActivityTest.java | 21 ++++++--------- .../activity/ServerFilesActivityTest.java | 17 +++++------- .../activity/SettingsActivityTest.java | 11 ++------ 12 files changed, 70 insertions(+), 142 deletions(-) diff --git a/src/androidTest/java/org/amahi/anywhere/activity/ExpandedControlsActivityTest.java b/src/androidTest/java/org/amahi/anywhere/activity/ExpandedControlsActivityTest.java index 7b55e8e16..2c437af54 100644 --- a/src/androidTest/java/org/amahi/anywhere/activity/ExpandedControlsActivityTest.java +++ b/src/androidTest/java/org/amahi/anywhere/activity/ExpandedControlsActivityTest.java @@ -14,14 +14,7 @@ import org.junit.runners.MethodSorters; import static androidx.test.espresso.Espresso.onView; -import static androidx.test.espresso.action.ViewActions.click; -import static androidx.test.espresso.assertion.ViewAssertions.doesNotExist; -import static androidx.test.espresso.assertion.ViewAssertions.matches; -import static androidx.test.espresso.matcher.ViewMatchers.isDisplayed; import static androidx.test.espresso.matcher.ViewMatchers.withId; -import static androidx.test.espresso.matcher.ViewMatchers.withText; -import static org.hamcrest.Matchers.not; -import static org.junit.Assert.*; @RunWith(AndroidJUnit4.class) @LargeTest @@ -39,12 +32,12 @@ public void setUp() throws Exception { } @Test - public void test1(){ + public void test1() { onView(withId(R.menu.action_bar_expanded_controller)); } @Test - public void test2(){ + public void test2() { onView(withId(R.id.media_route_menu_item)); } diff --git a/src/androidTest/java/org/amahi/anywhere/activity/IntroductionActivityTest.java b/src/androidTest/java/org/amahi/anywhere/activity/IntroductionActivityTest.java index 7cea32e74..719dbd08e 100644 --- a/src/androidTest/java/org/amahi/anywhere/activity/IntroductionActivityTest.java +++ b/src/androidTest/java/org/amahi/anywhere/activity/IntroductionActivityTest.java @@ -1,12 +1,10 @@ package org.amahi.anywhere.activity; import androidx.test.filters.LargeTest; -import androidx.test.internal.runner.junit4.AndroidJUnit4ClassRunner; import androidx.test.rule.ActivityTestRule; import androidx.test.runner.AndroidJUnit4; import org.amahi.anywhere.R; -import org.amahi.anywhere.util.Android; import org.junit.After; import org.junit.Before; import org.junit.FixMethodOrder; @@ -16,13 +14,9 @@ import org.junit.runners.MethodSorters; 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.isDisplayed; -import static androidx.test.espresso.matcher.ViewMatchers.withId; - import static androidx.test.espresso.matcher.ViewMatchers.withText; -import static org.junit.Assert.*; @RunWith(AndroidJUnit4.class) @LargeTest @@ -40,37 +34,37 @@ public void setUp() throws Exception { } @Test - public void test1(){ + public void test1() { onView(withText(R.string.intro_phone_1)).check(matches(isDisplayed())); onView(withText(R.string.intro_desc_phone_1)).check(matches(isDisplayed())); } @Test - public void test2(){ + public void test2() { onView(withText(R.string.intro_title_2)); onView(withText(R.string.intro_desc_2)); } @Test - public void test3(){ + public void test3() { onView(withText(R.string.intro_title_3)); onView(withText(R.string.intro_desc_phone_3)); } @Test - public void test4(){ + public void test4() { onView(withText(R.string.intro_title_4)); onView(withText(R.string.intro_desc_phone_4)); } @Test - public void test5(){ + public void test5() { onView(withText(R.string.intro_title_5)); onView(withText(R.string.intro_desc_phone_5)); } @Test - public void test6(){ + public void test6() { onView(withText(R.string.intro_title_6)); onView(withText(R.string.intro_desc_6)); } diff --git a/src/androidTest/java/org/amahi/anywhere/activity/NativeVideoActivityTest.java b/src/androidTest/java/org/amahi/anywhere/activity/NativeVideoActivityTest.java index 58bafb1d3..221f30778 100644 --- a/src/androidTest/java/org/amahi/anywhere/activity/NativeVideoActivityTest.java +++ b/src/androidTest/java/org/amahi/anywhere/activity/NativeVideoActivityTest.java @@ -1,12 +1,10 @@ package org.amahi.anywhere.activity; import androidx.test.filters.LargeTest; -import androidx.test.internal.runner.junit4.AndroidJUnit4ClassRunner; import androidx.test.rule.ActivityTestRule; import androidx.test.runner.AndroidJUnit4; import org.amahi.anywhere.R; -import org.amahi.anywhere.util.Android; import org.junit.After; import org.junit.Before; import org.junit.FixMethodOrder; @@ -16,14 +14,9 @@ import org.junit.runners.MethodSorters; import static androidx.test.espresso.Espresso.onView; -import static androidx.test.espresso.action.ViewActions.click; -import static androidx.test.espresso.assertion.ViewAssertions.doesNotExist; import static androidx.test.espresso.assertion.ViewAssertions.matches; import static androidx.test.espresso.matcher.ViewMatchers.isDisplayed; -import static androidx.test.espresso.matcher.ViewMatchers.withId; - import static androidx.test.espresso.matcher.ViewMatchers.withText; -import static org.junit.Assert.*; @RunWith(AndroidJUnit4.class) @LargeTest @@ -41,37 +34,37 @@ public void setUp() throws Exception { } @Test - public void test1(){ + public void test1() { onView(withText(R.string.intro_phone_1)).check(matches(isDisplayed())); onView(withText(R.string.intro_desc_phone_1)).check(matches(isDisplayed())); } @Test - public void test2(){ + public void test2() { onView(withText(R.string.intro_title_2)); onView(withText(R.string.intro_desc_2)); } @Test - public void test3(){ + public void test3() { onView(withText(R.string.intro_title_3)); onView(withText(R.string.intro_desc_phone_3)); } @Test - public void test4(){ + public void test4() { onView(withText(R.string.intro_title_4)); onView(withText(R.string.intro_desc_phone_4)); } @Test - public void test5(){ + public void test5() { onView(withText(R.string.intro_title_5)); onView(withText(R.string.intro_desc_phone_5)); } @Test - public void test6(){ + public void test6() { onView(withText(R.string.intro_title_6)); onView(withText(R.string.intro_desc_6)); } diff --git a/src/androidTest/java/org/amahi/anywhere/activity/NavigationActivityTest.java b/src/androidTest/java/org/amahi/anywhere/activity/NavigationActivityTest.java index cd58c0fe9..5c3914a8b 100644 --- a/src/androidTest/java/org/amahi/anywhere/activity/NavigationActivityTest.java +++ b/src/androidTest/java/org/amahi/anywhere/activity/NavigationActivityTest.java @@ -1,12 +1,10 @@ package org.amahi.anywhere.activity; import androidx.test.filters.LargeTest; -import androidx.test.internal.runner.junit4.AndroidJUnit4ClassRunner; import androidx.test.rule.ActivityTestRule; import androidx.test.runner.AndroidJUnit4; import org.amahi.anywhere.R; -import org.amahi.anywhere.util.Android; import org.junit.After; import org.junit.Before; import org.junit.FixMethodOrder; @@ -16,13 +14,8 @@ import org.junit.runners.MethodSorters; 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.isDisplayed; import static androidx.test.espresso.matcher.ViewMatchers.withId; - import static androidx.test.espresso.matcher.ViewMatchers.withText; -import static org.junit.Assert.*; @RunWith(AndroidJUnit4.class) @LargeTest @@ -40,52 +33,52 @@ public void setUp() throws Exception { } @Test - public void test1(){ + public void test1() { onView(withId(R.id.view_stub_tv_loading)); } @Test - public void test2(){ + public void test2() { onView(withId(R.id.tv_loading)); } @Test - public void test3(){ + public void test3() { onView(withId(R.id.container_content)); } @Test - public void test4(){ + public void test4() { onView(withId(R.id.container_navigation)); } @Test - public void test5(){ + public void test5() { onView(withId(R.id.toolbar)); } @Test - public void test6(){ + public void test6() { onView(withText(R.string.title_shares)); } @Test - public void test7(){ + public void test7() { onView(withText(R.string.menu_navigation_open)); } @Test - public void test8(){ + public void test8() { onView(withId(R.id.drawer_content)); } @Test - public void test9(){ + public void test9() { onView(withText(R.string.application_name)); } @Test - public void test10(){ + public void test10() { onView(withText(R.string.title_apps)); } diff --git a/src/androidTest/java/org/amahi/anywhere/activity/OfflineFilesActivityTest.java b/src/androidTest/java/org/amahi/anywhere/activity/OfflineFilesActivityTest.java index 59d8c2897..866cc3cb8 100644 --- a/src/androidTest/java/org/amahi/anywhere/activity/OfflineFilesActivityTest.java +++ b/src/androidTest/java/org/amahi/anywhere/activity/OfflineFilesActivityTest.java @@ -1,12 +1,10 @@ package org.amahi.anywhere.activity; import androidx.test.filters.LargeTest; -import androidx.test.internal.runner.junit4.AndroidJUnit4ClassRunner; import androidx.test.rule.ActivityTestRule; import androidx.test.runner.AndroidJUnit4; import org.amahi.anywhere.R; -import org.amahi.anywhere.util.Android; import org.junit.After; import org.junit.Before; import org.junit.FixMethodOrder; @@ -16,13 +14,10 @@ import org.junit.runners.MethodSorters; 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.isDisplayed; import static androidx.test.espresso.matcher.ViewMatchers.withId; - import static androidx.test.espresso.matcher.ViewMatchers.withText; -import static org.junit.Assert.*; @RunWith(AndroidJUnit4.class) @LargeTest @@ -40,42 +35,42 @@ public void setUp() throws Exception { } @Test - public void test1(){ + public void test1() { onView(withText(R.string.title_offline_files)).check(matches(isDisplayed())); } @Test - public void test2(){ + public void test2() { onView(withId(R.id.container_files)).check(matches(isDisplayed())); } @Test - public void test3(){ + public void test3() { onView(withText(R.string.message_progress_file_downloading)); } @Test - public void test4(){ + public void test4() { onView(withText(R.string.message_file_download_complete)); } @Test - public void test5(){ + public void test5() { onView(withId(R.id.parent_view)); } @Test - public void test6(){ + public void test6() { onView(withText(R.string.alert_delete_dialog)); } @Test - public void test7(){ + public void test7() { onView(withText(R.string.alert_delete_confirm)); } @Test - public void test8(){ + public void test8() { onView(withText(R.string.message_offline_file_deleted)); } diff --git a/src/androidTest/java/org/amahi/anywhere/activity/RecentFilesActivityTest.java b/src/androidTest/java/org/amahi/anywhere/activity/RecentFilesActivityTest.java index 5ae11bcf1..ea3099b7c 100644 --- a/src/androidTest/java/org/amahi/anywhere/activity/RecentFilesActivityTest.java +++ b/src/androidTest/java/org/amahi/anywhere/activity/RecentFilesActivityTest.java @@ -1,12 +1,10 @@ package org.amahi.anywhere.activity; import androidx.test.filters.LargeTest; -import androidx.test.internal.runner.junit4.AndroidJUnit4ClassRunner; import androidx.test.rule.ActivityTestRule; import androidx.test.runner.AndroidJUnit4; import org.amahi.anywhere.R; -import org.amahi.anywhere.util.Android; import org.junit.After; import org.junit.Before; import org.junit.FixMethodOrder; @@ -16,16 +14,12 @@ import org.junit.runners.MethodSorters; import static androidx.test.espresso.Espresso.onView; -import static androidx.test.espresso.action.ViewActions.click; import static androidx.test.espresso.assertion.ViewAssertions.doesNotExist; import static androidx.test.espresso.assertion.ViewAssertions.matches; import static androidx.test.espresso.matcher.ViewMatchers.isDisplayed; -import static androidx.test.espresso.matcher.ViewMatchers.isNotChecked; import static androidx.test.espresso.matcher.ViewMatchers.withId; - import static androidx.test.espresso.matcher.ViewMatchers.withText; import static org.hamcrest.Matchers.not; -import static org.junit.Assert.*; @RunWith(AndroidJUnit4.class) @LargeTest @@ -43,37 +37,37 @@ public void setUp() throws Exception { } @Test - public void test1(){ + public void test1() { onView(withText(R.string.title_recent_files)).check(matches(isDisplayed())); } @Test - public void test2(){ + public void test2() { onView(withId(R.id.recent_list)).check(matches(not(isDisplayed()))); } @Test - public void test3(){ + public void test3() { onView(withId(android.R.id.empty)).check(matches(isDisplayed())); } @Test - public void test4(){ + public void test4() { onView(withId(R.id.layout_refresh)).check(matches(isDisplayed())); } @Test - public void test5(){ + public void test5() { onView(withText(R.string.message_delete_file_error)).check(doesNotExist()); } @Test - public void test6(){ + public void test6() { onView(withText(R.string.message_offline_file_deleted)).check(doesNotExist()); } @Test - public void test7(){ + public void test7() { onView(withId(R.id.media_route_menu_item)).check(doesNotExist()); } diff --git a/src/androidTest/java/org/amahi/anywhere/activity/ServerAppActivityTest.java b/src/androidTest/java/org/amahi/anywhere/activity/ServerAppActivityTest.java index 42bb0413c..81ca804b9 100644 --- a/src/androidTest/java/org/amahi/anywhere/activity/ServerAppActivityTest.java +++ b/src/androidTest/java/org/amahi/anywhere/activity/ServerAppActivityTest.java @@ -1,12 +1,10 @@ package org.amahi.anywhere.activity; import androidx.test.filters.LargeTest; -import androidx.test.internal.runner.junit4.AndroidJUnit4ClassRunner; import androidx.test.rule.ActivityTestRule; import androidx.test.runner.AndroidJUnit4; import org.amahi.anywhere.R; -import org.amahi.anywhere.util.Android; import org.junit.After; import org.junit.Before; import org.junit.FixMethodOrder; @@ -16,14 +14,10 @@ import org.junit.runners.MethodSorters; import static androidx.test.espresso.Espresso.onView; -import static androidx.test.espresso.action.ViewActions.click; -import static androidx.test.espresso.assertion.ViewAssertions.doesNotExist; import static androidx.test.espresso.assertion.ViewAssertions.matches; import static androidx.test.espresso.matcher.ViewMatchers.isDisplayed; import static androidx.test.espresso.matcher.ViewMatchers.withId; - import static androidx.test.espresso.matcher.ViewMatchers.withText; -import static org.junit.Assert.*; @RunWith(AndroidJUnit4.class) @LargeTest @@ -41,17 +35,17 @@ public void setUp() throws Exception { } @Test - public void test1(){ + public void test1() { onView(withText(R.string.title_offline_files)).check(matches(isDisplayed())); } @Test - public void test2(){ + public void test2() { onView(withId(R.id.container_files)).check(matches(isDisplayed())); } @Test - public void test3(){ + public void test3() { onView(withText(R.string.message_progress_file_downloading)); } diff --git a/src/androidTest/java/org/amahi/anywhere/activity/ServerFileAudioActivityTest.java b/src/androidTest/java/org/amahi/anywhere/activity/ServerFileAudioActivityTest.java index a41fc7108..4fba60217 100644 --- a/src/androidTest/java/org/amahi/anywhere/activity/ServerFileAudioActivityTest.java +++ b/src/androidTest/java/org/amahi/anywhere/activity/ServerFileAudioActivityTest.java @@ -1,12 +1,10 @@ package org.amahi.anywhere.activity; import androidx.test.filters.LargeTest; -import androidx.test.internal.runner.junit4.AndroidJUnit4ClassRunner; import androidx.test.rule.ActivityTestRule; import androidx.test.runner.AndroidJUnit4; import org.amahi.anywhere.R; -import org.amahi.anywhere.util.Android; import org.junit.After; import org.junit.Before; import org.junit.FixMethodOrder; @@ -16,15 +14,12 @@ import org.junit.runners.MethodSorters; import static androidx.test.espresso.Espresso.onView; -import static androidx.test.espresso.action.ViewActions.click; import static androidx.test.espresso.assertion.ViewAssertions.doesNotExist; import static androidx.test.espresso.assertion.ViewAssertions.matches; import static androidx.test.espresso.matcher.ViewMatchers.isDisplayed; import static androidx.test.espresso.matcher.ViewMatchers.withId; - import static androidx.test.espresso.matcher.ViewMatchers.withText; import static org.hamcrest.Matchers.not; -import static org.junit.Assert.*; @RunWith(AndroidJUnit4.class) @LargeTest @@ -42,52 +37,52 @@ public void setUp() throws Exception { } @Test - public void test1(){ + public void test1() { onView(withText(R.string.title_recent_files)).check(matches(isDisplayed())); } @Test - public void test2(){ + public void test2() { onView(withId(R.id.recent_list)).check(matches(not(isDisplayed()))); } @Test - public void test3(){ + public void test3() { onView(withId(android.R.id.empty)).check(matches(isDisplayed())); } @Test - public void test4(){ + public void test4() { onView(withId(R.id.layout_refresh)).check(matches(isDisplayed())); } @Test - public void test5(){ + public void test5() { onView(withText(R.string.message_delete_file_error)).check(doesNotExist()); } @Test - public void test6(){ + public void test6() { onView(withText(R.string.message_offline_file_deleted)).check(doesNotExist()); } @Test - public void test7(){ + public void test7() { onView(withId(R.id.media_route_menu_item)).check(doesNotExist()); } @Test - public void test8(){ + public void test8() { onView(withId(R.id.media_route_menu_item)); } @Test - public void test9(){ + public void test9() { onView(withId(R.id.menu_audio_list)); } @Test - public void test10(){ + public void test10() { onView(withId(R.id.audio_list_container)); } diff --git a/src/androidTest/java/org/amahi/anywhere/activity/ServerFileImageActivityTest.java b/src/androidTest/java/org/amahi/anywhere/activity/ServerFileImageActivityTest.java index 0c44f6264..2f0b5b75c 100644 --- a/src/androidTest/java/org/amahi/anywhere/activity/ServerFileImageActivityTest.java +++ b/src/androidTest/java/org/amahi/anywhere/activity/ServerFileImageActivityTest.java @@ -1,12 +1,10 @@ package org.amahi.anywhere.activity; import androidx.test.filters.LargeTest; -import androidx.test.internal.runner.junit4.AndroidJUnit4ClassRunner; import androidx.test.rule.ActivityTestRule; import androidx.test.runner.AndroidJUnit4; import org.amahi.anywhere.R; -import org.amahi.anywhere.util.Android; import org.junit.After; import org.junit.Before; import org.junit.FixMethodOrder; @@ -16,15 +14,11 @@ import org.junit.runners.MethodSorters; import static androidx.test.espresso.Espresso.onView; -import static androidx.test.espresso.action.ViewActions.click; -import static androidx.test.espresso.assertion.ViewAssertions.doesNotExist; import static androidx.test.espresso.assertion.ViewAssertions.matches; import static androidx.test.espresso.matcher.ViewMatchers.isDisplayed; import static androidx.test.espresso.matcher.ViewMatchers.withId; - import static androidx.test.espresso.matcher.ViewMatchers.withText; import static org.hamcrest.Matchers.not; -import static org.junit.Assert.*; @RunWith(AndroidJUnit4.class) @LargeTest @@ -42,12 +36,12 @@ public void setUp() throws Exception { } @Test - public void test1(){ + public void test1() { onView(withText(R.string.title_recent_files)).check(matches(isDisplayed())); } @Test - public void test2(){ + public void test2() { onView(withId(R.id.recent_list)).check(matches(not(isDisplayed()))); } diff --git a/src/androidTest/java/org/amahi/anywhere/activity/ServerFileVideoActivityTest.java b/src/androidTest/java/org/amahi/anywhere/activity/ServerFileVideoActivityTest.java index e9fea6f35..e9ba2d1d8 100644 --- a/src/androidTest/java/org/amahi/anywhere/activity/ServerFileVideoActivityTest.java +++ b/src/androidTest/java/org/amahi/anywhere/activity/ServerFileVideoActivityTest.java @@ -1,12 +1,10 @@ package org.amahi.anywhere.activity; import androidx.test.filters.LargeTest; -import androidx.test.internal.runner.junit4.AndroidJUnit4ClassRunner; import androidx.test.rule.ActivityTestRule; import androidx.test.runner.AndroidJUnit4; import org.amahi.anywhere.R; -import org.amahi.anywhere.util.Android; import org.junit.After; import org.junit.Before; import org.junit.FixMethodOrder; @@ -16,15 +14,12 @@ import org.junit.runners.MethodSorters; import static androidx.test.espresso.Espresso.onView; -import static androidx.test.espresso.action.ViewActions.click; import static androidx.test.espresso.assertion.ViewAssertions.doesNotExist; import static androidx.test.espresso.assertion.ViewAssertions.matches; import static androidx.test.espresso.matcher.ViewMatchers.isDisplayed; import static androidx.test.espresso.matcher.ViewMatchers.withId; - import static androidx.test.espresso.matcher.ViewMatchers.withText; import static org.hamcrest.Matchers.not; -import static org.junit.Assert.*; @RunWith(AndroidJUnit4.class) @LargeTest @@ -42,42 +37,42 @@ public void setUp() throws Exception { } @Test - public void test1(){ + public void test1() { onView(withText(R.string.title_recent_files)).check(matches(isDisplayed())); } @Test - public void test2(){ + public void test2() { onView(withId(R.id.recent_list)).check(matches(not(isDisplayed()))); } @Test - public void test3(){ + public void test3() { onView(withId(android.R.id.empty)).check(matches(isDisplayed())); } @Test - public void test4(){ + public void test4() { onView(withId(R.id.layout_refresh)).check(matches(isDisplayed())); } @Test - public void test5(){ + public void test5() { onView(withText(R.string.message_delete_file_error)).check(doesNotExist()); } @Test - public void test6(){ + public void test6() { onView(withText(R.string.message_offline_file_deleted)).check(doesNotExist()); } @Test - public void test7(){ + public void test7() { onView(withId(R.id.media_route_menu_item)).check(doesNotExist()); } @Test - public void test8(){ + public void test8() { onView(withText(R.string.title_recent_files)).check(matches(isDisplayed())); } diff --git a/src/androidTest/java/org/amahi/anywhere/activity/ServerFilesActivityTest.java b/src/androidTest/java/org/amahi/anywhere/activity/ServerFilesActivityTest.java index 0820fe031..c7c225c7e 100644 --- a/src/androidTest/java/org/amahi/anywhere/activity/ServerFilesActivityTest.java +++ b/src/androidTest/java/org/amahi/anywhere/activity/ServerFilesActivityTest.java @@ -1,12 +1,10 @@ package org.amahi.anywhere.activity; import androidx.test.filters.LargeTest; -import androidx.test.internal.runner.junit4.AndroidJUnit4ClassRunner; import androidx.test.rule.ActivityTestRule; import androidx.test.runner.AndroidJUnit4; import org.amahi.anywhere.R; -import org.amahi.anywhere.util.Android; import org.junit.After; import org.junit.Before; import org.junit.FixMethodOrder; @@ -16,13 +14,10 @@ import org.junit.runners.MethodSorters; 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.isDisplayed; import static androidx.test.espresso.matcher.ViewMatchers.withId; - import static androidx.test.espresso.matcher.ViewMatchers.withText; -import static org.junit.Assert.*; @RunWith(AndroidJUnit4.class) @LargeTest @@ -40,32 +35,32 @@ public void setUp() throws Exception { } @Test - public void test1(){ + public void test1() { onView(withText(R.string.title_offline_files)).check(matches(isDisplayed())); } @Test - public void test2(){ + public void test2() { onView(withId(R.id.container_files)).check(matches(isDisplayed())); } @Test - public void test3(){ + public void test3() { onView(withText(R.string.message_progress_file_downloading)); } @Test - public void test4(){ + public void test4() { onView(withText(R.string.title_offline_files)).check(matches(isDisplayed())); } @Test - public void test5(){ + public void test5() { onView(withId(R.id.container_files)).check(matches(isDisplayed())); } @Test - public void test6(){ + public void test6() { onView(withText(R.string.message_progress_file_downloading)); } diff --git a/src/androidTest/java/org/amahi/anywhere/activity/SettingsActivityTest.java b/src/androidTest/java/org/amahi/anywhere/activity/SettingsActivityTest.java index 6b77d5069..fecbbbcdc 100644 --- a/src/androidTest/java/org/amahi/anywhere/activity/SettingsActivityTest.java +++ b/src/androidTest/java/org/amahi/anywhere/activity/SettingsActivityTest.java @@ -1,12 +1,10 @@ package org.amahi.anywhere.activity; import androidx.test.filters.LargeTest; -import androidx.test.internal.runner.junit4.AndroidJUnit4ClassRunner; import androidx.test.rule.ActivityTestRule; import androidx.test.runner.AndroidJUnit4; import org.amahi.anywhere.R; -import org.amahi.anywhere.util.Android; import org.junit.After; import org.junit.Before; import org.junit.FixMethodOrder; @@ -16,15 +14,10 @@ import org.junit.runners.MethodSorters; 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.isDisplayed; import static androidx.test.espresso.matcher.ViewMatchers.withId; -import static androidx.test.espresso.matcher.ViewMatchers.withText; -import static org.hamcrest.Matchers.not; -import static org.junit.Assert.*; - @RunWith(AndroidJUnit4.class) @LargeTest @FixMethodOrder(MethodSorters.DEFAULT) @@ -41,12 +34,12 @@ public void setUp() throws Exception { } @Test - public void test1(){ + public void test1() { onView(withId(R.id.settings_container)).check(matches(isDisplayed())); } @Test - public void test2(){ + public void test2() { onView(withId(android.R.id.home)); } From 5c2deb93073dc31bca1df0e28238775c3cf27073 Mon Sep 17 00:00:00 2001 From: Chirag Jain Date: Sun, 26 Jul 2020 07:59:23 +0530 Subject: [PATCH 06/20] reformat tests --- .../anywhere/activity/ExpandedControlsActivityTest.java | 5 ++--- .../amahi/anywhere/activity/IntroductionActivityTest.java | 5 ++--- .../org/amahi/anywhere/activity/NativeVideoActivityTest.java | 5 ++--- .../org/amahi/anywhere/activity/NavigationActivityTest.java | 5 ++--- .../amahi/anywhere/activity/OfflineFilesActivityTest.java | 5 ++--- .../org/amahi/anywhere/activity/RecentFilesActivityTest.java | 5 ++--- .../org/amahi/anywhere/activity/ServerAppActivityTest.java | 5 ++--- .../amahi/anywhere/activity/ServerFileAudioActivityTest.java | 5 ++--- .../amahi/anywhere/activity/ServerFileImageActivityTest.java | 5 ++--- .../amahi/anywhere/activity/ServerFileVideoActivityTest.java | 5 ++--- .../org/amahi/anywhere/activity/ServerFilesActivityTest.java | 5 ++--- .../org/amahi/anywhere/activity/SettingsActivityTest.java | 5 ++--- 12 files changed, 24 insertions(+), 36 deletions(-) diff --git a/src/androidTest/java/org/amahi/anywhere/activity/ExpandedControlsActivityTest.java b/src/androidTest/java/org/amahi/anywhere/activity/ExpandedControlsActivityTest.java index 2c437af54..baa867195 100644 --- a/src/androidTest/java/org/amahi/anywhere/activity/ExpandedControlsActivityTest.java +++ b/src/androidTest/java/org/amahi/anywhere/activity/ExpandedControlsActivityTest.java @@ -23,9 +23,8 @@ public class ExpandedControlsActivityTest { @Rule - public ActivityTestRule mActivityRule = new ActivityTestRule<>( - ExpandedControlsActivity.class - ); + public ActivityTestRule mActivityRule + = new ActivityTestRule<>(ExpandedControlsActivity.class); @Before public void setUp() throws Exception { diff --git a/src/androidTest/java/org/amahi/anywhere/activity/IntroductionActivityTest.java b/src/androidTest/java/org/amahi/anywhere/activity/IntroductionActivityTest.java index 719dbd08e..bda7cbcf7 100644 --- a/src/androidTest/java/org/amahi/anywhere/activity/IntroductionActivityTest.java +++ b/src/androidTest/java/org/amahi/anywhere/activity/IntroductionActivityTest.java @@ -25,9 +25,8 @@ public class IntroductionActivityTest { @Rule - public ActivityTestRule mActivityRule = new ActivityTestRule<>( - IntroductionActivity.class - ); + public ActivityTestRule mActivityRule + = new ActivityTestRule<>(IntroductionActivity.class); @Before public void setUp() throws Exception { diff --git a/src/androidTest/java/org/amahi/anywhere/activity/NativeVideoActivityTest.java b/src/androidTest/java/org/amahi/anywhere/activity/NativeVideoActivityTest.java index 221f30778..a5acba208 100644 --- a/src/androidTest/java/org/amahi/anywhere/activity/NativeVideoActivityTest.java +++ b/src/androidTest/java/org/amahi/anywhere/activity/NativeVideoActivityTest.java @@ -25,9 +25,8 @@ public class NativeVideoActivityTest { @Rule - public ActivityTestRule mActivityRule = new ActivityTestRule<>( - IntroductionActivity.class - ); + public ActivityTestRule mActivityRule + = new ActivityTestRule<>(IntroductionActivity.class); @Before public void setUp() throws Exception { diff --git a/src/androidTest/java/org/amahi/anywhere/activity/NavigationActivityTest.java b/src/androidTest/java/org/amahi/anywhere/activity/NavigationActivityTest.java index 5c3914a8b..4e3565146 100644 --- a/src/androidTest/java/org/amahi/anywhere/activity/NavigationActivityTest.java +++ b/src/androidTest/java/org/amahi/anywhere/activity/NavigationActivityTest.java @@ -24,9 +24,8 @@ public class NavigationActivityTest { @Rule - public ActivityTestRule mActivityRule = new ActivityTestRule<>( - NavigationActivity.class - ); + public ActivityTestRule mActivityRule + = new ActivityTestRule<>(NavigationActivity.class); @Before public void setUp() throws Exception { diff --git a/src/androidTest/java/org/amahi/anywhere/activity/OfflineFilesActivityTest.java b/src/androidTest/java/org/amahi/anywhere/activity/OfflineFilesActivityTest.java index 866cc3cb8..ae8ee77e6 100644 --- a/src/androidTest/java/org/amahi/anywhere/activity/OfflineFilesActivityTest.java +++ b/src/androidTest/java/org/amahi/anywhere/activity/OfflineFilesActivityTest.java @@ -26,9 +26,8 @@ public class OfflineFilesActivityTest { @Rule - public ActivityTestRule mActivityRule = new ActivityTestRule<>( - OfflineFilesActivity.class - ); + public ActivityTestRule mActivityRule + = new ActivityTestRule<>(OfflineFilesActivity.class); @Before public void setUp() throws Exception { diff --git a/src/androidTest/java/org/amahi/anywhere/activity/RecentFilesActivityTest.java b/src/androidTest/java/org/amahi/anywhere/activity/RecentFilesActivityTest.java index ea3099b7c..0503a3ad5 100644 --- a/src/androidTest/java/org/amahi/anywhere/activity/RecentFilesActivityTest.java +++ b/src/androidTest/java/org/amahi/anywhere/activity/RecentFilesActivityTest.java @@ -28,9 +28,8 @@ public class RecentFilesActivityTest { @Rule - public ActivityTestRule mActivityRule = new ActivityTestRule<>( - RecentFilesActivity.class - ); + public ActivityTestRule mActivityRule + = new ActivityTestRule<>(RecentFilesActivity.class); @Before public void setUp() throws Exception { diff --git a/src/androidTest/java/org/amahi/anywhere/activity/ServerAppActivityTest.java b/src/androidTest/java/org/amahi/anywhere/activity/ServerAppActivityTest.java index 81ca804b9..1c5b46eca 100644 --- a/src/androidTest/java/org/amahi/anywhere/activity/ServerAppActivityTest.java +++ b/src/androidTest/java/org/amahi/anywhere/activity/ServerAppActivityTest.java @@ -26,9 +26,8 @@ public class ServerAppActivityTest { @Rule - public ActivityTestRule mActivityRule = new ActivityTestRule<>( - OfflineFilesActivity.class - ); + public ActivityTestRule mActivityRule + = new ActivityTestRule<>(OfflineFilesActivity.class); @Before public void setUp() throws Exception { diff --git a/src/androidTest/java/org/amahi/anywhere/activity/ServerFileAudioActivityTest.java b/src/androidTest/java/org/amahi/anywhere/activity/ServerFileAudioActivityTest.java index 4fba60217..1b14f02cc 100644 --- a/src/androidTest/java/org/amahi/anywhere/activity/ServerFileAudioActivityTest.java +++ b/src/androidTest/java/org/amahi/anywhere/activity/ServerFileAudioActivityTest.java @@ -28,9 +28,8 @@ public class ServerFileAudioActivityTest { @Rule - public ActivityTestRule mActivityRule = new ActivityTestRule<>( - RecentFilesActivity.class - ); + public ActivityTestRule mActivityRule + = new ActivityTestRule<>(RecentFilesActivity.class); @Before public void setUp() throws Exception { diff --git a/src/androidTest/java/org/amahi/anywhere/activity/ServerFileImageActivityTest.java b/src/androidTest/java/org/amahi/anywhere/activity/ServerFileImageActivityTest.java index 2f0b5b75c..8034bd826 100644 --- a/src/androidTest/java/org/amahi/anywhere/activity/ServerFileImageActivityTest.java +++ b/src/androidTest/java/org/amahi/anywhere/activity/ServerFileImageActivityTest.java @@ -27,9 +27,8 @@ public class ServerFileImageActivityTest { @Rule - public ActivityTestRule mActivityRule = new ActivityTestRule<>( - RecentFilesActivity.class - ); + public ActivityTestRule mActivityRule + = new ActivityTestRule<>(RecentFilesActivity.class); @Before public void setUp() throws Exception { diff --git a/src/androidTest/java/org/amahi/anywhere/activity/ServerFileVideoActivityTest.java b/src/androidTest/java/org/amahi/anywhere/activity/ServerFileVideoActivityTest.java index e9ba2d1d8..aa8825c48 100644 --- a/src/androidTest/java/org/amahi/anywhere/activity/ServerFileVideoActivityTest.java +++ b/src/androidTest/java/org/amahi/anywhere/activity/ServerFileVideoActivityTest.java @@ -28,9 +28,8 @@ public class ServerFileVideoActivityTest { @Rule - public ActivityTestRule mActivityRule = new ActivityTestRule<>( - RecentFilesActivity.class - ); + public ActivityTestRule mActivityRule + = new ActivityTestRule<>(RecentFilesActivity.class); @Before public void setUp() throws Exception { diff --git a/src/androidTest/java/org/amahi/anywhere/activity/ServerFilesActivityTest.java b/src/androidTest/java/org/amahi/anywhere/activity/ServerFilesActivityTest.java index c7c225c7e..3c1cad476 100644 --- a/src/androidTest/java/org/amahi/anywhere/activity/ServerFilesActivityTest.java +++ b/src/androidTest/java/org/amahi/anywhere/activity/ServerFilesActivityTest.java @@ -26,9 +26,8 @@ public class ServerFilesActivityTest { @Rule - public ActivityTestRule mActivityRule = new ActivityTestRule<>( - OfflineFilesActivity.class - ); + public ActivityTestRule mActivityRule + = new ActivityTestRule<>(OfflineFilesActivity.class); @Before public void setUp() throws Exception { diff --git a/src/androidTest/java/org/amahi/anywhere/activity/SettingsActivityTest.java b/src/androidTest/java/org/amahi/anywhere/activity/SettingsActivityTest.java index fecbbbcdc..e702e1748 100644 --- a/src/androidTest/java/org/amahi/anywhere/activity/SettingsActivityTest.java +++ b/src/androidTest/java/org/amahi/anywhere/activity/SettingsActivityTest.java @@ -25,9 +25,8 @@ public class SettingsActivityTest { @Rule - public ActivityTestRule mActivityRule = new ActivityTestRule<>( - SettingsActivity.class - ); + public ActivityTestRule mActivityRule + = new ActivityTestRule<>(SettingsActivity.class); @Before public void setUp() throws Exception { From ab3d87f519b02fe798df3eab14888e34cff77150 Mon Sep 17 00:00:00 2001 From: Chirag Jain Date: Sun, 26 Jul 2020 08:30:55 +0530 Subject: [PATCH 07/20] update espresso dependencies --- build.gradle | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/build.gradle b/build.gradle index 16055e473..0d317272e 100644 --- a/build.gradle +++ b/build.gradle @@ -150,9 +150,20 @@ dependencies { implementation 'com.jakewharton.timber:timber:4.5.1' // Espresso Testing Framework Implementations - androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.0' - androidTestImplementation 'androidx.test.espresso:espresso-web:3.1.0' - androidTestImplementation 'androidx.test.espresso:espresso-intents:3.1.0' + def ESPRESSO_LIBRARY_VERSION = "3.2.0" +// androidTestImplementation "androidx.test.espresso:espresso-core:${ESPRESSO_LIBRARY_VERSION}" +// androidTestImplementation "androidx.test.espresso:espresso-web:${ESPRESSO_LIBRARY_VERSION}" +// androidTestImplementation "androidx.test.espresso:espresso-intents:${ESPRESSO_LIBRARY_VERSION}" + + androidTestImplementation ("androidx.test.espresso:espresso-core:${ESPRESSO_LIBRARY_VERSION}") { + exclude group: "javax.inject" + } + androidTestImplementation ("androidx.test.espresso:espresso-web:${ESPRESSO_LIBRARY_VERSION}") { + exclude group: "javax.inject" + } + androidTestImplementation ("androidx.test.espresso:espresso-intents:${ESPRESSO_LIBRARY_VERSION}") { + exclude group: "javax.inject" + } // Otto and Retrofit implementation 'com.squareup:otto:1.3.8' From cd75cc59f782e8c1386a663371db8bd031b39921 Mon Sep 17 00:00:00 2001 From: Chirag Jain Date: Sun, 26 Jul 2020 08:31:14 +0530 Subject: [PATCH 08/20] update espresso dependencies --- build.gradle | 4 ---- 1 file changed, 4 deletions(-) diff --git a/build.gradle b/build.gradle index 0d317272e..e29956410 100644 --- a/build.gradle +++ b/build.gradle @@ -151,10 +151,6 @@ dependencies { // Espresso Testing Framework Implementations def ESPRESSO_LIBRARY_VERSION = "3.2.0" -// androidTestImplementation "androidx.test.espresso:espresso-core:${ESPRESSO_LIBRARY_VERSION}" -// androidTestImplementation "androidx.test.espresso:espresso-web:${ESPRESSO_LIBRARY_VERSION}" -// androidTestImplementation "androidx.test.espresso:espresso-intents:${ESPRESSO_LIBRARY_VERSION}" - androidTestImplementation ("androidx.test.espresso:espresso-core:${ESPRESSO_LIBRARY_VERSION}") { exclude group: "javax.inject" } From 83e7f2b8d18c2c70ebf916ff93ad63c36d1d127d Mon Sep 17 00:00:00 2001 From: Chirag Jain Date: Sun, 26 Jul 2020 08:49:46 +0530 Subject: [PATCH 09/20] update travis --- .travis.yml | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 8c9a7fd7d..c12500114 100644 --- a/.travis.yml +++ b/.travis.yml @@ -8,6 +8,10 @@ before_install: jdk: - oraclejdk8 +env: + matrix: + - ANDROID_TARGET=android-19 ANDROID_ABI=armeabi-v7a + android: components: - tools @@ -31,7 +35,7 @@ before_script: - adb shell settings put global transition_animation_scale 0 & - adb shell settings put global animator_duration_scale 0 & - adb shell input keyevent 82 & - + script: - ./gradlew connectedDebugAndroidTest From 9db6ba35514de41b21b7806bd9fb55ef194f38c2 Mon Sep 17 00:00:00 2001 From: Chirag Jain Date: Sun, 26 Jul 2020 09:57:46 +0530 Subject: [PATCH 10/20] update travis --- .travis.yml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/.travis.yml b/.travis.yml index c12500114..b0daa6d1c 100644 --- a/.travis.yml +++ b/.travis.yml @@ -3,14 +3,14 @@ language: android before_install: - yes | sdkmanager "platforms;android-29" - yes | sdkmanager "platforms;android-28" - - yes | sdkmanager "platforms;android-19" +# - yes | sdkmanager "platforms;android-19" jdk: - oraclejdk8 env: matrix: - - ANDROID_TARGET=android-19 ANDROID_ABI=armeabi-v7a + - ANDROID_TARGET=android-28 ANDROID_ABI=armeabi-v7a android: components: @@ -19,16 +19,16 @@ android: - platform-tools - build-tools-28.0.3 - android-28 - - android-19 +# - android-19 - extra-android-support - extra-android-m2repository - extra-google-m2repository - - sys-img-armeabi-v7a-android-19 + - sys-img-armeabi-v7a-android-28 licenses: - .+ before_script: - - echo no | android create avd --force -n test -t android-19 --abi armeabi-v7a + - echo no | android create avd --force -n test -t android-28 --abi armeabi-v7a - emulator -avd test -no-audio -no-window & - android-wait-for-emulator - adb shell settings put global window_animation_scale 0 & From 0609e57f11cf6cf6c75a19cf78b8cbef9efcb522 Mon Sep 17 00:00:00 2001 From: Chirag Jain Date: Sun, 26 Jul 2020 10:06:21 +0530 Subject: [PATCH 11/20] update travis --- .travis.yml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/.travis.yml b/.travis.yml index b0daa6d1c..7a55dbc3b 100644 --- a/.travis.yml +++ b/.travis.yml @@ -3,14 +3,14 @@ language: android before_install: - yes | sdkmanager "platforms;android-29" - yes | sdkmanager "platforms;android-28" -# - yes | sdkmanager "platforms;android-19" + - yes | sdkmanager "platforms;android-22" jdk: - oraclejdk8 env: matrix: - - ANDROID_TARGET=android-28 ANDROID_ABI=armeabi-v7a + - ANDROID_TARGET=android-22 ANDROID_ABI=armeabi-v7a android: components: @@ -19,16 +19,16 @@ android: - platform-tools - build-tools-28.0.3 - android-28 -# - android-19 + - android-22 - extra-android-support - extra-android-m2repository - extra-google-m2repository - - sys-img-armeabi-v7a-android-28 + - sys-img-armeabi-v7a-android-22 licenses: - .+ before_script: - - echo no | android create avd --force -n test -t android-28 --abi armeabi-v7a + - echo no | android create avd --force -n test -t $ANDROID_TARGET --abi $ANDROID_ABI - emulator -avd test -no-audio -no-window & - android-wait-for-emulator - adb shell settings put global window_animation_scale 0 & From 22b3e00faa638a6a8f79e6471365e606356bf6ec Mon Sep 17 00:00:00 2001 From: Chirag Jain Date: Sun, 26 Jul 2020 10:25:59 +0530 Subject: [PATCH 12/20] update travis --- .travis.yml | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/.travis.yml b/.travis.yml index 7a55dbc3b..03e78f2e2 100644 --- a/.travis.yml +++ b/.travis.yml @@ -9,21 +9,22 @@ jdk: - oraclejdk8 env: - matrix: - - ANDROID_TARGET=android-22 ANDROID_ABI=armeabi-v7a + global: + - ANDROID_TARGET=android-25 + - ANDROID_BUILD_TOOLS_VERSION=28.0.3 + - ANDROID_ABI=armeabi-v7a android: components: - tools - tools - platform-tools - - build-tools-28.0.3 - - android-28 - - android-22 + - build-tools-$ANDROID_BUILD_TOOLS_VERSION + - $ANDROID_TARGET - extra-android-support - extra-android-m2repository - extra-google-m2repository - - sys-img-armeabi-v7a-android-22 + - sys-img-armeabi-v7a-android-28 licenses: - .+ From 51754b94f494e68c8578babf9517915d11efc2f7 Mon Sep 17 00:00:00 2001 From: Chirag Jain Date: Sun, 26 Jul 2020 10:29:38 +0530 Subject: [PATCH 13/20] update travis --- .travis.yml | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/.travis.yml b/.travis.yml index 03e78f2e2..b25dfcc53 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,22 +1,20 @@ language: android -before_install: - - yes | sdkmanager "platforms;android-29" - - yes | sdkmanager "platforms;android-28" - - yes | sdkmanager "platforms;android-22" - jdk: - oraclejdk8 env: global: - - ANDROID_TARGET=android-25 + - ANDROID_TARGET=android-24 - ANDROID_BUILD_TOOLS_VERSION=28.0.3 - ANDROID_ABI=armeabi-v7a +before_install: + - yes | sdkmanager "platforms;android-29" + - yes | sdkmanager "platforms;android-24" + android: components: - - tools - tools - platform-tools - build-tools-$ANDROID_BUILD_TOOLS_VERSION @@ -38,6 +36,7 @@ before_script: - adb shell input keyevent 82 & script: + - ./gradlew assembleDebug - ./gradlew connectedDebugAndroidTest notifications: From b41f5a921d72173315b0c3f19d7d065f3195c00d Mon Sep 17 00:00:00 2001 From: Chirag Jain Date: Sun, 26 Jul 2020 10:37:14 +0530 Subject: [PATCH 14/20] update travis --- .travis.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.travis.yml b/.travis.yml index b25dfcc53..70d610a69 100644 --- a/.travis.yml +++ b/.travis.yml @@ -5,7 +5,7 @@ jdk: env: global: - - ANDROID_TARGET=android-24 + - ANDROID_TARGET=android-28 - ANDROID_BUILD_TOOLS_VERSION=28.0.3 - ANDROID_ABI=armeabi-v7a @@ -22,12 +22,12 @@ android: - extra-android-support - extra-android-m2repository - extra-google-m2repository - - sys-img-armeabi-v7a-android-28 + - sys-img-armeabi-v7a-android-22 licenses: - .+ before_script: - - echo no | android create avd --force -n test -t $ANDROID_TARGET --abi $ANDROID_ABI + - echo no | android create avd --force -n test -t android-22 --abi $ANDROID_ABI - emulator -avd test -no-audio -no-window & - android-wait-for-emulator - adb shell settings put global window_animation_scale 0 & From 158f07525d2eb885ee529506d0c4b5159b7807e9 Mon Sep 17 00:00:00 2001 From: Chirag Jain Date: Sun, 26 Jul 2020 10:42:23 +0530 Subject: [PATCH 15/20] update travis --- .travis.yml | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/.travis.yml b/.travis.yml index 70d610a69..c115cdfa7 100644 --- a/.travis.yml +++ b/.travis.yml @@ -5,13 +5,12 @@ jdk: env: global: - - ANDROID_TARGET=android-28 + - ANDROID_TARGET=android-22 - ANDROID_BUILD_TOOLS_VERSION=28.0.3 - ANDROID_ABI=armeabi-v7a before_install: - yes | sdkmanager "platforms;android-29" - - yes | sdkmanager "platforms;android-24" android: components: @@ -19,7 +18,6 @@ android: - platform-tools - build-tools-$ANDROID_BUILD_TOOLS_VERSION - $ANDROID_TARGET - - extra-android-support - extra-android-m2repository - extra-google-m2repository - sys-img-armeabi-v7a-android-22 @@ -27,7 +25,7 @@ android: - .+ before_script: - - echo no | android create avd --force -n test -t android-22 --abi $ANDROID_ABI + - echo no | android create avd --force -n test -t $ANDROID_TARGET --abi $ANDROID_ABI - emulator -avd test -no-audio -no-window & - android-wait-for-emulator - adb shell settings put global window_animation_scale 0 & From ee5ca6b956f8805b29b30fc04ac0fae6769ee959 Mon Sep 17 00:00:00 2001 From: Akash-Ramjyothi <54114888+Akash-Ramjyothi@users.noreply.github.com> Date: Mon, 27 Jul 2020 00:20:50 +0530 Subject: [PATCH 16/20] Update ExpandedControlsActivityTest.java --- .../activity/ExpandedControlsActivityTest.java | 14 -------------- 1 file changed, 14 deletions(-) diff --git a/src/androidTest/java/org/amahi/anywhere/activity/ExpandedControlsActivityTest.java b/src/androidTest/java/org/amahi/anywhere/activity/ExpandedControlsActivityTest.java index baa867195..23443bb7b 100644 --- a/src/androidTest/java/org/amahi/anywhere/activity/ExpandedControlsActivityTest.java +++ b/src/androidTest/java/org/amahi/anywhere/activity/ExpandedControlsActivityTest.java @@ -22,24 +22,10 @@ public class ExpandedControlsActivityTest { - @Rule - public ActivityTestRule mActivityRule - = new ActivityTestRule<>(ExpandedControlsActivity.class); - @Before public void setUp() throws Exception { } - @Test - public void test1() { - onView(withId(R.menu.action_bar_expanded_controller)); - } - - @Test - public void test2() { - onView(withId(R.id.media_route_menu_item)); - } - @After public void tearDown() throws Exception { } From 4cc89820e847c99e58a23ef33279082f256866de Mon Sep 17 00:00:00 2001 From: Akash-Ramjyothi <54114888+Akash-Ramjyothi@users.noreply.github.com> Date: Mon, 27 Jul 2020 01:18:34 +0530 Subject: [PATCH 17/20] Update ExpandedControlsActivityTest.java --- .../activity/ExpandedControlsActivityTest.java | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/src/androidTest/java/org/amahi/anywhere/activity/ExpandedControlsActivityTest.java b/src/androidTest/java/org/amahi/anywhere/activity/ExpandedControlsActivityTest.java index 23443bb7b..bd75d93c5 100644 --- a/src/androidTest/java/org/amahi/anywhere/activity/ExpandedControlsActivityTest.java +++ b/src/androidTest/java/org/amahi/anywhere/activity/ExpandedControlsActivityTest.java @@ -14,7 +14,14 @@ import org.junit.runners.MethodSorters; import static androidx.test.espresso.Espresso.onView; +import static androidx.test.espresso.action.ViewActions.click; +import static androidx.test.espresso.assertion.ViewAssertions.doesNotExist; +import static androidx.test.espresso.assertion.ViewAssertions.matches; +import static androidx.test.espresso.matcher.ViewMatchers.isDisplayed; import static androidx.test.espresso.matcher.ViewMatchers.withId; +import static androidx.test.espresso.matcher.ViewMatchers.withText; +import static org.hamcrest.Matchers.not; +import static org.junit.Assert.*; @RunWith(AndroidJUnit4.class) @LargeTest @@ -22,9 +29,19 @@ public class ExpandedControlsActivityTest { + @Rule + public ActivityTestRule mActivityRule = new ActivityTestRule<>( + RecentFilesActivity.class + ); + @Before public void setUp() throws Exception { } + + @Test + public void test1(){ + onView(withId(android.R.id.empty)).check(matches(isDisplayed())); + } @After public void tearDown() throws Exception { From 2f4100d9ef37536bcb782eb14e877a55ed20770f Mon Sep 17 00:00:00 2001 From: Akash-Ramjyothi <54114888+Akash-Ramjyothi@users.noreply.github.com> Date: Mon, 27 Jul 2020 01:36:56 +0530 Subject: [PATCH 18/20] Delete ExpandedControlsActivityTest.java --- .../ExpandedControlsActivityTest.java | 49 ------------------- 1 file changed, 49 deletions(-) delete mode 100644 src/androidTest/java/org/amahi/anywhere/activity/ExpandedControlsActivityTest.java diff --git a/src/androidTest/java/org/amahi/anywhere/activity/ExpandedControlsActivityTest.java b/src/androidTest/java/org/amahi/anywhere/activity/ExpandedControlsActivityTest.java deleted file mode 100644 index bd75d93c5..000000000 --- a/src/androidTest/java/org/amahi/anywhere/activity/ExpandedControlsActivityTest.java +++ /dev/null @@ -1,49 +0,0 @@ -package org.amahi.anywhere.activity; - -import androidx.test.filters.LargeTest; -import androidx.test.rule.ActivityTestRule; -import androidx.test.runner.AndroidJUnit4; - -import org.amahi.anywhere.R; -import org.junit.After; -import org.junit.Before; -import org.junit.FixMethodOrder; -import org.junit.Rule; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.junit.runners.MethodSorters; - -import static androidx.test.espresso.Espresso.onView; -import static androidx.test.espresso.action.ViewActions.click; -import static androidx.test.espresso.assertion.ViewAssertions.doesNotExist; -import static androidx.test.espresso.assertion.ViewAssertions.matches; -import static androidx.test.espresso.matcher.ViewMatchers.isDisplayed; -import static androidx.test.espresso.matcher.ViewMatchers.withId; -import static androidx.test.espresso.matcher.ViewMatchers.withText; -import static org.hamcrest.Matchers.not; -import static org.junit.Assert.*; - -@RunWith(AndroidJUnit4.class) -@LargeTest -@FixMethodOrder(MethodSorters.DEFAULT) - -public class ExpandedControlsActivityTest { - - @Rule - public ActivityTestRule mActivityRule = new ActivityTestRule<>( - RecentFilesActivity.class - ); - - @Before - public void setUp() throws Exception { - } - - @Test - public void test1(){ - onView(withId(android.R.id.empty)).check(matches(isDisplayed())); - } - - @After - public void tearDown() throws Exception { - } -} From d51f26e42d9227c7e30fd20aa05df036d9518e47 Mon Sep 17 00:00:00 2001 From: Akash-Ramjyothi <54114888+Akash-Ramjyothi@users.noreply.github.com> Date: Mon, 27 Jul 2020 02:03:16 +0530 Subject: [PATCH 19/20] Update OfflineFilesActivityTest.java --- .../amahi/anywhere/activity/OfflineFilesActivityTest.java | 5 ----- 1 file changed, 5 deletions(-) diff --git a/src/androidTest/java/org/amahi/anywhere/activity/OfflineFilesActivityTest.java b/src/androidTest/java/org/amahi/anywhere/activity/OfflineFilesActivityTest.java index ae8ee77e6..5776409c2 100644 --- a/src/androidTest/java/org/amahi/anywhere/activity/OfflineFilesActivityTest.java +++ b/src/androidTest/java/org/amahi/anywhere/activity/OfflineFilesActivityTest.java @@ -33,11 +33,6 @@ public class OfflineFilesActivityTest { public void setUp() throws Exception { } - @Test - public void test1() { - onView(withText(R.string.title_offline_files)).check(matches(isDisplayed())); - } - @Test public void test2() { onView(withId(R.id.container_files)).check(matches(isDisplayed())); From c875826e06b6853e9a73e74a81e452cc836271d1 Mon Sep 17 00:00:00 2001 From: Akash-Ramjyothi <54114888+Akash-Ramjyothi@users.noreply.github.com> Date: Mon, 27 Jul 2020 02:24:15 +0530 Subject: [PATCH 20/20] Delete OfflineFilesActivityTest.java --- .../activity/OfflineFilesActivityTest.java | 74 ------------------- 1 file changed, 74 deletions(-) delete mode 100644 src/androidTest/java/org/amahi/anywhere/activity/OfflineFilesActivityTest.java diff --git a/src/androidTest/java/org/amahi/anywhere/activity/OfflineFilesActivityTest.java b/src/androidTest/java/org/amahi/anywhere/activity/OfflineFilesActivityTest.java deleted file mode 100644 index 5776409c2..000000000 --- a/src/androidTest/java/org/amahi/anywhere/activity/OfflineFilesActivityTest.java +++ /dev/null @@ -1,74 +0,0 @@ -package org.amahi.anywhere.activity; - -import androidx.test.filters.LargeTest; -import androidx.test.rule.ActivityTestRule; -import androidx.test.runner.AndroidJUnit4; - -import org.amahi.anywhere.R; -import org.junit.After; -import org.junit.Before; -import org.junit.FixMethodOrder; -import org.junit.Rule; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.junit.runners.MethodSorters; - -import static androidx.test.espresso.Espresso.onView; -import static androidx.test.espresso.assertion.ViewAssertions.matches; -import static androidx.test.espresso.matcher.ViewMatchers.isDisplayed; -import static androidx.test.espresso.matcher.ViewMatchers.withId; -import static androidx.test.espresso.matcher.ViewMatchers.withText; - -@RunWith(AndroidJUnit4.class) -@LargeTest -@FixMethodOrder(MethodSorters.DEFAULT) - -public class OfflineFilesActivityTest { - - @Rule - public ActivityTestRule mActivityRule - = new ActivityTestRule<>(OfflineFilesActivity.class); - - @Before - public void setUp() throws Exception { - } - - @Test - public void test2() { - onView(withId(R.id.container_files)).check(matches(isDisplayed())); - } - - @Test - public void test3() { - onView(withText(R.string.message_progress_file_downloading)); - } - - @Test - public void test4() { - onView(withText(R.string.message_file_download_complete)); - } - - @Test - public void test5() { - onView(withId(R.id.parent_view)); - } - - @Test - public void test6() { - onView(withText(R.string.alert_delete_dialog)); - } - - @Test - public void test7() { - onView(withText(R.string.alert_delete_confirm)); - } - - @Test - public void test8() { - onView(withText(R.string.message_offline_file_deleted)); - } - - @After - public void tearDown() throws Exception { - } -}