Skip to content


Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time


Gem Version


Helper methods for writing cross platform (iOS, Android) tests in Ruby using Appium. Note that user waits should not exceed 120 seconds if they're going to run on Sauce Labs.

Recommend to use ruby_lib_core, which works as a Ruby client for Appium. ruby_lib wraps the core library with some additional helpful methods, but some of wrapped methods may have unexpected complexity. Ordinary, ruby_lib worked with class driver, $driver, mainly. We can avoid the class driver with current ruby_lib, but if you'd like to implement your test cases based on instance driver, @driver, you can consider using ruby_lib_core first.



Ruby Lib and Appium

  • Ruby library version over 12.0.0 is based on Selenium v4
  • Ruby library version over 9.8.0 requires Appium over 1.8
  • Ruby library version under 9.7.5 can work with Appium under 1.7

Start appium server

Appium 2

$ npm install -g appium@next
$ appium driver install xcuitest  # proper driver name to install
$ appium server

Note Please set server_url properly like the below since the appium 2 changed the default WebDriver URL to without /wd/hub to follow W3C.

 opts = {
   caps: {
     automationName: 'xcuitest'
     platformName: 'ios',
     app: '/path/to/'
   appium_lib: {
     server_url: ''
 appium_driver =

Or please start the appium server with appium server --base-path=/wd/hub

Appium 1

$ npm install -g appium
$ appium

Install / Upgrade

gem install appium_lib

Sauce Labs env vars

  • SAUCE_USERNAME Sauce username
  • SAUCE_ENDPOINT Alternative Sauce Appium Server endpoint (only use if directed)

(Note: If these variables are set, all tests will use Sauce Labs unless over-ridden in configuration.)


Related libraries

  • ruby_lib_core: Bridged commands, WebDriver dependencies
    • We add new endpoints for Appium in the core library, and ruby_lib call the methods.
  • ruby_console: Appium Ruby Console
  • appium_capybara: Gem enabling appium support in capybara

Load Pry

Pry.config.pager = false is set if you have no .pryrc files and Pry is defined.

Run tests in parallel

This repository has examples for running tests in parallel. Read ios_tests to see them.


How to add new commands for driver

How to add new helpful methods

  • Add the new methods in this library