From 35d11512c1ad1c2bd6ba148238d860539af8eb5f Mon Sep 17 00:00:00 2001 From: Ulysse Widmer Date: Mon, 30 Mar 2020 17:37:23 +0200 Subject: [PATCH 1/5] swipe tests that try all the horizontal swipe motions --- .../java/com/h/pixeldroid/SwipeTest.kt | 50 +++++++++---------- .../java/com/h/pixeldroid/MainActivity.kt | 2 - app/src/main/res/layout/activity_main.xml | 2 - 3 files changed, 24 insertions(+), 30 deletions(-) diff --git a/app/src/androidTest/java/com/h/pixeldroid/SwipeTest.kt b/app/src/androidTest/java/com/h/pixeldroid/SwipeTest.kt index ac6450d6..a15b2e3b 100644 --- a/app/src/androidTest/java/com/h/pixeldroid/SwipeTest.kt +++ b/app/src/androidTest/java/com/h/pixeldroid/SwipeTest.kt @@ -8,10 +8,9 @@ import androidx.test.espresso.action.ViewActions.swipeRight import androidx.test.espresso.assertion.ViewAssertions.matches import androidx.test.espresso.matcher.ViewMatchers.isDisplayed import androidx.test.espresso.matcher.ViewMatchers.withId -import androidx.test.ext.junit.rules.ActivityScenarioRule import androidx.test.ext.junit.runners.AndroidJUnit4 import androidx.test.platform.app.InstrumentationRegistry.getInstrumentation -import com.google.android.material.tabs.TabLayout +import androidx.test.rule.ActivityTestRule import org.junit.Before import org.junit.Rule import org.junit.Test @@ -20,8 +19,8 @@ import org.junit.runner.RunWith @RunWith(AndroidJUnit4::class) class SwipeTest { @get:Rule - var activityRule: ActivityScenarioRule - = ActivityScenarioRule(MainActivity::class.java) + var activityRule: ActivityTestRule + = ActivityTestRule(MainActivity::class.java) @Before fun before(){ val preferences = getInstrumentation() @@ -31,30 +30,29 @@ class SwipeTest { ActivityScenario.launch(MainActivity::class.java) } - fun swipingLeftOnSearchShowsCameraFragment() { - onView(withId(R.id.main_activity_main_linear_layout)) - .perform(swipeLeft()) // go to search - .perform(swipeLeft()) - onView(withId(R.id.camera_fragment_main_linear_layout)).check(matches(isDisplayed())) - } - @Test - fun swipingRightOnNotificationsShowsCameraFragment() { + fun swipingLeftStopsAtProfile() { onView(withId(R.id.main_activity_main_linear_layout)) - .perform(swipeLeft()) - .perform(swipeLeft()) - .perform(swipeLeft()) // go to notifications - .perform(swipeRight()) - onView(withId(R.id.camera_fragment_main_linear_layout)).check(matches(isDisplayed())) - } - - @Test - fun swipingLeftShowsProfileFragment() { - onView(withId(R.id.view_pager)) - .perform(swipeLeft()) - .perform(swipeLeft()) - .perform(swipeLeft()) - .perform(swipeLeft()) + .perform(swipeLeft()) // search + .perform(swipeLeft()) // camera + .perform(swipeLeft()) // notifications + .perform(swipeLeft()) // profile + .perform(swipeLeft()) // should stop at profile onView(withId(R.id.nbFollowersTextView)).check(matches(isDisplayed())) } + + @Test + fun swipingRightStopsAtHomepage() { + onView(withId(R.id.main_activity_main_linear_layout)) + .perform(swipeLeft()) // search + .perform(swipeLeft()) // camera + .perform(swipeLeft()) // notifications + .perform(swipeLeft()) // profile + .perform(swipeRight()) // notifications + .perform(swipeRight()) // camera + .perform(swipeRight()) // search + .perform(swipeRight()) // homepage + .perform(swipeRight()) // should stop at homepage + onView(withId(R.id.feedList)).check(matches(isDisplayed())) + } } \ No newline at end of file diff --git a/app/src/main/java/com/h/pixeldroid/MainActivity.kt b/app/src/main/java/com/h/pixeldroid/MainActivity.kt index a14eff18..0c623184 100644 --- a/app/src/main/java/com/h/pixeldroid/MainActivity.kt +++ b/app/src/main/java/com/h/pixeldroid/MainActivity.kt @@ -5,7 +5,6 @@ import android.content.Intent import android.content.SharedPreferences import android.os.Bundle import android.view.MenuItem - import androidx.annotation.NonNull import androidx.appcompat.app.AppCompatActivity import androidx.core.view.GravityCompat @@ -21,7 +20,6 @@ import com.h.pixeldroid.fragments.HomeFragment import com.h.pixeldroid.fragments.MyProfileFragment import com.h.pixeldroid.fragments.NotificationsFragment - class MainActivity : AppCompatActivity(), NavigationView.OnNavigationItemSelectedListener { private lateinit var drawerLayout: DrawerLayout diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index aa15e5b5..d1eb67f8 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -33,8 +33,6 @@ - - Date: Mon, 30 Mar 2020 19:31:36 +0200 Subject: [PATCH 2/5] modified concerned tests to replace swipe calls --- .../java/com/h/pixeldroid/MockedServerTest.kt | 29 ++++++++++--------- .../java/com/h/pixeldroid/SettingsTest.kt | 1 - .../java/com/h/pixeldroid/SwipeTest.kt | 6 ++-- 3 files changed, 18 insertions(+), 18 deletions(-) diff --git a/app/src/androidTest/java/com/h/pixeldroid/MockedServerTest.kt b/app/src/androidTest/java/com/h/pixeldroid/MockedServerTest.kt index a7e5afe4..1bbb9a6d 100644 --- a/app/src/androidTest/java/com/h/pixeldroid/MockedServerTest.kt +++ b/app/src/androidTest/java/com/h/pixeldroid/MockedServerTest.kt @@ -10,6 +10,7 @@ import androidx.test.espresso.matcher.ViewMatchers.withText import androidx.test.ext.junit.rules.ActivityScenarioRule import androidx.test.ext.junit.runners.AndroidJUnit4 import androidx.test.platform.app.InstrumentationRegistry +import com.google.android.material.tabs.TabLayout import okhttp3.mockwebserver.Dispatcher import okhttp3.mockwebserver.MockResponse import okhttp3.mockwebserver.MockWebServer @@ -77,13 +78,12 @@ class MockedServerTest { .targetContext.getSharedPreferences("com.h.pixeldroid.pref", Context.MODE_PRIVATE) preferences.edit().putString("accessToken", "azerty").apply() preferences.edit().putString("domain", baseUrl.toString()).apply() - ActivityScenario.launch(MainActivity::class.java) } @Test fun testFollowersTextView() { - onView(withId(R.id.view_pager)).perform(ViewActions.swipeLeft()).perform(ViewActions.swipeLeft()).perform( - ViewActions.swipeLeft() - ).perform(ViewActions.swipeLeft()) + ActivityScenario.launch(MainActivity::class.java).onActivity{ + a -> a.findViewById(R.id.tabs).getTabAt(4)?.select() + } Thread.sleep(1000) onView(withId(R.id.nbFollowersTextView)).check(matches(withText("68\nFollowers"))) onView(withId(R.id.accountNameTextView)).check(matches(withText("deerbard_photo"))) @@ -94,16 +94,17 @@ class MockedServerTest { Thread.sleep(1000) val firstDesc = withId(R.id.description) - onView(withId(R.id.view_pager)).perform(ViewActions.swipeUp()).perform(ViewActions.swipeDown()).perform( - ViewActions.swipeDown() - ) - onView(withId(R.id.description)).check(matches(firstDesc)) + onView(withId(R.id.view_pager)) + .perform(ViewActions.swipeUp()) + .perform(ViewActions.swipeDown()) + .perform(ViewActions.swipeDown()) + onView(firstDesc).check(matches(firstDesc)) } @Test fun testNotificationsList() { - onView(withId(R.id.view_pager)).perform(ViewActions.swipeLeft()).perform( - ViewActions.swipeLeft() - ).perform(ViewActions.swipeLeft()) + ActivityScenario.launch(MainActivity::class.java).onActivity{ + a -> a.findViewById(R.id.tabs).getTabAt(3)?.select() + } Thread.sleep(1000) onView(withId(R.id.view_pager)).perform(ViewActions.swipeUp()).perform(ViewActions.swipeDown()) @@ -115,9 +116,9 @@ class MockedServerTest { } @Test fun clickNotification() { - onView(withId(R.id.view_pager)).perform(ViewActions.swipeLeft()).perform( - ViewActions.swipeLeft() - ).perform(ViewActions.swipeLeft()) + ActivityScenario.launch(MainActivity::class.java).onActivity{ + a -> a.findViewById(R.id.tabs).getTabAt(3)?.select() + } Thread.sleep(1000) onView(withId(R.id.view_pager)).perform(ViewActions.swipeUp()).perform(ViewActions.swipeDown()) diff --git a/app/src/androidTest/java/com/h/pixeldroid/SettingsTest.kt b/app/src/androidTest/java/com/h/pixeldroid/SettingsTest.kt index cd28633d..1a4543ca 100644 --- a/app/src/androidTest/java/com/h/pixeldroid/SettingsTest.kt +++ b/app/src/androidTest/java/com/h/pixeldroid/SettingsTest.kt @@ -16,7 +16,6 @@ import org.junit.Before import org.junit.Rule import org.junit.Test import org.junit.runner.RunWith -import kotlin.concurrent.thread @RunWith(AndroidJUnit4::class) diff --git a/app/src/androidTest/java/com/h/pixeldroid/SwipeTest.kt b/app/src/androidTest/java/com/h/pixeldroid/SwipeTest.kt index a15b2e3b..b0a77bfc 100644 --- a/app/src/androidTest/java/com/h/pixeldroid/SwipeTest.kt +++ b/app/src/androidTest/java/com/h/pixeldroid/SwipeTest.kt @@ -8,9 +8,9 @@ import androidx.test.espresso.action.ViewActions.swipeRight import androidx.test.espresso.assertion.ViewAssertions.matches import androidx.test.espresso.matcher.ViewMatchers.isDisplayed import androidx.test.espresso.matcher.ViewMatchers.withId +import androidx.test.ext.junit.rules.ActivityScenarioRule import androidx.test.ext.junit.runners.AndroidJUnit4 import androidx.test.platform.app.InstrumentationRegistry.getInstrumentation -import androidx.test.rule.ActivityTestRule import org.junit.Before import org.junit.Rule import org.junit.Test @@ -19,8 +19,8 @@ import org.junit.runner.RunWith @RunWith(AndroidJUnit4::class) class SwipeTest { @get:Rule - var activityRule: ActivityTestRule - = ActivityTestRule(MainActivity::class.java) + var activityRule: ActivityScenarioRule + = ActivityScenarioRule(MainActivity::class.java) @Before fun before(){ val preferences = getInstrumentation() From 5e2c6c3724195e4d9bc13a14a163787b123ad4e0 Mon Sep 17 00:00:00 2001 From: Ulysse Widmer Date: Mon, 30 Mar 2020 20:01:28 +0200 Subject: [PATCH 3/5] fix multiple post on feed detection --- app/src/androidTest/java/com/h/pixeldroid/MockedServerTest.kt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/src/androidTest/java/com/h/pixeldroid/MockedServerTest.kt b/app/src/androidTest/java/com/h/pixeldroid/MockedServerTest.kt index 1bbb9a6d..ab82e259 100644 --- a/app/src/androidTest/java/com/h/pixeldroid/MockedServerTest.kt +++ b/app/src/androidTest/java/com/h/pixeldroid/MockedServerTest.kt @@ -15,6 +15,7 @@ import okhttp3.mockwebserver.Dispatcher import okhttp3.mockwebserver.MockResponse import okhttp3.mockwebserver.MockWebServer import okhttp3.mockwebserver.RecordedRequest +import org.hamcrest.CoreMatchers.allOf import org.junit.Before import org.junit.Rule import org.junit.Test @@ -93,7 +94,7 @@ class MockedServerTest { fun swipingDownOnHomepageShowsMorePosts() { Thread.sleep(1000) - val firstDesc = withId(R.id.description) + val firstDesc = allOf(withId(R.id.description)) onView(withId(R.id.view_pager)) .perform(ViewActions.swipeUp()) .perform(ViewActions.swipeDown()) From c572d60213945e1fdbb5f2d09f564163db2005eb Mon Sep 17 00:00:00 2001 From: Ulysse Widmer Date: Mon, 30 Mar 2020 20:46:38 +0200 Subject: [PATCH 4/5] check coverage without test --- .../java/com/h/pixeldroid/MockedServerTest.kt | 21 +++++++++---------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/app/src/androidTest/java/com/h/pixeldroid/MockedServerTest.kt b/app/src/androidTest/java/com/h/pixeldroid/MockedServerTest.kt index ab82e259..c122e690 100644 --- a/app/src/androidTest/java/com/h/pixeldroid/MockedServerTest.kt +++ b/app/src/androidTest/java/com/h/pixeldroid/MockedServerTest.kt @@ -90,17 +90,16 @@ class MockedServerTest { onView(withId(R.id.accountNameTextView)).check(matches(withText("deerbard_photo"))) } - @Test - fun swipingDownOnHomepageShowsMorePosts() { - Thread.sleep(1000) - - val firstDesc = allOf(withId(R.id.description)) - onView(withId(R.id.view_pager)) - .perform(ViewActions.swipeUp()) - .perform(ViewActions.swipeDown()) - .perform(ViewActions.swipeDown()) - onView(firstDesc).check(matches(firstDesc)) - } +// @Test +// fun swipingDownOnHomepageShowsMorePosts() { +// Thread.sleep(1000) +// +// val firstDesc = allOf(withId(R.id.description)) +// onView(withId(R.id.view_pager)) +// .perform(ViewActions.swipeUp()) +// .perform(ViewActions.swipeDown()) +// onView(allOf(withId(R.id.description))).check(matches(firstDesc)) +// } @Test fun testNotificationsList() { ActivityScenario.launch(MainActivity::class.java).onActivity{ From 095525f70140d3c7b6896932018e0952a74cf1cc Mon Sep 17 00:00:00 2001 From: Ulysse Widmer Date: Tue, 31 Mar 2020 11:11:02 +0200 Subject: [PATCH 5/5] minor refactor and updt some versions in gradle --- app/build.gradle | 4 +++- .../java/com/h/pixeldroid/MockedServerTest.kt | 12 +----------- .../java/com/h/pixeldroid/SettingsTest.kt | 2 -- .../java/com/h/pixeldroid/SwipeTest.kt | 19 ++++++++++++------- 4 files changed, 16 insertions(+), 21 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index db171c23..bda03189 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -65,7 +65,7 @@ dependencies { implementation "androidx.browser:browser:1.2.0" implementation 'com.google.android.material:material:1.1.0' - def room_version = "2.2.4" + def room_version = "2.2.5" implementation "androidx.room:room-runtime:$room_version" implementation 'androidx.recyclerview:recyclerview:1.1.0' implementation "androidx.swiperefreshlayout:swiperefreshlayout:1.0.0" @@ -84,6 +84,8 @@ dependencies { androidTestImplementation("com.squareup.okhttp3:mockwebserver:4.4.0") androidTestImplementation 'androidx.test.ext:junit:1.1.1' + androidTestImplementation 'androidx.test:runner:1.2.0' + androidTestImplementation 'androidx.test:rules:1.2.0' androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0' androidTestImplementation 'androidx.test.espresso:espresso-intents:3.2.0' androidTestImplementation 'com.android.support.test.espresso:espresso-contrib:3.0.2' diff --git a/app/src/androidTest/java/com/h/pixeldroid/MockedServerTest.kt b/app/src/androidTest/java/com/h/pixeldroid/MockedServerTest.kt index c122e690..44acc66d 100644 --- a/app/src/androidTest/java/com/h/pixeldroid/MockedServerTest.kt +++ b/app/src/androidTest/java/com/h/pixeldroid/MockedServerTest.kt @@ -15,7 +15,6 @@ import okhttp3.mockwebserver.Dispatcher import okhttp3.mockwebserver.MockResponse import okhttp3.mockwebserver.MockWebServer import okhttp3.mockwebserver.RecordedRequest -import org.hamcrest.CoreMatchers.allOf import org.junit.Before import org.junit.Rule import org.junit.Test @@ -80,6 +79,7 @@ class MockedServerTest { preferences.edit().putString("accessToken", "azerty").apply() preferences.edit().putString("domain", baseUrl.toString()).apply() } + @Test fun testFollowersTextView() { ActivityScenario.launch(MainActivity::class.java).onActivity{ @@ -90,16 +90,6 @@ class MockedServerTest { onView(withId(R.id.accountNameTextView)).check(matches(withText("deerbard_photo"))) } -// @Test -// fun swipingDownOnHomepageShowsMorePosts() { -// Thread.sleep(1000) -// -// val firstDesc = allOf(withId(R.id.description)) -// onView(withId(R.id.view_pager)) -// .perform(ViewActions.swipeUp()) -// .perform(ViewActions.swipeDown()) -// onView(allOf(withId(R.id.description))).check(matches(firstDesc)) -// } @Test fun testNotificationsList() { ActivityScenario.launch(MainActivity::class.java).onActivity{ diff --git a/app/src/androidTest/java/com/h/pixeldroid/SettingsTest.kt b/app/src/androidTest/java/com/h/pixeldroid/SettingsTest.kt index 1a4543ca..ef864200 100644 --- a/app/src/androidTest/java/com/h/pixeldroid/SettingsTest.kt +++ b/app/src/androidTest/java/com/h/pixeldroid/SettingsTest.kt @@ -30,8 +30,6 @@ class SettingsTest { .targetContext.getSharedPreferences("com.h.pixeldroid.pref", Context.MODE_PRIVATE) preferences.edit().putString("accessToken", "azerty").apply() preferences.edit().putString("domain", "http://localhost").apply() - ActivityScenario.launch(MainActivity::class.java) - } @Test diff --git a/app/src/androidTest/java/com/h/pixeldroid/SwipeTest.kt b/app/src/androidTest/java/com/h/pixeldroid/SwipeTest.kt index b0a77bfc..cfe6ae40 100644 --- a/app/src/androidTest/java/com/h/pixeldroid/SwipeTest.kt +++ b/app/src/androidTest/java/com/h/pixeldroid/SwipeTest.kt @@ -1,16 +1,23 @@ package com.h.pixeldroid import android.content.Context +import android.content.Intent import androidx.test.core.app.ActivityScenario import androidx.test.espresso.Espresso.onView -import androidx.test.espresso.action.ViewActions.swipeLeft -import androidx.test.espresso.action.ViewActions.swipeRight +import androidx.test.espresso.action.ViewActions +import androidx.test.espresso.action.ViewActions.* import androidx.test.espresso.assertion.ViewAssertions.matches +import androidx.test.espresso.intent.Intents +import androidx.test.espresso.intent.matcher.IntentMatchers +import androidx.test.espresso.intent.rule.IntentsTestRule import androidx.test.espresso.matcher.ViewMatchers.isDisplayed import androidx.test.espresso.matcher.ViewMatchers.withId import androidx.test.ext.junit.rules.ActivityScenarioRule import androidx.test.ext.junit.runners.AndroidJUnit4 import androidx.test.platform.app.InstrumentationRegistry.getInstrumentation +import com.google.android.material.tabs.TabLayout +import org.hamcrest.CoreMatchers +import org.hamcrest.Matcher import org.junit.Before import org.junit.Rule import org.junit.Test @@ -27,7 +34,6 @@ class SwipeTest { .targetContext.getSharedPreferences("com.h.pixeldroid.pref", Context.MODE_PRIVATE) preferences.edit().putString("accessToken", "azerty").apply() preferences.edit().putString("domain", "http://localhost").apply() - ActivityScenario.launch(MainActivity::class.java) } @Test @@ -43,11 +49,10 @@ class SwipeTest { @Test fun swipingRightStopsAtHomepage() { + ActivityScenario.launch(MainActivity::class.java).onActivity { + a -> a.findViewById(R.id.tabs).getTabAt(4)?.select() + } // go to the last tab onView(withId(R.id.main_activity_main_linear_layout)) - .perform(swipeLeft()) // search - .perform(swipeLeft()) // camera - .perform(swipeLeft()) // notifications - .perform(swipeLeft()) // profile .perform(swipeRight()) // notifications .perform(swipeRight()) // camera .perform(swipeRight()) // search