This library is a Ruby client for Appium. The gem is available via appium_lib_core.
This library wraps selenium-webdriver and adapts WebDriver APIs for Appium. ruby_lib calls all of Appium/Selenium related APIs via this core library. It works instance based driver.
Please read [5.0.0]
section in CHANGELOG
Run unit tests which check each method and command, URL, using the webmock.
$ bundle install
$ bundle exec parallel_test test/unit/
or
$ bundle install
$ bundle exec rake test:unit
Run functional tests which require the Appium server and real device, Simulator/Emulator.
Start Appium server (Appium 2.0 base)
$ npm install --location=global appium
$ appium driver install xcuitest
$ appium driver install uiautomator2 # etc
$ appium --base-path=/wd/hub --relaxed-security # To run all tests in local
Conduct tests
$ bundle install
$ rake test:func:android # Andorid, uiautomator2
$ APPIUM_DRIVER=espresso rake test:func:android # Andorid, uiautomator2
$ rake test:func:ios # iOS
bundleId
bundleId
instead of app
in test/test_helper#ios
# Create derivedDataPath in "/tmp/#{org_id}" and reuse xctestrun in the directory
$ REAL=true BUNDLE_ID='target-bundleid' WDA_BUNDLEID="ios.appium.WebDriverAgentRunner" ORG_ID=XXXXXXX rake test:func:ios
# Run with xcconfig file. The template is in 'test/functional/ios/temp.xcconfig'
# The PROVISIONING_PROFILE is in '~/Library/MobileDevice/Provisioning\ Profiles/'
$ REAL=true XCODE_CONFIG_FILE='/path/to/xcconfig' ORG_ID=XXXXXXX rake test:func:ios
# Generate 3 emulators. Running 3 emulators require much machine power.
# It requires an image which is for Google Play and x86 CPU architecture's image.
$ bundle exec rake android:gen_device
$ PARALLEL=1 bundle exec parallel_test test/functional/android -n 3
iPhone Xs Max- 8100
and iPhone Xs Max - 8101
$ PARALLEL=1 bundle exec parallel_test test/functional/ios -n 2
IGNORE_VERSION_SKIP
or IGNORE_VERSION_SKIP=true
runs all tests ignoring skip
them by Appium versionsIGNORE_VERSION_SKIP=false
skips the following tests if the Appium version is lower than the requirement$ IGNORE_VERSION_SKIP=true CI=true bundle exec rake test:func:android
test.rb
require 'rubygems'
require 'appium_lib_core'
opts = {
capabilities: { # Append capabilities
platformName: 'ios',
platformVersion: '11.0',
deviceName: 'iPhone Simulator',
# app: '/path/to/MyiOS.app', # Without 'app' capability, an appium session starts with the home screen
automationName: 'XCUITest'
},
appium_lib: {
wait: 30
}
}
@core = Appium::Core.for(opts) # create a core driver with `opts`
@driver = @core.start_driver
# Launch iPhone Simulator and `MyiOS.app`
@driver.find_element(:accessibility_id, 'some accessibility') # find an element
Run the script
# shell 1
$ appium --log-level warn:error # show only warning and error logs
# shell 2
$ ruby test.rb
Appium::Core.for documentation has more example to build a new driver instance.
More examples are in test/functional
As of version 5.8.0, the client can attach to an existing session. The main purpose is for debugging.
# @driver is the driver instance of an existing session
attached_driver = ::Appium::Core::Driver.attach_to @driver.session_id, url: 'http://127.0.0.1:4723/wd/hub', automation_name: 'XCUITest', platform_name: 'ios'
assert attached_driver.session_id == @driver.session_id
attached_driver.page_source
Read Appium/Core/Driver to catch up with available capabilities. Capabilities affect only ruby_lib is Appium/Core/Options.
An example to define a customer listener with Selenium::WebDriver::Support::AbstractEventListener
class CustomListener < ::Selenium::WebDriver::Support::AbstractEventListener
// something
end
capabilities: {
platformName: :ios,
platformVersion: '11.0',
deviceName: 'iPhone Simulator',
automationName: 'XCUITest',
app: '/path/to/MyiOS.app'
},
appium_lib: {
listener: CustomListener.new
}
@core = Appium::Core.for capabilities: capabilities, appium_lib: appium_lib
@core.start_driver
Use appium_thor to release this gem.
$ thor bump # bumpy,
$ thor release
Apache License v2