Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
A Frank Discussion About iOS BDD
Search
Tim Bugai
May 27, 2014
Technology
110
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
A Frank Discussion About iOS BDD
Tim Bugai
May 27, 2014
More Decks by Tim Bugai
See All by Tim Bugai
Automate All The Things!
tbugai
0
65
RubyMotion
tbugai
0
150
Other Decks in Technology
See All in Technology
Tofu-Controller lightning talk @ Containerday 2026
gionn
0
110
スプシの手作業からの解脱 ~更新はClaude Codeに、見せ方と使い方はGASアプリに任せる~
kentarofujii
0
150
エンタメ企業のM&Aを支えるデータ基盤 ― 統合から店舗のリアルタイム分析まで / Data Engineering Summit 2026
genda
0
170
QA4AI 2026-Oct 生成AI時代の品質保証
tokuty
1
860
Code for Security プロジェクト紹介 2026年10月
yu23ki14
0
110
分析の民主化を支えるメタデータ整備の実践
kakehashi
PRO
4
1.4k
AI駆動で「他アプリの音を加工できる」アプリを作った
satomasahiro2005
0
150
事業成長とデータ活用を止めないためのマネジメントへ挑戦
hiracky16
0
390
Kiro Crewをはじめよう
kizawa2020
1
160
Classmethod Company Deck
satoshi7
1
680
「Docker Desktop不要の時代」は 来たのか?
ueponx
0
770
スキマバイトという雇用形態は存在しないので、雇用期間1日のアルバイト契約を事業者とワーカーが結ぶ手続きを支えるのがタイミーなんです
akitoshiga
0
200
Featured
See All Featured
Leveraging Curiosity to Care for An Aging Population
cassininazir
1
540
WENDY [Excerpt]
tessaabrams
14
40k
Stop Working from a Prison Cell
hatefulcrawdad
274
21k
Building a Scalable Design System with Sketch
lauravandoore
464
34k
Build The Right Thing And Hit Your Dates
maggiecrowley
39
3.5k
Claude Code のすすめ
schroneko
67
230k
4 Signs Your Business is Dying
shpigford
187
23k
Avoiding the “Bad Training, Faster” Trap in the Age of AI
tmiket
0
270
The Organizational Zoo: Understanding Human Behavior Agility Through Metaphoric Constructive Conversations (based on the works of Arthur Shelley, Ph.D)
kimpetersen
PRO
0
500
Public Speaking Without Barfing On Your Shoes - THAT 2023
reverentgeek
1
600
Heart Work Chapter 1 - Part 1
lfama
PRO
10
37k
Embracing the Ebb and Flow
colly
88
5.2k
Transcript
collectiveidea.com A Frank Discussion About iOS BDD Tim Bugai collectiveidea.com
@timbugai
collectiveidea.com About Me… • B.S. in C.S. from GVSU •
Software Developer for 5+ years professionally. • Lead iOS Developer at Collective Idea • Woodworker
collectiveidea.com Collective Idea • Ruby on Rails, DevOps, and mobile
development shop • Holland, MI
collectiveidea.com Tenn Pinn Simple bowling average tracker. ! tenpinn.com
collectiveidea.com Dead Man’s Snitch Dead Simple Periodic Process Monitoring !
deadmanssnitch.com
collectiveidea.com Downside Pay attention to your friends… ! downsideapp.com
collectiveidea.com Demo Application
collectiveidea.com HarmonyApp
collectiveidea.com Mockups • Login page
collectiveidea.com Mockups • UICollectionView of a users sites
collectiveidea.com Mockups • UICollectionView of pages for the selected site
collectiveidea.com Harmony API • Application/JSON • RESTfull endpoints • Authentication
collectiveidea.com BDD
collectiveidea.com Framework Options • UISpec • Zucchini • Frank
collectiveidea.com UISpec • Objective-C • [[app.navigationButton.label text:@"Save"] touch]; • Last
updated April, 2013 • iOS 7 support?
collectiveidea.com Zucchini • UIAutomation wrapper • Screen Objects (Coffeescript) •
Ruby DSL
collectiveidea.com Zucchini class BooksScreen extends Screen anchor: -> view.navigationBars()["Books"] constructor:
-> super 'books' extend @elements, 'Edit' : -> view.navigationBars()[0].buttons()["Edit"], 'Add' : -> view.navigationBars()[0].buttons()["Add"] extend @actions, 'Scroll to "([^"]*)"$': (elementName) -> view.tableViews()[0].scrollToElementWithName(elementName)
collectiveidea.com Zucchini Start on the "Books" screen: Take a screenshot
Tap "Add"
collectiveidea.com Frank • Cucumber for iOS • Ruby • Client/Server
architecture • Symbiote
collectiveidea.com Accessibility Labels
collectiveidea.com Setup Frank • gem install frank-cucumber • frank setup
• frank build • frank launch —idiom=ipad
collectiveidea.com First Test Given I launch the app using iOS
7.0 and the iPad simulator And I am on the login page ! When I enter the username “
[email protected]
” And I enter the password “glsec2014” And I touch “Sign In” ! Then I should be on the sites page
collectiveidea.com Step Definitions Given(/^I am on the login page$/) do
check_element_exists “view marked:’username’” end
collectiveidea.com !! Live Code Ahead !!
collectiveidea.com Unit Tests
collectiveidea.com Unit Test Options • XCTest • specta & expecta
• Cedar
collectiveidea.com XCTest • Native to Xcode 5.1 • Replaces SenTest
• XCTAssertEqual, XCTAssertNotEqual, etc
collectiveidea.com Specta & Expecta • RSpec-like Syntax • XCTest •
expect([bar isBar]).to.equal(YES);
collectiveidea.com Cedar • Created by Pivotal Labs • RSpec-like block
syntax • Native mocking ability
collectiveidea.com API Tests • Mock network responses
collectiveidea.com Continuous Integration
collectiveidea.com Travis CI • travis-ci.org
collectiveidea.com travis.yml language: objective-c ! before_install: bundle install script: frank
build && bundle exec cucumber Frank
collectiveidea.com Xcode Test Server • Local Repos • Remote Repos
(remote polling)
collectiveidea.com Questions?
collectiveidea.com Thanks!