Try test butler
This commit is contained in:
parent
d1a34abf85
commit
9d2e77da8f
|
@ -1,5 +1,13 @@
|
|||
image: registry.gitlab.com/fdroid/ci-images-client
|
||||
|
||||
before_script:
|
||||
- export GRADLE_USER_HOME=`pwd`/.gradle
|
||||
|
||||
cache:
|
||||
paths:
|
||||
- .gradle/wrapper
|
||||
- .gradle/caches
|
||||
|
||||
# Basic android and gradle stuff
|
||||
# Check linting
|
||||
lintDebug:
|
||||
|
@ -48,12 +56,12 @@ debugTests:
|
|||
- apt-get update || apt-get update
|
||||
- apt-get install -y openjdk-11-jdk-headless
|
||||
- update-alternatives --auto java
|
||||
- ./gradlew connectedStagingAndroidTest || (adb -e logcat -d > logcat.txt; exit 1)
|
||||
- ./gradlew connectedStagingAndroidTest --info || (adb -e logcat -d > logcat.txt; exit 1)
|
||||
artifacts:
|
||||
paths:
|
||||
- logcat.txt
|
||||
|
||||
connected 23 default x86_64:
|
||||
connected 27 default x86_64:
|
||||
<<: *connected-template
|
||||
|
||||
fdroid build:
|
||||
|
|
|
@ -33,7 +33,7 @@ android {
|
|||
versionCode 16
|
||||
versionName "1.0.beta" + versionCode
|
||||
|
||||
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
|
||||
testInstrumentationRunner "org.pixeldroid.app.testUtility.TestRunner"
|
||||
testInstrumentationRunnerArguments clearPackageData: 'true'
|
||||
}
|
||||
sourceSets {
|
||||
|
@ -234,6 +234,10 @@ dependencies {
|
|||
*/
|
||||
|
||||
//stagingImplementation 'com.squareup.leakcanary:leakcanary-android:2.7'
|
||||
androidTestImplementation 'com.android.support.test.espresso:espresso-idling-resource:3.0.2'
|
||||
|
||||
androidTestImplementation 'com.linkedin.testbutler:test-butler-library:2.2.1'
|
||||
androidTestUtil 'com.linkedin.testbutler:test-butler-app:2.2.1'
|
||||
|
||||
androidTestImplementation 'androidx.work:work-testing:2.7.1'
|
||||
testImplementation 'com.github.tomakehurst:wiremock-jre8:2.33.2'
|
||||
|
|
|
@ -4,37 +4,50 @@ import android.content.Context
|
|||
import androidx.test.core.app.ActivityScenario
|
||||
import androidx.test.core.app.ApplicationProvider
|
||||
import androidx.test.espresso.Espresso.onView
|
||||
import androidx.test.espresso.IdlingRegistry
|
||||
import androidx.test.espresso.IdlingResource
|
||||
import androidx.test.espresso.action.ViewActions.click
|
||||
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.runners.AndroidJUnit4
|
||||
import org.junit.*
|
||||
import org.pixeldroid.app.testUtility.clearData
|
||||
import org.pixeldroid.app.testUtility.initDB
|
||||
import org.pixeldroid.app.utils.db.AppDatabase
|
||||
import com.linkedin.android.testbutler.TestButler
|
||||
import org.junit.After
|
||||
import org.junit.Before
|
||||
import org.junit.Rule
|
||||
import org.junit.Test
|
||||
import org.junit.rules.Timeout
|
||||
import org.junit.runner.RunWith
|
||||
import org.pixeldroid.app.testUtility.ConnectivityIdlingResource
|
||||
import org.pixeldroid.app.testUtility.clearData
|
||||
import org.pixeldroid.app.testUtility.initDB
|
||||
import org.pixeldroid.app.testUtility.waitForView
|
||||
import org.pixeldroid.app.utils.db.AppDatabase
|
||||
|
||||
|
||||
@RunWith(AndroidJUnit4::class)
|
||||
@Ignore("Ignore until we can get TestButler to work on CI")
|
||||
class LoginActivityOfflineTest {
|
||||
|
||||
private lateinit var context: Context
|
||||
private lateinit var waitForOffline: IdlingResource
|
||||
|
||||
private lateinit var db: AppDatabase
|
||||
|
||||
@get:Rule
|
||||
var globalTimeout: Timeout = Timeout.seconds(100)
|
||||
|
||||
|
||||
|
||||
@Before
|
||||
fun before() {
|
||||
//TestButler.setWifiState(false)
|
||||
//TestButler.setGsmState(false)
|
||||
context = ApplicationProvider.getApplicationContext<Context>()
|
||||
TestButler.setWifiState(false)
|
||||
TestButler.setGsmState(false)
|
||||
context = ApplicationProvider.getApplicationContext()
|
||||
waitForOffline = ConnectivityIdlingResource("resourceName",
|
||||
context, ConnectivityIdlingResource.WAIT_FOR_DISCONNECTION)
|
||||
db = initDB(context)
|
||||
db.clearAllTables()
|
||||
IdlingRegistry.getInstance().register(waitForOffline)
|
||||
ActivityScenario.launch(LoginActivity::class.java)
|
||||
}
|
||||
|
||||
|
@ -53,9 +66,10 @@ class LoginActivityOfflineTest {
|
|||
|
||||
@After
|
||||
fun after() {
|
||||
//TestButler.setWifiState(true)
|
||||
//TestButler.setGsmState(true)
|
||||
TestButler.setWifiState(true)
|
||||
TestButler.setGsmState(true)
|
||||
db.close()
|
||||
clearData()
|
||||
IdlingRegistry.getInstance().unregister(waitForOffline)
|
||||
}
|
||||
}
|
|
@ -33,7 +33,6 @@ class MockedServerTest {
|
|||
db = initDB(context)
|
||||
db.clearAllTables()
|
||||
db.instanceDao().insertInstance(testiTestoInstance)
|
||||
|
||||
db.userDao().insertUser(testiTesto)
|
||||
db.close()
|
||||
activityScenario = ActivityScenario.launch(MainActivity::class.java)
|
||||
|
|
|
@ -58,13 +58,15 @@ class PostCreationFragmentTest {
|
|||
IdlingRegistry.getInstance().unregister(viewPager2IdlingResource)
|
||||
}
|
||||
|
||||
private val expectedIntent: Matcher<Intent> = hasAction(Intent.ACTION_CHOOSER)
|
||||
|
||||
// image choosing intent
|
||||
@Test
|
||||
fun galleryButtonLaunchesGalleryIntent() {
|
||||
waitForView(R.id.photo_view_button)
|
||||
|
||||
val expectedIntent: Matcher<Intent> = hasAction(Intent.ACTION_CHOOSER)
|
||||
onView(withId(R.id.photo_view_button)).perform(click())
|
||||
Thread.sleep(300)
|
||||
intended(expectedIntent)
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,57 @@
|
|||
package org.pixeldroid.app.testUtility
|
||||
|
||||
import android.content.Context
|
||||
import androidx.test.espresso.IdlingResource
|
||||
import kotlin.jvm.Volatile
|
||||
import android.net.ConnectivityManager
|
||||
import android.net.NetworkInfo
|
||||
import android.util.Log
|
||||
import org.pixeldroid.app.testUtility.ConnectivityIdlingResource
|
||||
|
||||
/**
|
||||
* Created by Kush Saini
|
||||
* Later converted and adapted to Kotlin for PixelDroid
|
||||
* Description:
|
||||
* This [IdlingResource] halts Espresso Test depending on mode which is passed to the constructor
|
||||
*/
|
||||
class ConnectivityIdlingResource
|
||||
/**
|
||||
*
|
||||
* @param resourceName name of the resource (used for logging and idempotency of registration
|
||||
* @param context context
|
||||
* @param mode if mode is WAIT_FOR_CONNECTION i.e. value is 1 then the [IdlingResource]
|
||||
* halts test until internet is available and if mode is WAIT_FOR_DISCONNECTION
|
||||
* i.e. value is 0 then [IdlingResource] waits for internet to disconnect
|
||||
*/(private val resourceName: String, private val context: Context, private val mode: Int) :
|
||||
IdlingResource {
|
||||
@Volatile
|
||||
private var resourceCallback: IdlingResource.ResourceCallback? = null
|
||||
override fun getName(): String {
|
||||
return resourceName
|
||||
}
|
||||
|
||||
override fun isIdleNow(): Boolean {
|
||||
val cm = context.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager
|
||||
val activeNetwork: NetworkInfo? = cm.activeNetworkInfo
|
||||
var isConnected = activeNetwork != null &&
|
||||
activeNetwork.isConnectedOrConnecting
|
||||
if (mode == WAIT_FOR_DISCONNECTION) isConnected = !isConnected
|
||||
if (isConnected) {
|
||||
Log.d(TAG, "Connected now!")
|
||||
resourceCallback!!.onTransitionToIdle()
|
||||
} else {
|
||||
Log.d(TAG, "Not connected!")
|
||||
}
|
||||
return isConnected
|
||||
}
|
||||
|
||||
override fun registerIdleTransitionCallback(resourceCallback: IdlingResource.ResourceCallback) {
|
||||
this.resourceCallback = resourceCallback
|
||||
}
|
||||
|
||||
companion object {
|
||||
var WAIT_FOR_CONNECTION = 1
|
||||
var WAIT_FOR_DISCONNECTION = 0
|
||||
private const val TAG = "ConnectIdlingResource"
|
||||
}
|
||||
}
|
|
@ -1,5 +1,5 @@
|
|||
package org.pixeldroid.app.testUtility
|
||||
/*
|
||||
|
||||
import android.os.Bundle
|
||||
import androidx.test.runner.AndroidJUnitRunner
|
||||
import com.linkedin.android.testbutler.TestButler
|
||||
|
@ -17,4 +17,3 @@ class TestRunner: AndroidJUnitRunner() {
|
|||
}
|
||||
}
|
||||
|
||||
*/
|
Loading…
Reference in New Issue