Skip to content

Instantly share code, notes, and snippets.

android {
...
composeOptions {
kotlinCompilerExtensionVersion "0.1.0-dev04"
}
}
dependencies {
...
implementation 'androidx.compose:compose-compiler:0.1.0-dev04'
implementation 'androidx.compose:compose-runtime:0.1.0-dev04'
implementation 'androidx.ui:ui-layout:0.1.0-dev04'
implementation 'androidx.ui:ui-framework:0.1.0-dev04'
implementation 'androidx.ui:ui-layout:0.1.0-dev04'
implementation 'androidx.ui:ui-foundation:0.1.0-dev04'
implementation 'androidx.ui:ui-animation:0.1.0-dev04'
implementation 'androidx.ui:ui-tooling:0.1.0-dev04'
@LargeTest
@RunWith(AndroidJUnit4::class)
class SignInActivityTest123 {
@Rule
@JvmField
var mActivityTestRule = ActivityTestRule(SignInActivity::class.java)
@Test
fun signInActivityTest123() {
val appCompatEditText = onView(
allOf(withId(R.id.email),
@AlexZhukovich
AlexZhukovich / Appium-vs-Espresso-vs-UiAutomator.csv
Last active November 23, 2022 09:26
Appium vs Espresso vs UiAutomator - Summary
Criteria Appium Espresso UiAutomator
Execution Time Slow (test case: 12.154 sec) Fast (test case: 0.967 sec) Medium (test case: 8.743 sec)
Supported languages Java, Kotlin, C#, JavaScript, Python, Ruby Java, Kotlin Java, Kotlin
Test Type Black Box Gray Box Black Box
Setup Hard (separate module, capabilities (device, app, etc.)) Easy (part of the project) Easy (part of the project)
@AlexZhukovich
AlexZhukovich / AppiumSignInTest.kt
Created September 7, 2019 23:53
Sign In error verification Android UI tests with Appium
class AppiumSignInTest {
private lateinit var appiumDriver: AppiumDriver<AndroidElement>
@Before
fun setup() {
val capabilities = DesiredCapabilities()
capabilities.setCapability(MobileCapabilityType.PLATFORM_NAME, "Android")
capabilities.setCapability(MobileCapabilityType.DEVICE_NAME, "emulator-5554")
capabilities.setCapability("appPackage", "com.alex.mapnotes")
@AlexZhukovich
AlexZhukovich / UiAutomatorSignInTest.kt
Last active September 7, 2019 23:52
Sign In error verification Android UI tests with UiAutomator
@RunWith(AndroidJUnit4::class)
class UiAutomatorSignInTest {
companion object {
const val LAUNCH_TIMEOUT = 2_000L
const val APP_PACKAGE = "com.alex.mapnotes"
}
private val device = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation())
@AlexZhukovich
AlexZhukovich / EspressoSignInTest.kt
Last active September 7, 2019 23:52
Sign In error verification Android UI tests with Espresso
@RunWith(AndroidJUnit4::class)
class EspressoSignInTest {
@Rule @JvmField
val activityRule = ActivityTestRule<SignInActivity>(SignInActivity::class.java)
@Test
fun shouldDisplaySinInErrorWhenEmailIsIncorrect() {
val incorrectEmail = "test"
@AlexZhukovich
AlexZhukovich / Analytics.kt
Last active October 6, 2022 14:23
Android ProcessLifecycleOwner 
by example - source code for article https://alexzh.com/2019/08/19/android-processlifecycleowner-by-example/
class Analytics {
private var startSessionTimestamp: Long = -1
private val reporters = mutableListOf<AnalyticsReporter>()
fun addReporter(reporter: AnalyticsReporter) {
reporters.add(reporter)
}
fun startSession() {
startSessionTimestamp = Date().time
@AlexZhukovich
AlexZhukovich / Dependencies
Created February 1, 2019 21:41
Sharing test cases between local and instrumentation tests - dependencies
dependencies {
...
// Robolectric
testImplementation "org.robolectric:robolectric:$robolectric_version" // 4.1
// Android test runner and rules
androidTestImplementation "androidx.test:runner:$test_runner_version" // 1.1.0
androidTestImplementation "androidx.test:core:$test_core_version" // 1.1.0
androidTestImplementation "androidx.test.ext:junit:$test_junit_version" // 1.1.0
androidTestImplementation "androidx.test:rules:$test_rules_version" // 1.1.0
@AlexZhukovich
AlexZhukovich / TestDataFactory
Created February 1, 2019 21:38
TestDataFactory
object TestDataFactory {
fun randomString(): String {
return UUID.randomUUID().toString()
}
fun randomDouble(): Double {
return Math.random()
}