NOTE: This boilerplate is for Webdriver V5, if you need a boilerplate for V4 please click here
Boilerplate project to run Appium tests together with WebdriverIO for:
- iOS/Android Native Apps
- iOS/Android Hybrid Apps
- Android Chrome and iOS Safari browser (check here)
This boilerplate uses the WebdriverIO native demo app which can be found here. The releases can be found and downloaded here. Before running tests, please create a
./apps
directory, download the app and move the zip files into that directory
Note: This boilerplate only handles local execution on 1 em/simulator at a time, not parallel execution. For more info about that Google on setting up a grid with Appium.
This boilerplate is currently based on:
- WebdriverIO:
4.13.#
- Appium:
1.9.0
Updates to the latest versions will come, see TODO
See Installing Appium on a local machine
To setup your local machine to use an Android emulator and an iOS simulator see Setting up Android and iOS on a local machine
Choose one of the following options:
-
Clone the git repo —
git clone https://github.com/webdriverio/appium-boilerplate.git
-
Then copy the files to your project directory (all files in
/tests
and thewdio.conf
-files in theconfig
-folder) -
Merge project dev dependencies with your projects dev dependencies in your
package.json
-
merge the scripts to your
package.json
scripts -
Run the tests for iOS with
npm run ios.app
and for Android withnpm run android.app
This boilerplate uses a specific config for iOS and Android, see configs and are based on wdio.shared.conf.js
.
This shared config holds all the defaults so the iOS and Android configs only need to hold the capabilities and specs that are needed for running on iOS and or Android (app or browser).
The locator strategy for this boilerplate is to use accessibilityID
's, see also the WebdriverIO docs or this newsletter on AppiumPro.
accessibilityID
's make it easy to script once and run on iOS and Android because most of the apps already have some accessibilityID
's.
If accessibilityID
's can't be used and for example only XPATH is only available then the following setup could be used to make cross-platform selectors
const SELECTORS = {
WEB_VIEW_SCREEN: browser.isAndroid
? '*//android.webkit.WebView'
: '*//XCUIElementTypeWebView',
};
Mobile web automation is almost the same as writing tests for desktop browsers. The only difference can be found in the configuration that needs to be used. Click here to find the config for iOS Safari and here for Android Chrome. For Android be sure that the lastest version of Chrome is installed, see also here.
For this boilerplate the testcases from the jasmine-boilerplte, created by Christian Bromann, are used.
This boilerplate now also provides a setup for testing with the Real Device Cloud (RDC) of Sauce Labs. Please check the SauceLabs-folder to see the setup for iOS and Android.
With the latest version of WebdriverIO (
5.4.13
and higher) the iOS and Android config holds:
Make sure you install the latest version of the @wdio/sauce-service
with
$ npm install --save-dev @wdio/sauce-service
and add services: ['sauce'],
to the config. If no region
is provided it will automatically default to the US-RDC cloud.
If you provide region: 'us'
or region: 'eu'
it will connect to the US or the EU RDC cloud
Config
- On your SauceLab Native apps page, ensure to upload the WDIO Demo app
- Ensure to set config in ./config/saucelabs/wdio.ios.rdc.app.conf.js
testobject_test_name
is the name you just set as "app name" in the previous step, by defaultwdio-demo-app-test
testobject_app_id
can be obtained like thisdeviceName
can only beiPhone_6_free
if you are currently within the free trial of SauceLabs
Scripts
There are 2 scripts that can be used, see the package.json
, to execute the tests in the cloud:
// For iOS
$ npm run ios.sauce.rdc.app
// For Android
$ npm run android.sauce.rdc.app
See FAQ
See Tips and Tricks