[android] - add UiAutomator tests for testing clicking home and returning with recent apps

This commit is contained in:
tobrun
2019-02-19 09:40:05 +01:00
committed by Ivo van Dongen
parent 6a840d45f0
commit 4b8cff5b15
5 changed files with 157 additions and 0 deletions

View File

@@ -76,6 +76,7 @@ dependencies {
androidTestImplementation dependenciesList.testEspressoCore
androidTestImplementation dependenciesList.testEspressoIntents
androidTestImplementation dependenciesList.testEspressoContrib
androidTestImplementation dependenciesList.testUiAutomator
}
apply from: "${rootDir}/gradle/gradle-make.gradle"

View File

@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:tools="http://schemas.android.com/tools" package="${applicationId}">
<uses-sdk tools:overrideLibrary="android.support.test.uiautomator.v18"/>
</manifest>

View File

@@ -0,0 +1,77 @@
package com.mapbox.mapboxsdk.maps
import android.content.Intent
import android.support.test.InstrumentationRegistry
import android.support.test.filters.SdkSuppress
import android.support.test.runner.AndroidJUnit4
import android.support.test.uiautomator.*
import org.hamcrest.CoreMatchers.notNullValue
import org.hamcrest.MatcherAssert.assertThat
import org.junit.Before
import org.junit.Test
import org.junit.runner.RunWith
import java.lang.Thread.sleep
import android.support.test.uiautomator.UiSelector
import android.support.test.uiautomator.UiScrollable
private const val BASIC_SAMPLE_PACKAGE = "com.mapbox.mapboxsdk.testapp"
private const val LAUNCH_TIMEOUT = 5000L
@RunWith(AndroidJUnit4::class)
@SdkSuppress(minSdkVersion = 18)
class GLSurfaceViewReopenTest {
private lateinit var device: UiDevice
@Before
fun startSimpleMapActivityFromHomeScreen() {
// Initialize UiDevice instance
device = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation())
// Start from the home screen
device.pressHome()
// Wait for launcher
val launcherPackage: String = device.launcherPackageName
assertThat(launcherPackage, notNullValue())
device.wait(Until.hasObject(By.pkg(launcherPackage).depth(0)), LAUNCH_TIMEOUT)
// Launch the app
val context = InstrumentationRegistry.getInstrumentation().context
val intent = context.packageManager.getLaunchIntentForPackage(BASIC_SAMPLE_PACKAGE).apply {
// Clear out any previous instances
addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK)
}
context.startActivity(intent)
// Wait for the app to appear
device.wait(
Until.hasObject(By.pkg(BASIC_SAMPLE_PACKAGE).depth(0)),
LAUNCH_TIMEOUT
)
// open TextureView debug activity
val appView = UiScrollable(UiSelector().scrollable(true))
appView.scrollIntoView(UiSelector().text("TextureView debug"))
device.findObject(UiSelector().text("TextureView debug")).clickAndWaitForNewWindow()
// wait for idle
device.waitForIdle(LAUNCH_TIMEOUT)
}
@Test
fun reopenTextureViewDebugActivity() {
// return to home screen
device.pressHome()
// press recent apps button
device.pressRecentApps()
// click to reopen app
device.findObject(UiSelector().description("Mapbox Android SDK TestApp")).click()
// wait for idle
device.waitForIdle(LAUNCH_TIMEOUT)
sleep(LAUNCH_TIMEOUT)
}
}

View File

@@ -0,0 +1,73 @@
package com.mapbox.mapboxsdk.maps
import android.content.Intent
import android.support.test.InstrumentationRegistry
import android.support.test.filters.SdkSuppress
import android.support.test.runner.AndroidJUnit4
import android.support.test.uiautomator.*
import org.hamcrest.CoreMatchers.notNullValue
import org.hamcrest.MatcherAssert.assertThat
import org.junit.Before
import org.junit.Test
import org.junit.runner.RunWith
import java.lang.Thread.sleep
private const val BASIC_SAMPLE_PACKAGE = "com.mapbox.mapboxsdk.testapp"
private const val LAUNCH_TIMEOUT = 5000L
@RunWith(AndroidJUnit4::class)
@SdkSuppress(minSdkVersion = 18)
class TextureViewReopenTest {
private lateinit var device: UiDevice
@Before
fun startSimpleMapActivityFromHomeScreen() {
// Initialize UiDevice instance
device = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation())
// Start from the home screen
device.pressHome()
// Wait for launcher
val launcherPackage: String = device.launcherPackageName
assertThat(launcherPackage, notNullValue())
device.wait(Until.hasObject(By.pkg(launcherPackage).depth(0)), LAUNCH_TIMEOUT)
// Launch the app
val context = InstrumentationRegistry.getInstrumentation().context
val intent = context.packageManager.getLaunchIntentForPackage(BASIC_SAMPLE_PACKAGE).apply {
// Clear out any previous instances
addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK)
}
context.startActivity(intent)
// Wait for the app to appear
device.wait(
Until.hasObject(By.pkg(BASIC_SAMPLE_PACKAGE).depth(0)),
LAUNCH_TIMEOUT
)
// open SimpleMapActivity
device.findObject(UiSelector().text("Simple Map")).clickAndWaitForNewWindow()
// wait for idle
device.waitForIdle(LAUNCH_TIMEOUT)
}
@Test
fun reopenSimpleMapActivity() {
// return to home screen
device.pressHome()
// press recents apps button
device.pressRecentApps()
// click to reopen app
device.findObject(UiSelector().description("Mapbox Android SDK TestApp")).click()
// wait for idle
device.waitForIdle(LAUNCH_TIMEOUT)
sleep(LAUNCH_TIMEOUT)
}
}

View File

@@ -12,6 +12,7 @@ ext {
mapboxGestures : '0.4.0',
supportLib : '27.1.1',
constraintLayout: '1.1.2',
uiAutomator : '2.1.3',
espresso : '3.0.2',
testRunner : '1.0.2',
leakCanary : '1.6.2',
@@ -45,6 +46,7 @@ ext {
testEspressoCore : "com.android.support.test.espresso:espresso-core:${versions.espresso}",
testEspressoIntents : "com.android.support.test.espresso:espresso-intents:${versions.espresso}",
testEspressoContrib : "com.android.support.test.espresso:espresso-contrib:${versions.espresso}",
testUiAutomator : "com.android.support.test.uiautomator:uiautomator-v18:${versions.uiAutomator}",
supportAnnotations : "com.android.support:support-annotations:${versions.supportLib}",
supportAppcompatV7 : "com.android.support:appcompat-v7:${versions.supportLib}",