
Rahul Somasunderam (@rahulsom)
And why at a this conference?
Tooling
Libraries
Libraries vs frameworks
And I don’t mean transitive dependencies…
Your app needs dependencies
Dependencies can be installed with Cocoapods
Cocoapods is a ruby gem
Ruby gems can be installed with Bundler
You WANT ruby in the user space; so RBENV
There is a brew formula for RBENV
brew is installed using system ruby
Not 10 bullet points telling you to point and click at things.
xcodebuild \
-scheme Todos \
-workspace Todos.xcworkspace \
-sdk iphonesimulator \
-configuration Debug \
DSTROOT=/Users/rahul/src/Todos/build/dst \
OBJROOT=/Users/rahul/src/Todos/build/obj \
SYMROOT=/Users/rahul/src/Todos/build/sym \
SHARED_PRECOMPS_DIR=/Users/rahul/src/Todos/build/shared \
-destination \
'platform=iOS Simulator,id=CAB835ED-3EE2-47B6-AD74-C06675651CEF' \
test
Too complex commands - Unruly bash scripts
Different tools for build, upload to testflight, hockeyapp
Very little documentation, very steep learning curve
What about functional testing?
xctool \
-workspace Todos.xcworkspace \
-sdk iphonesimulator \
-scheme Todos \
test
Written in Objective-C
Needs advanced knowledge of Objective-C
What about functional testing?
ios profiles:list --team=ABCDE56789
ipa build && ipa distribute
Written in ruby
Great support for certificates, distribution profiles
Great support for distribution using iTunesConnect
What about testing?
Flexible build system
Support for distribution
Support for functional testing
Easy to install, even if you’re an enterprise software company
Easy to run
buildscript {
repositories {
maven { url "https://plugins.gradle.org/m2/" }
}
dependencies {
classpath "gradle.plugin.org.openbakery:xcodePlugin:0.11.3"
}
}
apply plugin: "org.openbakery.xcodeplugin"
xcodebuild {
workspace = 'Todos.xcworkspace'
scheme = 'Todos'
target = 'Todos'
sdk = 'iphonesimulator'
}
./gradlew xcodetest
./gradlew appstoreUpload
Record and Playback
DOM Tree access
Refactoring
Managing State
Tuneup JS? Bwoken?
Based on Selenium
Clients for several languages including Java
Makes your app stateless
Spock’s expressive testing
Groovy’s metaprogramming to improve access to DOM
Cloudbees runs a very old version of OSX and XCode.
Bring your own Jenkins and/or Bring your own slaves.
There’s no Docker for OSX
But there is vagrant. [fragment]Kind of
You’re better off managing slaves as mutable
instances
Recently added GA support for XCode
Can’t run appium yet.