mobile automation made awesome · mobile automation made awesome jonathan lipps • director of...

40
mobile automation made awesome Jonathan Lipps Director of Ecosystem & Integrations Sauce Labs @AppiumDevs @jlipps @saucelabs jQueryUK Workshop Oxford, UK May 16 2014

Upload: others

Post on 08-Aug-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: mobile automation made awesome · mobile automation made awesome Jonathan Lipps • Director of Ecosystem & Integrations • Sauce Labs @AppiumDevs • @jlipps • @saucelabs

mobile automation made awesome

Jonathan Lipps • Director of Ecosystem & Integrations • Sauce Labs

@AppiumDevs • @jlipps • @saucelabs

jQueryUK Workshop • Oxford, UKMay 16 2014

Page 2: mobile automation made awesome · mobile automation made awesome Jonathan Lipps • Director of Ecosystem & Integrations • Sauce Labs @AppiumDevs • @jlipps • @saucelabs

Ecosystem &Integrations

Project Lead &Architect

Unit/Functional Mobile Testing with Appium and Sauce Labs

Jonathan Lipps • Director of Ecosystem & Integrations • Sauce Labs

@AppiumDevs • @jlipps • @saucelabs

http://appium.io/jqueryuk.pdf

Page 3: mobile automation made awesome · mobile automation made awesome Jonathan Lipps • Director of Ecosystem & Integrations • Sauce Labs @AppiumDevs • @jlipps • @saucelabs

appium introduction

Page 4: mobile automation made awesome · mobile automation made awesome Jonathan Lipps • Director of Ecosystem & Integrations • Sauce Labs @AppiumDevs • @jlipps • @saucelabs

The Dev Cycle ofOptimal Happiness[ ]

Page 5: mobile automation made awesome · mobile automation made awesome Jonathan Lipps • Director of Ecosystem & Integrations • Sauce Labs @AppiumDevs • @jlipps • @saucelabs

appium is the cross-platform solution for native and hybrid mobile automation

Page 6: mobile automation made awesome · mobile automation made awesome Jonathan Lipps • Director of Ecosystem & Integrations • Sauce Labs @AppiumDevs • @jlipps • @saucelabs

PhilosophyR1. Test the same app you submit to the marketplaceR2. Write your tests in any language, using any frameworkR3. Use a standard automation specification and APIR4. Build a large and thriving open-source community effort

Page 7: mobile automation made awesome · mobile automation made awesome Jonathan Lipps • Director of Ecosystem & Integrations • Sauce Labs @AppiumDevs • @jlipps • @saucelabs
Page 8: mobile automation made awesome · mobile automation made awesome Jonathan Lipps • Director of Ecosystem & Integrations • Sauce Labs @AppiumDevs • @jlipps • @saucelabs

appium architecture

Page 9: mobile automation made awesome · mobile automation made awesome Jonathan Lipps • Director of Ecosystem & Integrations • Sauce Labs @AppiumDevs • @jlipps • @saucelabs

Automation OrchestraApple Instruments & UIAutomation for iOSGoogle UiAutomator for Android (4.2.1 up)Selendroid for older AndroidWebDriver interface

Page 10: mobile automation made awesome · mobile automation made awesome Jonathan Lipps • Director of Ecosystem & Integrations • Sauce Labs @AppiumDevs • @jlipps • @saucelabs

appium is an HTTP server that creates and handles WebDriver sessions

Page 11: mobile automation made awesome · mobile automation made awesome Jonathan Lipps • Director of Ecosystem & Integrations • Sauce Labs @AppiumDevs • @jlipps • @saucelabs

appium extends the WebDriver protocol with mobile-specific behaviors

Page 12: mobile automation made awesome · mobile automation made awesome Jonathan Lipps • Director of Ecosystem & Integrations • Sauce Labs @AppiumDevs • @jlipps • @saucelabs

appium setup

Page 13: mobile automation made awesome · mobile automation made awesome Jonathan Lipps • Director of Ecosystem & Integrations • Sauce Labs @AppiumDevs • @jlipps • @saucelabs

