SlideShare a Scribd company logo
1 of 22
Download to read offline
Ti Calabash:
TiCalabash for Titanium: Fully Automated Testing.
!
Platino Talk?
Game Development with Titanium
https://github.com/gouldjw/tiConf-Mobile-Dev-Wars-Demo
https://vimeo.com/96590732
https://www.slideshare.net/gouldjw13/ticonf2014-gdtph-10may14ext
http://www.avatar-soft.com/#tiConf2014
Acceptance
Testing
Acceptance Testing
AKA
User Acceptance Testing
What is it?
Acceptance Testing
Test the entire App from the UI down rather
than Units (aka Unit Testing)
Unit Testing + Acceptance Testing === Outside-in BDD
<sidenote>
http://www.sarahmei.com/blog/2010/05/29/outside-in-bdd/
credit: http://lostechies.com
</sidenote>
Before Acceptance Testing
Some Pain Points
Many devices, OS versions, Languages, Form Factors,
Screen Density/Size…
Time consuming process of manually clicking
through screens.
Catch and stop regressions
The Original Vision
A Natural Language Like DSL
Extensible via ‘step definitions’
Supports Continuous Integration
No Titanium Modules
No touching tiapp.xml
Use only a Titanium CLI hook
No Ruby Dependencies
Calabash Overview
“Calabash supports Cucumber. Cucumber
lets us express the behavior of our app
using natural language that can be
understood by business experts and non-
technical QA staff.”
— Calaba.sh
“…Calabash is cross-platform, supporting
Android and iOS native apps…”
About that no Ruby thing…
TiCucumber was too much work for too little reward.
Matt Apperson had a better idea
TiCalabash
A Titanium CLI hook for Calabash
Calabash is Cucumber for Mobile
npm install -g ticalabash
https://github.com/appersonlabs/ticalabash
A Feature
This is executable code:
https://github.com/CodexLabs/alloy_fugitive/blob/master/features/fugitive.feature
Step Definitions
https://github.com/calabash/calabash-ios/blob/master/calabash-cucumber/features/step_definitions/calabash_steps.rb
https://github.com/calabash/calabash-android/tree/master/ruby-gem/lib/calabash-android/steps
An Example
Custom Step Definitions
Add your own steps:
Demo
Architecture of Calabash
FYI (for the curious)
features
Cucumber
(On Dev computer)
iOS/ Android App
Calabash library
(contains a web server
iOS: Frank
Android: Robotium)
*On iOS it uses
-cal scheme
Cucumber test reporter
REST API
Calabash Queries
You can use calabash to query your UI
http://blog.lesspainful.com/2012/12/18/Android-Query/
http://roadtoautomation.blogspot.nl/2013/12/road-to-identifying-elements-using.html
https://github.com/calabash/calabash-ios/wiki/05-Query-syntax
query("all button")
query("all view marked:'something'")
Recording Touches
We haven’t exposed it yet
“for reasons”
https://github.com/calabash/calabash-ios/wiki/04-Touch-recording-and-playback
Only works for iOS < 7
There appears to be hope for iOS 7
http://stackoverflow.com/questions/18205130/calabash-how-to-record-touches-on-iphone
!
Calabash Android doesn’t implement it.
There is a Robotium Recorder however.
If you need touch recording today, just use Appcelerator Platform.
Recording Touches
$ calabash-ios console
!
Now use the command record_begin
!
> record_begin
=> ""
This begins recording touch events. Now in the simulator perform the touch events you
want to record. This should be a short sequence of events corresponding to a gesture
on a view. Then use record_end "mytouches", for example
!
> record_end "drag_one_up"
=> "drag_one_up_ios5_iphone.base64"
This saves the touch events under the name "mytouches". In the example, you see the
string "drag_one_up_ios5_iphone.base64". This is actually a file being saved in your
directory.
!
You can test that the recording does what it should by running
!
> playback "drag_one_up"
=> ["<UIView: 0x7dc70b0; frame = (-48.7356 26.2644; 417.471 417.471); ...
This will playback the events you just recorded at the same coordinates you recorded
them. If you're unhappy with the results just try again.
!
If you're happy, exit the console and move the generated file to the "features" folder.
Jenkins
The Configuration
cd ~/Desktop/ticonf2014testappdemo/alloytest # or actually pull from git.
titanium clean
titanium build --platform=iphone --test &
sleep 30
killall "iPhone Simulator"
export PATH=“/Users/andrewmcelroy/.rbenv/shims:/Users/andrewmcelroy/bin:/usr/local/bin:
/Users/andrewmcelroy/.rbenv/bin:/Users/andrewmcelroy/android/tools:/Users/andrewmcelroy/android/:
/Users/andrewmcelroy/android//tools:/Users/andrewmcelroy/android/platform-tools/:/usr/bin:/bin:
/usr/sbin:/sbin:/usr/local/bin:/usr/local/git/bin:"
!
echo | titanium calabash —platform=iphone
!
cd ~/Library/Application Support/iPhone Simulator/7.1/Applications/
AppGUID = $(find . -name "alloytest" | cut -d "/" -f 2)
!
cp "~/Library/Application Support/iPhone Simulator/7.1/Applications/$AppGUID/Documents/jenkins.xml" $WORKSPACE/jenkins.xml
Questions?
!
Thank You
Andrew McElroy
https://CodexLabs.com
github.com/CodexLabs@CodexLabs
Matt Apperson
@mattapperson
Special thanks to Matt for the Android implementation

More Related Content

What's hot

Android Flash Development
Android Flash DevelopmentAndroid Flash Development
Android Flash Development
Stephen Chin
 

What's hot (20)

Cross-platform Native App ontwikkeling met Appcelerator
Cross-platform Native App ontwikkeling met AppceleratorCross-platform Native App ontwikkeling met Appcelerator
Cross-platform Native App ontwikkeling met Appcelerator
 
Android Automotive
Android AutomotiveAndroid Automotive
Android Automotive
 
Appium overview (Selenium Israel #2, Feb. 2014)
Appium overview (Selenium Israel #2, Feb. 2014)Appium overview (Selenium Israel #2, Feb. 2014)
Appium overview (Selenium Israel #2, Feb. 2014)
 
Appcelerator Alloy MVC
Appcelerator Alloy MVCAppcelerator Alloy MVC
Appcelerator Alloy MVC
 
從 Google i/o 2015 看下半年 mobile 應用發展趨勢
從 Google i/o 2015 看下半年 mobile 應用發展趨勢從 Google i/o 2015 看下半年 mobile 應用發展趨勢
從 Google i/o 2015 看下半年 mobile 應用發展趨勢
 
Android Flash Development
Android Flash DevelopmentAndroid Flash Development
Android Flash Development
 
Titanium 最近の動向 (2016年)
Titanium 最近の動向 (2016年)Titanium 最近の動向 (2016年)
Titanium 最近の動向 (2016年)
 
Windows 8 Developer Preview
Windows 8 Developer PreviewWindows 8 Developer Preview
Windows 8 Developer Preview
 
Developing Android Apps
Developing Android AppsDeveloping Android Apps
Developing Android Apps
 
Automating the Gaps of Unit Testing Mobile Apps
Automating the Gaps of Unit Testing Mobile AppsAutomating the Gaps of Unit Testing Mobile Apps
Automating the Gaps of Unit Testing Mobile Apps
 
しごとで使うTitanium 第2版
しごとで使うTitanium 第2版しごとで使うTitanium 第2版
しごとで使うTitanium 第2版
 
20150423 Android Taipei : 祖克伯F8的奇幻之旅
20150423 Android Taipei : 祖克伯F8的奇幻之旅20150423 Android Taipei : 祖克伯F8的奇幻之旅
20150423 Android Taipei : 祖克伯F8的奇幻之旅
 
Android Flash Development
Android Flash DevelopmentAndroid Flash Development
Android Flash Development
 
Preparing for Release to the App Store
Preparing for Release to the App StorePreparing for Release to the App Store
Preparing for Release to the App Store
 
Build mini - Windows 10 Dev & Cross platform Dev
Build mini - Windows 10 Dev & Cross platform DevBuild mini - Windows 10 Dev & Cross platform Dev
Build mini - Windows 10 Dev & Cross platform Dev
 
Building Native Mobile Apps using Javascript with Titanium
Building Native Mobile Apps using Javascript with TitaniumBuilding Native Mobile Apps using Javascript with Titanium
Building Native Mobile Apps using Javascript with Titanium
 
Intro to iPhone Development with MonoTouch
Intro to iPhone Development with MonoTouchIntro to iPhone Development with MonoTouch
Intro to iPhone Development with MonoTouch
 
REST API Development (FB Live) - Episode 04
REST API Development (FB Live) - Episode 04REST API Development (FB Live) - Episode 04
REST API Development (FB Live) - Episode 04
 
iOS Automation with Cucumber, Appium and Saucelabs
iOS Automation with Cucumber, Appium and SaucelabsiOS Automation with Cucumber, Appium and Saucelabs
iOS Automation with Cucumber, Appium and Saucelabs
 
Yahoo! 釀的酒 - 淺嚐 Cocktails
Yahoo! 釀的酒 - 淺嚐 CocktailsYahoo! 釀的酒 - 淺嚐 Cocktails
Yahoo! 釀的酒 - 淺嚐 Cocktails
 

Similar to TiCalabash: Fully automated Acceptance Testing @ TiConf EU 2014

Similar to TiCalabash: Fully automated Acceptance Testing @ TiConf EU 2014 (20)

iPhone App from concept to product
iPhone App from concept to productiPhone App from concept to product
iPhone App from concept to product
 
Cucumber meets iPhone
Cucumber meets iPhoneCucumber meets iPhone
Cucumber meets iPhone
 
Debugging Tips and Tricks - iOS Conf Singapore 2015
Debugging Tips and Tricks - iOS Conf Singapore 2015Debugging Tips and Tricks - iOS Conf Singapore 2015
Debugging Tips and Tricks - iOS Conf Singapore 2015
 
HTML5 Can't Do That
HTML5 Can't Do ThatHTML5 Can't Do That
HTML5 Can't Do That
 
Android 3.0 Portland Java User Group 2011-03-15
Android 3.0 Portland Java User Group 2011-03-15Android 3.0 Portland Java User Group 2011-03-15
Android 3.0 Portland Java User Group 2011-03-15
 
Tips and Tricks for Mobile Flash Development
Tips and Tricks for Mobile Flash DevelopmentTips and Tricks for Mobile Flash Development
Tips and Tricks for Mobile Flash Development
 
Mobile html5 today
Mobile html5 todayMobile html5 today
Mobile html5 today
 
Android - Open Source Bridge 2011
Android - Open Source Bridge 2011Android - Open Source Bridge 2011
Android - Open Source Bridge 2011
 
Hacking Android OS
Hacking Android OSHacking Android OS
Hacking Android OS
 
It Works On Dev
It Works On DevIt Works On Dev
It Works On Dev
 
Construir Aplicações Silverlight para Windows Phone 7
Construir Aplicações Silverlight para Windows Phone 7Construir Aplicações Silverlight para Windows Phone 7
Construir Aplicações Silverlight para Windows Phone 7
 
Android 3.1 - Portland Code Camp 2011
Android 3.1 - Portland Code Camp 2011Android 3.1 - Portland Code Camp 2011
Android 3.1 - Portland Code Camp 2011
 
Use Web Skills To Build Mobile Apps
Use Web Skills To Build Mobile AppsUse Web Skills To Build Mobile Apps
Use Web Skills To Build Mobile Apps
 
Beginning Android Flash Development
Beginning Android Flash DevelopmentBeginning Android Flash Development
Beginning Android Flash Development
 
Phonegap Development & Debugging
Phonegap Development & DebuggingPhonegap Development & Debugging
Phonegap Development & Debugging
 
Videogram - Building a product with Sencha Touch
Videogram - Building a product with Sencha TouchVideogram - Building a product with Sencha Touch
Videogram - Building a product with Sencha Touch
 
Next Generation Apps with Google Chrome-By Dhruv Gohil
Next Generation Apps with Google Chrome-By Dhruv GohilNext Generation Apps with Google Chrome-By Dhruv Gohil
Next Generation Apps with Google Chrome-By Dhruv Gohil
 
Google Chrome DevTools features overview
Google Chrome DevTools features overviewGoogle Chrome DevTools features overview
Google Chrome DevTools features overview
 
State ofappdevelopment
State ofappdevelopmentState ofappdevelopment
State ofappdevelopment
 
Live Source - an Agile Toolkit
Live Source - an Agile ToolkitLive Source - an Agile Toolkit
Live Source - an Agile Toolkit
 

Recently uploaded

Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
?#DUbAI#??##{{(☎️+971_581248768%)**%*]'#abortion pills for sale in dubai@
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
panagenda
 

Recently uploaded (20)

Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectors
 
Vector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptxVector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptx
 
Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)
 
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
 
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
 
CNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In PakistanCNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In Pakistan
 

TiCalabash: Fully automated Acceptance Testing @ TiConf EU 2014

  • 1. Ti Calabash: TiCalabash for Titanium: Fully Automated Testing. !
  • 3. Game Development with Titanium https://github.com/gouldjw/tiConf-Mobile-Dev-Wars-Demo https://vimeo.com/96590732 https://www.slideshare.net/gouldjw13/ticonf2014-gdtph-10may14ext http://www.avatar-soft.com/#tiConf2014
  • 6. Acceptance Testing Test the entire App from the UI down rather than Units (aka Unit Testing) Unit Testing + Acceptance Testing === Outside-in BDD <sidenote> http://www.sarahmei.com/blog/2010/05/29/outside-in-bdd/ credit: http://lostechies.com </sidenote>
  • 7. Before Acceptance Testing Some Pain Points Many devices, OS versions, Languages, Form Factors, Screen Density/Size… Time consuming process of manually clicking through screens. Catch and stop regressions
  • 8. The Original Vision A Natural Language Like DSL Extensible via ‘step definitions’ Supports Continuous Integration No Titanium Modules No touching tiapp.xml Use only a Titanium CLI hook No Ruby Dependencies
  • 9. Calabash Overview “Calabash supports Cucumber. Cucumber lets us express the behavior of our app using natural language that can be understood by business experts and non- technical QA staff.” — Calaba.sh “…Calabash is cross-platform, supporting Android and iOS native apps…”
  • 10. About that no Ruby thing… TiCucumber was too much work for too little reward. Matt Apperson had a better idea
  • 11. TiCalabash A Titanium CLI hook for Calabash Calabash is Cucumber for Mobile npm install -g ticalabash https://github.com/appersonlabs/ticalabash
  • 12. A Feature This is executable code: https://github.com/CodexLabs/alloy_fugitive/blob/master/features/fugitive.feature
  • 14. Custom Step Definitions Add your own steps:
  • 15. Demo
  • 16. Architecture of Calabash FYI (for the curious) features Cucumber (On Dev computer) iOS/ Android App Calabash library (contains a web server iOS: Frank Android: Robotium) *On iOS it uses -cal scheme Cucumber test reporter REST API
  • 17. Calabash Queries You can use calabash to query your UI http://blog.lesspainful.com/2012/12/18/Android-Query/ http://roadtoautomation.blogspot.nl/2013/12/road-to-identifying-elements-using.html https://github.com/calabash/calabash-ios/wiki/05-Query-syntax query("all button") query("all view marked:'something'")
  • 18. Recording Touches We haven’t exposed it yet “for reasons” https://github.com/calabash/calabash-ios/wiki/04-Touch-recording-and-playback Only works for iOS < 7 There appears to be hope for iOS 7 http://stackoverflow.com/questions/18205130/calabash-how-to-record-touches-on-iphone ! Calabash Android doesn’t implement it. There is a Robotium Recorder however. If you need touch recording today, just use Appcelerator Platform.
  • 19. Recording Touches $ calabash-ios console ! Now use the command record_begin ! > record_begin => "" This begins recording touch events. Now in the simulator perform the touch events you want to record. This should be a short sequence of events corresponding to a gesture on a view. Then use record_end "mytouches", for example ! > record_end "drag_one_up" => "drag_one_up_ios5_iphone.base64" This saves the touch events under the name "mytouches". In the example, you see the string "drag_one_up_ios5_iphone.base64". This is actually a file being saved in your directory. ! You can test that the recording does what it should by running ! > playback "drag_one_up" => ["<UIView: 0x7dc70b0; frame = (-48.7356 26.2644; 417.471 417.471); ... This will playback the events you just recorded at the same coordinates you recorded them. If you're unhappy with the results just try again. ! If you're happy, exit the console and move the generated file to the "features" folder.
  • 20. Jenkins The Configuration cd ~/Desktop/ticonf2014testappdemo/alloytest # or actually pull from git. titanium clean titanium build --platform=iphone --test & sleep 30 killall "iPhone Simulator" export PATH=“/Users/andrewmcelroy/.rbenv/shims:/Users/andrewmcelroy/bin:/usr/local/bin: /Users/andrewmcelroy/.rbenv/bin:/Users/andrewmcelroy/android/tools:/Users/andrewmcelroy/android/: /Users/andrewmcelroy/android//tools:/Users/andrewmcelroy/android/platform-tools/:/usr/bin:/bin: /usr/sbin:/sbin:/usr/local/bin:/usr/local/git/bin:" ! echo | titanium calabash —platform=iphone ! cd ~/Library/Application Support/iPhone Simulator/7.1/Applications/ AppGUID = $(find . -name "alloytest" | cut -d "/" -f 2) ! cp "~/Library/Application Support/iPhone Simulator/7.1/Applications/$AppGUID/Documents/jenkins.xml" $WORKSPACE/jenkins.xml
  • 22. Thank You Andrew McElroy https://CodexLabs.com github.com/CodexLabs@CodexLabs Matt Apperson @mattapperson Special thanks to Matt for the Android implementation