diff --git a/app/build.gradle b/app/build.gradle index 387eda3..35eda25 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -150,7 +150,7 @@ dependencies { implementation "org.kodein.di:kodein-di-generic-jvm:$kodein_version" implementation "org.kodein.di:kodein-di-framework-android-x:$kodein_version" / * Image Carousal */ - implementation 'com.synnapps:carouselview:0.1.6' + implementation 'com.synnapps:carouselview:0.1.5' / * Glide */ implementation 'com.github.bumptech.glide:glide:4.12.0' annotationProcessor 'com.github.bumptech.glide:compiler:4.12.0' @@ -162,4 +162,6 @@ dependencies { def retrofit_version = "2.9.0" androidTestImplementation "com.squareup.retrofit2:retrofit:$retrofit_version" androidTestImplementation "com.squareup.retrofit2:converter-gson:$retrofit_version" + / * Spoon screenshot library */ + androidTestImplementation 'com.squareup.spoon:spoon-client:1.1.1' } diff --git a/app/src/androidTest/java/h_mal/appttude/com/driver/BaseUiTest.kt b/app/src/androidTest/java/h_mal/appttude/com/driver/BaseUiTest.kt index ad8f8e9..e955bc8 100644 --- a/app/src/androidTest/java/h_mal/appttude/com/driver/BaseUiTest.kt +++ b/app/src/androidTest/java/h_mal/appttude/com/driver/BaseUiTest.kt @@ -1,5 +1,7 @@ package h_mal.appttude.com.driver +import android.Manifest +import android.Manifest.permission.WRITE_EXTERNAL_STORAGE import android.R import android.app.Activity import android.content.Context @@ -8,6 +10,7 @@ import android.view.WindowManager import androidx.annotation.StringRes import androidx.test.core.app.ActivityScenario import androidx.test.espresso.Espresso.onView +import androidx.test.espresso.Espresso.setFailureHandler import androidx.test.espresso.IdlingRegistry import androidx.test.espresso.IdlingResource import androidx.test.espresso.Root @@ -19,8 +22,10 @@ import androidx.test.espresso.matcher.ViewMatchers.isRoot import androidx.test.espresso.matcher.ViewMatchers.withId import androidx.test.espresso.matcher.ViewMatchers.withText import androidx.test.platform.app.InstrumentationRegistry.getInstrumentation +import androidx.test.rule.GrantPermissionRule import h_mal.appttude.com.driver.base.BaseActivity import h_mal.appttude.com.driver.helpers.BaseViewAction +import h_mal.appttude.com.driver.helpers.SpoonFailureHandler import org.hamcrest.CoreMatchers import org.hamcrest.Description import org.hamcrest.Matcher @@ -28,6 +33,7 @@ import org.hamcrest.TypeSafeMatcher import org.hamcrest.core.AllOf import org.junit.After import org.junit.Before +import org.junit.Rule open class BaseUiTest>( @@ -39,8 +45,13 @@ open class BaseUiTest>( private lateinit var currentActivity: Activity + @JvmField + @Rule + var permissionWrite = GrantPermissionRule.grant(WRITE_EXTERNAL_STORAGE) + @Before fun setup() { + setFailureHandler(SpoonFailureHandler(getInstrumentation().targetContext)) beforeLaunch() mActivityScenarioRule = ActivityScenario.launch(activity) mActivityScenarioRule.onActivity { diff --git a/app/src/androidTest/java/h_mal/appttude/com/driver/helpers/SpoonFailureHandler.kt b/app/src/androidTest/java/h_mal/appttude/com/driver/helpers/SpoonFailureHandler.kt new file mode 100644 index 0000000..9d055d6 --- /dev/null +++ b/app/src/androidTest/java/h_mal/appttude/com/driver/helpers/SpoonFailureHandler.kt @@ -0,0 +1,27 @@ +package h_mal.appttude.com.driver.helpers + +import android.app.Activity +import android.content.Context +import android.view.View +import androidx.test.espresso.FailureHandler +import androidx.test.espresso.base.DefaultFailureHandler +import com.squareup.spoon.Spoon +import org.hamcrest.Matcher + + +class SpoonFailureHandler(targetContext: Context) : FailureHandler { + private val delegate: FailureHandler + private val context: Context + + init { + delegate = DefaultFailureHandler(targetContext) + context = targetContext + } + + override fun handle(error: Throwable?, viewMatcher: Matcher?) { + delegate.handle(error, viewMatcher) + if (context is Activity) { + Spoon.screenshot(context, "error") + } + } +} \ No newline at end of file diff --git a/app/src/androidTestAdmin/java/h_mal/appttude/com/driver/robots/HomeAdminRobot.kt b/app/src/androidTestAdmin/java/h_mal/appttude/com/driver/robots/HomeAdminRobot.kt index 7957910..2cd8bfb 100644 --- a/app/src/androidTestAdmin/java/h_mal/appttude/com/driver/robots/HomeAdminRobot.kt +++ b/app/src/androidTestAdmin/java/h_mal/appttude/com/driver/robots/HomeAdminRobot.kt @@ -46,6 +46,7 @@ class HomeAdminRobot : BaseTestRobot() { } fun showNoPermissionsDisplay() { + matchViewWaitFor(R.id.header) matchText(R.id.header, DatabaseStatus.NO_PERMISSION.header) matchText(R.id.subtext, DatabaseStatus.NO_PERMISSION.subtext) } diff --git a/app/src/androidTestAdmin/java/h_mal/appttude/com/driver/tests/UserListTest.kt b/app/src/androidTestAdmin/java/h_mal/appttude/com/driver/tests/UserListTest.kt index 6606a34..e0675c9 100644 --- a/app/src/androidTestAdmin/java/h_mal/appttude/com/driver/tests/UserListTest.kt +++ b/app/src/androidTestAdmin/java/h_mal/appttude/com/driver/tests/UserListTest.kt @@ -7,6 +7,7 @@ import h_mal.appttude.com.driver.robots.homeAdmin import h_mal.appttude.com.driver.robots.login import h_mal.appttude.com.driver.ui.user.LoginActivity import org.junit.Test +import java.io.IOException class UserListTest : FirebaseTest(LoginActivity::class.java) { @@ -30,6 +31,7 @@ class UserListTest : FirebaseTest(LoginActivity::class.java) { } homeAdmin { showNoPermissionsDisplay() + throw IOException("sadfasdfasdf") } } diff --git a/app/src/debug/AndroidManifest.xml b/app/src/debug/AndroidManifest.xml index 8451b0c..62dce8f 100644 --- a/app/src/debug/AndroidManifest.xml +++ b/app/src/debug/AndroidManifest.xml @@ -2,6 +2,7 @@ xmlns:android="http://schemas.android.com/apk/res/android"> +