Built for Android, on ADB

Write a few lines.
Watch your app drive itself.

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")

What a Tiber script actually looks like

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.

Point at a screen

live("name") tells Tiber what's currently on screen. Everything you write after that talks to whatever you just named.

Chain what happens next

Actions read left to right: clock.press.button("tab_menu_alarm") — target, action, then the element it happens to.

Label your steps

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.

Interpreted, line by line

No build step. Tiber reads a script top to bottom and runs it straight against whatever session is live.

Android only, on purpose

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.

Before you run anything

Tiber isn't a no-setup tool. It runs on your dev machine and needs a real or virtual Android device to talk to.

ADB (Android Debug Bridge) An AVD or a connected device An emulator, sometimes

See exactly what you'll need →

Ready to make your app tap itself?

Grab Tiber, wire up ADB, and run the alarm example above in a few minutes.