All Projects → michallaskowski → Kuiks

michallaskowski / Kuiks

Licence: apache-2.0
Kotlin Multiplatform based testing framework for Android and iOS

Programming Languages

kotlin
9241 projects

Labels

Projects that are alternatives of or similar to Kuiks

Compose
Nice and simple DSL for Espresso Compose UI testing in Kotlin
Stars: ✭ 56 (+47.37%)
Mutual labels:  espresso
Android Gif Example
Gif RecyclerView in MVP using Dagger 2 + Retrofit 2 + Moshi + RxJava 2 + Glide 4 with JUnit and Espresso tests written in Kotlin + Kotlin DSL!
Stars: ✭ 334 (+778.95%)
Mutual labels:  espresso
Katasuperheroesandroid
Super Heroes Kata for Android Developers. The main goal is to practice UI Testing.
Stars: ✭ 680 (+1689.47%)
Mutual labels:  espresso
ESPressIoT
This project covers somewhat advances features for an espresso machine controller.
Stars: ✭ 31 (-18.42%)
Mutual labels:  espresso
Moviehub
Showcases popular movies, tv shows, and people from The Movie Database
Stars: ✭ 325 (+755.26%)
Mutual labels:  espresso
Espressoexamples
A collection of examples demonstrating different techniques for automated testing with Espresso.
Stars: ✭ 396 (+942.11%)
Mutual labels:  espresso
FragmentTestRule
JUnit Rule to test a Fragment in isolation
Stars: ✭ 102 (+168.42%)
Mutual labels:  espresso
Blockchain Tracker
A blockchain market tracking app. Example implementation of reactive clean architecture and testing.
Stars: ✭ 30 (-21.05%)
Mutual labels:  espresso
Cortado
Android Espresso made more fluent ☕️
Stars: ✭ 332 (+773.68%)
Mutual labels:  espresso
Kotlin Android Starter
[Kotlin Android] Kotlin Android starter based MVP/Dagger2/RxJava2/Robolectric/Espresso/Mockito. It provides a generator to fast create a Kotlin Android project.
Stars: ✭ 589 (+1450%)
Mutual labels:  espresso
Android Jetpack Playground
Pet project for cutting edge Android development with Jetpack
Stars: ✭ 266 (+600%)
Mutual labels:  espresso
Clean Mvvm Archcomponents
👽 Android app consuming Star Wars API.Built with clean architecture ,MVVM pattern, Koin , Coroutines + Flows ,Architecture Components, Data Binding , Firebase , Unit/UI Tests ,Motion Layout
Stars: ✭ 285 (+650%)
Mutual labels:  espresso
Android Starter
[Android Architecture] Android starter based on MVP/Dagger2/RxJava2/Robolectric/Espresso/Mockito. It provides a generator to fast create a Android template project.
Stars: ✭ 522 (+1273.68%)
Mutual labels:  espresso
espresso-robot-pattern-sample
Espresso Robot Pattern Sample with Spoon Integration
Stars: ✭ 37 (-2.63%)
Mutual labels:  espresso
Okreplay
📼 Record and replay OkHttp network interaction in your tests.
Stars: ✭ 697 (+1734.21%)
Mutual labels:  espresso
paybill-manager
Your personal finance manager
Stars: ✭ 46 (+21.05%)
Mutual labels:  espresso
Ideasnprojects
That Project's Source Code
Stars: ✭ 344 (+805.26%)
Mutual labels:  espresso
Espressopp
Main ESPResSo++ repository
Stars: ✭ 33 (-13.16%)
Mutual labels:  espresso
Androidtestingtutorial
Getting started with Espresso Unit Testing
Stars: ✭ 10 (-73.68%)
Mutual labels:  espresso
Archapp
Simple Android app to show how to design a multi-modules MVVM Android app (fully tested)
Stars: ✭ 551 (+1350%)
Mutual labels:  espresso

Kuiks

What is it

Kuiks is a framework for automated UI tests. It uses Kotlin Multiplatform to create common interface for Espresso and XCTest's UI invocations.
You could say it is similar to Appium, as the end goal is the same - write tests for many platforms, once. But, Appium relies on WebDriver protocol to provide run-time invocations on chosen UI testing drivers (as of now, by default Espresso on Android and XCUITest on iOS).

Kuiks, thanks to Kotlin Multiplatform, provides compile time bridge to the same native UI drivers, and it does not use WebDriver protocol, or any other HTTP protocol, proxies or servers in between. Meaning, you can run your tests directly from your IDE.

When it can be useful

Kuiks is still in an early development phase, and can change a lot. The goal is to have the most reliable, and fastest UI tests possible. With current implementation it is possible to test (or try to) anything that Espresso and XCUITest can test, which are Android, iOS, tvOS, and macOS apps. Currently development is focused on iOS and Android apps, as having similar apps for those platforms is most common.

How do I use it to test my app

Artifacts are not yet published to any Maven repository. This can and will happen, if there is anyone interested. Feel free to open an issue if you need it.

How to build and launch sample tests

Clone the repo first. The samples contain simple button and lists. RecyclerView on Android, and UITableViewController on iOS. There are also tests using those UI elements.

Android

  • Open Android Studio.
  • Open the project at the root of cloned repository.
  • Make sure you have at least one emulator.
  • Run tests from sample-android project.
    One of: InheritedTests, InstrumentedTests or TestsFactoryTests.

iOS

As with anything that is used for development for Apple's devices, you need to do it on macOS.

  • Make sure you have Xcode installed, under /Applications/Xcode.app, or you have /Applications/Xcode.app symlink pointing to Xcode installation. Some people, including me, have multiple Xcodes installed, and none under default Xcode.app name.
    (xctest.def cinterop file for XCUITest is a static file, and right now xcode-select -p is not used to set Xcode's installation path before invoking compilation. Not sure yet how it would even work for published libraries.)
    Tested with Xcode11.3 symlinked to /Applications/Xcode.app
  • Open sample-ios/SampleiOS.xcodeproj project.
  • Run tests on SampleiOS scheme. SampleiOSUITests uses a custom DelegatingTestBase to run tests from sharedTests.TextExample class.

Contributing

Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.
Please make sure to update samples and tests as appropriate.

Roadmap

  • Add more native controls and cases into samples, for example date/time picker.
  • Add cases where Android and iOS samples have different flow or UI, to make sure differences between platforms can be handled in shared tests, on platform level.
  • Smarter after more complicated cases revisit current public API.
  • Publish to a Maven repository.
  • Gather feedback.
  • Find contributors more familiar with Android, Espresso, Kotlin and Gradle.
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].