two-minute tour of Frank
UI automation tool for native iOS apps - “WebDriver for iOS”Write your tests using the language and tooling you want
integrate with CI
powerful view-selection facilities
explore a running app with symbiote
Thursday, November 1, 12
symbiote
Thursday, November 1, 12
Test Scripts
PhoneAutomationDriver
... ...
type_into_text_field( ‘username’, user ) type_into_text_field( ‘password’, pass ) touch “button marked:‘Login’” wait_for_element_to_exist( “loginBanner marked:‘Welcome #{user}’” )
... ...
Thursday, November 1, 12
Test Scripts
PhoneAutomationDriver
... ...
type_into_text_field( ‘username’, user ) type_into_text_field( ‘password’, pass ) touch “button marked:‘Login’” wait_for_element_to_exist( “loginBanner marked:‘Welcome #{user}’” )
... ...
Hard to Read!
Thursday, November 1, 12
Test Scripts
PhoneAutomationDriver
... ...
type_into_text_field( ‘username’, user ) type_into_text_field( ‘password’, pass ) touch “button marked:‘Login’” wait_for_element_to_exist( “loginBanner marked:‘Welcome #{user}’” )
... ...
Fragile!
Thursday, November 1, 12
Test Scripts
PhoneAutomationDriver
... ...
type_into_text_field( ‘username’, user ) type_into_text_field( ‘password’, pass ) touch “button marked:‘Login’” wait_for_element_to_exist( “loginBanner marked:‘Welcome #{user}’” )
... ...
No
Abstractions
Thursday, November 1, 12
Test Scripts
PhoneAutomationDriver
PageObjects
class HomeScreen
def login(user,pass) type_into_text_field( ‘username’, user ) type_into_text_field( ‘password’, pass ) touch “button marked:‘Login’” end
def verify_logged_in_as(user) wait_for_element_to_exist( “loginBanner marked:‘Welcome #{user}’” ) end
end
Thursday, November 1, 12
Test Scripts
PhoneAutomationDriver
PageObjects
...
...
home_screen.login( ‘pete’, ‘sekrit’ )home_screen.verify_logged_in_as( ‘pete’ )
...
...
Thursday, November 1, 12
iPhone-specific ‘stuff’
Web-specific ‘stuff’
Test Scripts class HomeScreen
def login(user,pass) # WEBDRIVER STUFF GOES HERE end
def verify_logged_in_as(user) # MORE WEBDRIVER STUFF end
end
Thursday, November 1, 12
iPhone-specific ‘stuff’
Web-specific ‘stuff’
Test Scripts class HomeScreen
def login(user,pass) # WEBDRIVER STUFF GOES HERE end
def verify_logged_in_as(user) # MORE WEBDRIVER STUFF end
end
sameinterface
Thursday, November 1, 12
Bwoken
Zucchini
tuneup.js
UISpec
NativeDriver
KIF
Calabash
Frank
alternatives to stock UIAutomation
Thursday, November 1, 12
extendUIAutomation
Bwoken
Zucchini
tuneup.js
UISpec
NativeDriver
KIF
Calabash
Frank
Thursday, November 1, 12
replaceUIAutomation
Bwoken
Zucchini
tuneup.js
UISpec
NativeDriver
KIF
Calabash
Frank
Thursday, November 1, 12
exposes Apple’s own
low-level UIAutomation private framework
PublicAutomation
Thursday, November 1, 12
provides the power of
Apple’s touch synthesis implementation
PublicAutomation
Thursday, November 1, 12
gives the freedom to build better integration
and tooling on top
PublicAutomation
Thursday, November 1, 12
has been Frank’s touch
synthesis library since 1.0
(replacing KIF)
PublicAutomation
Thursday, November 1, 12
Thanks!Pete Hodgson
@ph1
blog.thepete.net
Thursday, November 1, 12