Requirements (1/2)• Mac (10.8/10.9)• Android automation works on PC/Linux too

• Node >= 0.10

• Xcode 5.1 with CLI tools and iOS 7.1

Page 14: mobile automation made awesome · mobile automation made awesome Jonathan Lipps • Director of Ecosystem & Integrations • Sauce Labs @AppiumDevs • @jlipps • @saucelabs

Requirements (2/2)• Android Developer Tools >= 22• http://developer.android.com/sdk/index.html

• mv to /usr/local/adt

• export ANDROID_HOME=/usr/local/adt/sdk

• add (.bashrc, .zshrc, etc):export PATH=”$PATH:$ANDROID_HOME/tools:$ANDROID_HOME/platform-tools”

Page 16: mobile automation made awesome · mobile automation made awesome Jonathan Lipps • Director of Ecosystem & Integrations • Sauce Labs @AppiumDevs • @jlipps • @saucelabs

Make an Android Device• android

• Check ‘Intel x86 Atom System Image’ - Android (4.4)

• Click ‘Install 1 package...’

• Tools > Manage AVDs

• New...

Page 17: mobile automation made awesome · mobile automation made awesome Jonathan Lipps • Director of Ecosystem & Integrations • Sauce Labs @AppiumDevs • @jlipps • @saucelabs

• AVD Name: workshop

• Device: Nexus S

• Target: Android 4.4

• CPU: Intel/Atom

• Skin: hw controls

• Host GPU

Create the Image

Page 18: mobile automation made awesome · mobile automation made awesome Jonathan Lipps • Director of Ecosystem & Integrations • Sauce Labs @AppiumDevs • @jlipps • @saucelabs

Launch AVD• In a new terminal window:• emulator @workshop -netfast

• Go through the new device tour

• $ANDROID_HOME/sdk/tools/emulator @workshop -netfast (without env)

Page 19: mobile automation made awesome · mobile automation made awesome Jonathan Lipps • Director of Ecosystem & Integrations • Sauce Labs @AppiumDevs • @jlipps • @saucelabs

Get the workshop code• git clone https://github.com/jlipps/jqueryuk-workshop-2014.git

• cd jqueryuk-workshop-2014

Page 20: mobile automation made awesome · mobile automation made awesome Jonathan Lipps • Director of Ecosystem & Integrations • Sauce Labs @AppiumDevs • @jlipps • @saucelabs

Install dependencies• npm install -g appium # no sudo!

• npm install -g cordova

• npm install -g mocha

• npm install .

Page 21: mobile automation made awesome · mobile automation made awesome Jonathan Lipps • Director of Ecosystem & Integrations • Sauce Labs @AppiumDevs • @jlipps • @saucelabs

unit tests

Page 22: mobile automation made awesome · mobile automation made awesome Jonathan Lipps • Director of Ecosystem & Integrations • Sauce Labs @AppiumDevs • @jlipps • @saucelabs

Run local server• node server.js

• # visit http://localhost:8081

Page 23: mobile automation made awesome · mobile automation made awesome Jonathan Lipps • Director of Ecosystem & Integrations • Sauce Labs @AppiumDevs • @jlipps • @saucelabs
Page 24: mobile automation made awesome · mobile automation made awesome Jonathan Lipps • Director of Ecosystem & Integrations • Sauce Labs @AppiumDevs • @jlipps • @saucelabs

Run QUnit tests• http://localhost:8081/test.html

• # moviesearch/www/test.html

• # moviesearch/www/test.js

Page 25: mobile automation made awesome · mobile automation made awesome Jonathan Lipps • Director of Ecosystem & Integrations • Sauce Labs @AppiumDevs • @jlipps • @saucelabs

Set up Sauce Labs env vars• http://saucelabs.com/signup/plan/free

• http://saucelabs.com/account

• # add to .bashrc or equivalent

• export SAUCE_USERNAME=”myusername”

• export SAUCE_ACCESS_KEY=”xxxxxxxx”

