- Notifications
You must be signed in to change notification settings - Fork23
Core library for the Ruby client
License
appium/ruby_lib_core
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
This library is a Ruby client for Appium. The gem is available viaappium_lib_core.
This library wrapsselenium-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.
- https://www.rubydoc.info/gems/appium_lib_core
- You can find working API examples in test code,test/functional
- Appium 2.0
- https://appium.github.io/appium/docs/en/2.0/ (Not completed yet)
Please read[5.0.0]
section inCHANGELOG
Run unit tests which check each method and command, URL, using the webmock.
$ bundle install$ bundleexec parallel_test test/unit/
or
$ bundle install$ bundleexec 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 --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
- You should pre-installUICatalog in iOS with a particular
bundleId
- Set the
bundleId
instead ofapp
intest/test_helper#ios
- Set the
# 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
- Create iPhone simulators named
iPhone Xs Max- 8100
andiPhone Xs Max - 8101
- Run iOS functional tests with below command
$ PARALLEL=1 bundle exec parallel_test test/functional/ios -n 2
- Runs on CI environment (on Azure)
- Non
IGNORE_VERSION_SKIP
orIGNORE_VERSION_SKIP=true
runs all tests ignoringskip
them by Appium versions IGNORE_VERSION_SKIP=false
skips the following tests if the Appium version is lower than the requirement
- Non
$ IGNORE_VERSION_SKIP=true CI=true bundle exec rake test:func:android
- Launch the Appium server locally.
- Run the following script.
test.rb
require'rubygems'require'appium_lib_core'opts={capabilities:{# Append capabilitiesplatformName:'ios',platformVersion:'11.0',deviceName:'iPhone Simulator',# app: '/path/to/MyiOS.app', # Without 'app' capability, an appium session starts with the home screenautomationName:'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 intest/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 sessionattached_driver= ::Appium::Core::Driver.attach_to@driver.session_id,url:'http://127.0.0.1:4723',automation_name:'XCUITest',platform_name:'ios'assertattached_driver.session_id ==@driver.session_idattached_driver.page_source
ReadAppium/Core/Driver to catch up with available capabilities.Capabilities affect only ruby_lib isAppium/Core/Options.
An example to define a customer listener withSelenium::WebDriver::Support::AbstractEventListener
classCustomListener < ::Selenium::WebDriver::Support::AbstractEventListener//somethingendcapabilities:{platformName::ios,platformVersion:'11.0',deviceName:'iPhone Simulator',automationName:'XCUITest',app:'/path/to/MyiOS.app'},appium_lib:{listener:CustomListener.new}@core=Appium::Core.forcapabilities:capabilities,appium_lib:appium_lib@core.start_driver
Useappium_thor to release this gem.
$ thor bump# bumpy,$ thor release
- Fork it (https://github.com/appium/ruby_lib_core/fork )
- Create your feature branch (git checkout -b my-new-feature)
- Commit your changes (git commit -am 'Add some feature')
- Push to the branch (git push origin my-new-feature)
- Create new Pull Request
Apache License v2
About
Core library for the Ruby client