Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/malloth/latte
Lightweight UI testing framework for Android
https://github.com/malloth/latte
android latte tests ui-testing
Last synced: 3 months ago
JSON representation
Lightweight UI testing framework for Android
- Host: GitHub
- URL: https://github.com/malloth/latte
- Owner: malloth
- License: apache-2.0
- Created: 2019-07-21T10:53:12.000Z (over 5 years ago)
- Default Branch: master
- Last Pushed: 2024-03-03T12:08:53.000Z (11 months ago)
- Last Synced: 2024-08-01T19:55:30.086Z (6 months ago)
- Topics: android, latte, tests, ui-testing
- Language: Kotlin
- Homepage:
- Size: 346 KB
- Stars: 7
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE.md
Awesome Lists containing this project
- awesome-list - malloth/latte - Lightweight UI testing framework for Android (Kotlin)
README
[![License](https://img.shields.io/badge/License-Apache%202.0-green.svg)](https://opensource.org/licenses/Apache-2.0)
# Latte
Latte is a lightweight and easy to use UI testing framework for Android utilizing Kotlin DSL.
#### Features
- Has a very small footprint
- Is a standalone framework
- Utilizes Kotlin DSL
- Uses Android API for matching, interactions and verifications
- Narrows the scope of matches, interactions and verifications to a given type of View
- Enables easy debugging of View's current state
- Gives a fine grained control over view matching process
- Provides a separate library artifact with helper interactions and verifications## Requirements
- Minimum Android SDK: 21
- Compile Android SDK: 34 or later## Setup
In `{root}/build.gradle` add:
```gradle
allprojects {
repositories {
maven {
url "https://maven.pkg.github.com/malloth/latte"
}
}
}
```In `{module}/build.gradle` add:
```gradle
dependencies {
androidTestImplementation "pl.codesamurai.latte:core:{LATEST_VERSION}"
androidTestImplementation "pl.codesamurai.latte:core-ktx:{LATEST_VERSION}"
}
```For current `{LATEST_VERSION}` please check GitHub's `releases` tab.
## Usage
Matching `View` of a specific type:
```kotlin
val viewMatcher: (View) -> Boolean = { /* matching view's conditions */ }match(viewMatcher)
```Ensuring that no matching `View`s exists in the view hierarchy:
```kotlin
val viewMatcher: (View) -> Boolean = { /* matching view's conditions */ }noMatch(viewMatcher)
```Performing actions with matched `View`:
```kotlin
val viewMatcher: (View) -> Boolean = { /* matching view's conditions */ }match(viewMatcher) {
// actions performed on a view(s)
}
```Verifying `View`'s expected state:
```kotlin
val viewMatcher: (View) -> Boolean = { /* matching view's conditions */ }match(viewMatcher) {
verify {
// assertion(s) performed on a view(s)
}
}
```or
```kotlin
// GIVEN
val viewMatcher: (View) -> Boolean = { /* matching view's conditions */ }// WHEN
val matching = match(viewMatcher) {
// actions performed on a view(s)
}// THEN
matching.verify {
// assertion(s) performed on a view(s)
}
```Sample use case matching `EditText` with an id `R.id.edit1`:
```kotlin
// GIVEN
val editTextWithId: (EditText) -> Boolean = { id == R.id.edit1 }// WHEN
val matching = match(editTextWithId) {
tap()
type("123")
}// THEN
matching.verify {
isFocused && hasText("123")
}
```## Sample
Inside this repository there's a sample app module with a couple of UI tests,
showing how to write those using this framework.To run all the tests:
```shell
./gradlew :sample:pixel2DebugAndroidTest
```