Slide 1

Slide 1 text

Mobile'Automation'Made' '' Awesome . Cassian'Lup'•'Senior'UI'Developer'•'3Pillar'Global'•'' '''''/'cassi.lup Part'II

Slide 2

Slide 2 text

Cassian'Lup'•'Senior'UI'Developer'•'3Pillar'Global'•'' '''''/'cassi.lup Where'Were'We?

Slide 3

Slide 3 text

Cassian'Lup'•'Senior'UI'Developer'•'3Pillar'Global'•'' '''''/'cassi.lup What'is'Appium?

Slide 4

Slide 4 text

Cassian'Lup'•'Senior'UI'Developer'•'3Pillar'Global'•'' '''''/'cassi.lup • HTTP server written in node.js • creates and handles multiple WebDriver sessions • for different platforms like iOS and Android What'is'Appium?

Slide 5

Slide 5 text

Cassian'Lup'•'Senior'UI'Developer'•'3Pillar'Global'•'' '''''/'cassi.lup Tests Apple Instruments JavaScript Google UiAutomator Java WD What'is'Appium?

Slide 6

Slide 6 text

Cassian'Lup'•'Senior'UI'Developer'•'3Pillar'Global'•'' '''''/'cassi.lup Selenium'WebDriver'—'JSON'Wire'Protocol Appium Capabilities: • Tap • Fill in forms
 (type text, selects, radios, checkboxes) • Gestures • Multitouch

Slide 7

Slide 7 text

Cassian'Lup'•'Senior'UI'Developer'•'3Pillar'Global'•'' '''''/'cassi.lup Selenium'WebDriver'—'JSON'Wire'Protocol POST /session/:sessionId/element/:id/click Click on an element. t POST /session/:sessionId/touch/scroll Scroll on the touch screen using finger based motion events. DELETE /session/:sessionId/cookie/:name Scroll on the touch screen using finger based motion events. GET /session/:sessionId/touch/alert_text Gets the text of the currently displayed JavaScript alert(), t confirm(), or prompt() dialog.

Slide 8

Slide 8 text

Cassian'Lup'•'Senior'UI'Developer'•'3Pillar'Global'•'' '''''/'cassi.lup The'Appium'Way

Slide 9

Slide 9 text

Cassian'Lup'•'Senior'UI'Developer'•'3Pillar'Global'•'' '''''/'cassi.lup The'Appium'Way 1. Test the same app you submit to the marketplace. 2. Write your tests in any framework, using any language.
 (Python, Ruby, JS [Node.js], Obj-C, Java) 3. Use a standard automation specification and API.
 (SE WebDriver) 4. Build a large and thriving open-source community effort.

Slide 10

Slide 10 text

Cassian'Lup'•'Senior'UI'Developer'•'3Pillar'Global'•'' '''''/'cassi.lup Testing'JavaScript'

Slide 11

Slide 11 text

Cassian'Lup'•'Senior'UI'Developer'•'3Pillar'Global'•'' '''''/'cassi.lup Testing'JavaScript 1. CucumberJs • Based on Cucumber
 (Ruby 2008, JS 2011), • Gherkin (BDD vs TDD), • Non-technical staff to write specs.

Slide 12

Slide 12 text

Cassian'Lup'•'Senior'UI'Developer'•'3Pillar'Global'•'' '''''/'cassi.lup Testing'JavaScript 2. Jasmine • 2010, • Widely used, • AngularJs, • Previously covered in tim.js talks.

Slide 13

Slide 13 text

Cassian'Lup'•'Senior'UI'Developer'•'3Pillar'Global'•'' '''''/'cassi.lup Testing'JavaScript 3. Mocha.js • 2011 (according to GitHub), • Wants to replace Jasmine (because “it’s too bloated”), • Chai.js.

Slide 14

Slide 14 text

Cassian'Lup'•'Senior'UI'Developer'•'3Pillar'Global'•'' '''''/'cassi.lup Writing'Tests See'it'in'Action

Slide 15

Slide 15 text

Cassian'Lup'•'Senior'UI'Developer'•'3Pillar'Global'•'' '''''/'cassi.lup See'it'in'Action • iOS • Ionic Tabs • Mocha + Chai

Slide 16

Slide 16 text

Cassian'Lup'•'Senior'UI'Developer'•'3Pillar'Global'•'' '''''/'cassi.lup Useful'Resources • Selenium-Webdriver https://github.com/admc/wd • CucumberJS: https://github.com/cucumber/cucumber-js > https://github.com/cucumber/cucumber/wiki/Gherkin, Given-When-Then > About CucumberJS, TDD vs BDD. http://custardbelly.com/blog/blog-posts/2014/01/08/bdd-in-js-cucumberjs/ > TDD settles for tests, BDD enforces story telling format - http://programmers.stackexchange.com/questions/ 135218/what-is-the-difference-between-bdd-and-tdd > OSX configuration: http://www.stephenbartholomew.co.uk/blog/2013/12/14/automated-ui-testing-with- cucumber-for-cordova-phonegap-apps/ • Jasmine: http://jasmine.github.io > Jasmine vs. Mocha https://github.com/yeoman/yeoman/issues/117 • Mocha: http://mochajs.org, https://github.com/mochajs > Chai http://chaijs.com/ > Chai-as-promised, https://github.com/domenic/chai-as-promised/ • Ionic Tabs: https://github.com/driftyco/ionic-starter-tabs
 > Tabs: https://github.com/driftyco/ionic-starter-tabs

Slide 17

Slide 17 text

Cassian'Lup'•'Senior'UI'Developer'•'3Pillar'Global'•'' '''''/'cassi.lup Thank'you.