Page 26: mobile automation made awesome · mobile automation made awesome Jonathan Lipps • Director of Ecosystem & Integrations • Sauce Labs @AppiumDevs • @jlipps • @saucelabs

Get Sauce Connect• https://saucelabs.com/docs/connect

• cp ~/Downloads/sc-4.2-osx/bin/sc \

/usr/local/bin

Page 27: mobile automation made awesome · mobile automation made awesome Jonathan Lipps • Director of Ecosystem & Integrations • Sauce Labs @AppiumDevs • @jlipps • @saucelabs

Start Sauce Connect• sc -u $SAUCE_USERNAME -k $SAUCE_ACCESS_KEY

Page 28: mobile automation made awesome · mobile automation made awesome Jonathan Lipps • Director of Ecosystem & Integrations • Sauce Labs @AppiumDevs • @jlipps • @saucelabs

Run JS unit tests on Sauce Labs• ./test/jsunit.sh

• http://saucelabs.com/tests

Page 29: mobile automation made awesome · mobile automation made awesome Jonathan Lipps • Director of Ecosystem & Integrations • Sauce Labs @AppiumDevs • @jlipps • @saucelabs

appium test model

Page 30: mobile automation made awesome · mobile automation made awesome Jonathan Lipps • Director of Ecosystem & Integrations • Sauce Labs @AppiumDevs • @jlipps • @saucelabs

Start/stop a session

Page 31: mobile automation made awesome · mobile automation made awesome Jonathan Lipps • Director of Ecosystem & Integrations • Sauce Labs @AppiumDevs • @jlipps • @saucelabs

Find & Interact with Elements

Page 32: mobile automation made awesome · mobile automation made awesome Jonathan Lipps • Director of Ecosystem & Integrations • Sauce Labs @AppiumDevs • @jlipps • @saucelabs

Automate a WebView

Page 33: mobile automation made awesome · mobile automation made awesome Jonathan Lipps • Director of Ecosystem & Integrations • Sauce Labs @AppiumDevs • @jlipps • @saucelabs

appium tests

Page 34: mobile automation made awesome · mobile automation made awesome Jonathan Lipps • Director of Ecosystem & Integrations • Sauce Labs @AppiumDevs • @jlipps • @saucelabs

Build & run sample apps• ./go_ios.sh

• ./go_android.sh

Page 35: mobile automation made awesome · mobile automation made awesome Jonathan Lipps • Director of Ecosystem & Integrations • Sauce Labs @AppiumDevs • @jlipps • @saucelabs

Launch Appium• sudo authorize_ios

• appium

Page 36: mobile automation made awesome · mobile automation made awesome Jonathan Lipps • Director of Ecosystem & Integrations • Sauce Labs @AppiumDevs • @jlipps • @saucelabs

Moment of truth...• mocha -t 90000 -R spec test/ios.js

• mocha -t 90000 -R spec test/android.js

Page 37: mobile automation made awesome · mobile automation made awesome Jonathan Lipps • Director of Ecosystem & Integrations • Sauce Labs @AppiumDevs • @jlipps • @saucelabs

Upload app to Sauce Storage• ./test/upload.sh

• # or use pre-uploaded app url

Page 38: mobile automation made awesome · mobile automation made awesome Jonathan Lipps • Director of Ecosystem & Integrations • Sauce Labs @AppiumDevs • @jlipps • @saucelabs

Run Appium tests on Sauce• SAUCE=1 mocha -t 90000 -R spec test/ios.js

Page 39: mobile automation made awesome · mobile automation made awesome Jonathan Lipps • Director of Ecosystem & Integrations • Sauce Labs @AppiumDevs • @jlipps • @saucelabs

Questions?

http://appium.iohttps://github.com/appium/appium

@AppiumDevs • @jlipps • @saucelabs

Page 40: mobile automation made awesome · mobile automation made awesome Jonathan Lipps • Director of Ecosystem & Integrations • Sauce Labs @AppiumDevs • @jlipps • @saucelabs

Thanks!

http://appium.iohttps://github.com/appium/appium

@AppiumDevs • @jlipps • @saucelabs