Point at a screen
live("name") tells Tiber what's currently on screen. Everything you write after that talks to whatever you just named.
Tiber is a small interpreted language for automating Android UIs. Point it at whatever's on screen, chain the taps you want, and run it straight against a device or emulator.
live("clock") clock.press.button("tab_menu_alarm") [add new] live("alarms") alarms.press.button("fab") [set hour] live("hourset") hourset.press.button("2 o'clock") [set minute] hourset.press.button("material_minute_tv") live("minutes") minutes.press.button("30 minutes") minutes.press.button("material_timepicker_ok_button")
No hidden framework underneath it. These are the pieces you just saw in that alarm example, and there isn't much more to the language than this.
live("name") tells Tiber what's currently on screen. Everything you write after that talks to whatever you just named.
Actions read left to right: clock.press.button("tab_menu_alarm") — target, action, then the element it happens to.
Bracket labels like [set hour] let you drop little checkpoints into your flow—then run from one, stop before another, or jump straight into the bit you actually want to test.
No build step. Tiber reads a script top to bottom and runs it straight against whatever session is live.
Tiber talks to Android devices and emulators through ADB. There's no iOS or web build, and no giant built-in action library — it stays small on purpose.
Tiber isn't a no-setup tool. It runs on your dev machine and needs a real or virtual Android device to talk to.
Grab Tiber, wire up ADB, and run the alarm example above in a few minutes.