What is Kolibrium?
Kolibrium is a Kotlin-first library that wraps both Selenium and Appium with a unified, type-safe API.
Selenium and Appium tests in JVM projects tend to be verbose, error-prone, and diverge in patterns - browser tests look nothing like mobile tests, waits are bolted on as an afterthought, and page/screen objects require significant boilerplate. Kolibrium addresses this with:
- One mental model for browser and mobile.
seleniumTest {}andandroidTest {}/iosTest {}share the same three-phase lifecycle (setUp→block→tearDown), the same Page/Screen Object pattern, and the same locator delegate system. An engineer who knows one module knows the other. - Compile-time safety over runtime discovery. Element locators are property delegates with typed strategies - misconfigured locators, invalid wait configs, and wrong argument formats are caught at compile time, not when a test flakes at 2 AM.
- DSL-driven configuration. Browser options, arguments, waits, and driver creation are configured through Kotlin DSLs with sensible defaults. No builder chains, no stringly-typed option maps.
- Smart waits built into locators. Every element lookup has configurable polling and timeout via
WaitConfigpresets (Default,Quick,Patient) or custom configs - no separateWebDriverWaitceremony. - Composable decorator framework. Cross-cutting concerns like element highlighting, slow-motion execution, logging, and state caching are decorators that compose transparently over any
SearchContext.
Kolibrium uses modern Kotlin features where they reduce friction - context parameters, sealed hierarchies, value classes - while keeping the call-site API simple enough that Java-background engineers read it at a glance.
Modules
selenium: Core WebDriver functionality including Page Object base classes, theseleniumTestharness, element locator delegates, and an extensible decorator frameworkappium: Appium-based mobile testing with Screen abstractions, locator delegates, and capabilities configuration for Android and iOS