AppiumLibCore
Travis, Ubuntu | Azure, Windows and functional tests |
---|---|
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.
Documentation
Related library
How to start
Run tests
Unit Tests
Run unit tests which check each method and commands, URL, using the webmock.
$ bundle install
$ bundle exec parallel_test test/unit/
Functional Tests
Run functional tests which require the Appium server and real device, Simulator/Emulator.
Start Appium server
$ npm install -g appium opencv4nodejs $ appium --relaxed-security # To run all tests in local
Conduct tests
$ bundle install $ rake test:func:android # Andorid, uiautomator2 $ AUTOMATION_NAME_DROID=espresso rake test:func:android # Andorid, uiautomator2 $ rake test:func:ios # iOS
Real device for iOS
- You should pre-install UICatalog 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
Run parallel tests with parallel_tests gem
Android
# 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
iOS
- 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
CI
- 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
Run a test case
- Launch the Appium server locally.
- Run the following script.
test.rb
require 'rubygems' require 'appium_lib_core' opts = { desired_capabilities: { # or { caps: {....} } platformName: :ios, platformVersion: '11.0', deviceName: 'iPhone Simulator', automationName: 'XCUITest', app: '/path/to/MyiOS.app' }, 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
More examples are in test/functional
Capabilities
Read Appium/Core/Driver to catch up with available capabilities. Capabilities affect only ruby_lib is Appium/Core/Options.
Development
Release
Use appium_thor to release this gem.
$ thor bump # bumpy,
$ thor release
Contribution
- 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
License
Apache License v2