-
Notifications
You must be signed in to change notification settings - Fork 237
Step Definition compendium
aaronsakowski edited this page Dec 1, 2012
·
19 revisions
This page is intended to act as a place for useful Frank step definitions which aren't quite standard enough to add to the core frank steps. Please feel free to contribute your own useful codez.
This works for Waseem:
Then /^I should see (.*) apples$/ do |count|
apples = frankly_map( "label marked:'red apples'", 'tag' )
apples.count.should == count.to_i
end
(see this thread for details)
This works for Pete's team:
When /^I use the keyboard to fill in the textfield marked "([^\\"]*)" with "([^\\"]*)"$/ do |text_field_mark, text_to_type|
text_field_selector = "view marked:'#{text_field_mark}'"
check_element_exists( text_field_selector )
touch( text_field_selector )
frankly_map( text_field_selector, 'setText:', text_to_type )
frankly_map( text_field_selector, 'endEditing:', true )
end
This works for Martin:
When /^I use the keyboard to fill in the textfield marked "([^\\"]*)" with "([^\\"]*)"$/ do |text_field_mark, text_to_type|
text_field_selector = "view marked:'#{text_field_mark}'"
check_element_exists( text_field_selector )
frankly_map( text_field_selector, 'becomeFirstResponder' )
frankly_map( text_field_selector, 'setText:', text_to_type )
frankly_map( text_field_selector, 'endEditing:', true )
end
This can be a useful workaround when dealing with the iOS keyboard. Thanks to Hezi Cohen and James Moore for this one!
def send_command ( command )
%x{osascript<<APPLESCRIPT
tell application "System Events"
tell application "iPhone Simulator" to activate
keystroke "#{command}"
delay 1
key code 36
end tell
APPLESCRIPT}
end
When /^I send the command "([^\\"]*)"$/ do |cmd|
send_command(cmd)
end
When /^I send the command "([^"]*)" (\d+) times$/ do |cmd, times|
i = 0
while i < times.to_i
send_command(cmd)
i += 1
end
end
When /^I send the following commands:$/ do |table|
table.hashes.each do |row|
steps "When I send the command \\"#{row['command']}\\" #{row['times']} times"
send_command(row['command'])
end
end
Given /^I reset the (iphone|ipad) app$/ do |device|
steps "When I quit the simulator"
SDK = "4.3"
APPLICATIONS_DIR = "/Users/#{ENV['USER']}/Library/Application Support/iPhone Simulator/#{SDK}/Applications"
USERDEFAULTS_PLIST = "Library/Preferences/com.yourcompany.#{APPNAME}.dist.plist"
Dir.foreach(APPLICATIONS_DIR) do |item|
next if item == '.' or item == '..'
if File::exists?( "#{APPLICATIONS_DIR}/#{item}/#{USERDEFAULTS_PLIST}")
FileUtils.rm "#{APPLICATIONS_DIR}/#{item}/#{USERDEFAULTS_PLIST}"
end
end
steps "Given I launch the #{device} app"
end
Then /^I save a screenshot with prefix (\w+)$/ do |prefix|
filename = prefix + Time.now.to_i.to_s
%x[screencapture #{filename}.png]
end
(see this thread for details)
When /^I delete the table view cell marked "([^"]*)"$/ do |mark|
raise "no table view cell marked '#{mark}' could be found to delete" unless element_exists("tableViewCell label marked:'#{mark}'")
frankly_map( "tableViewCell label marked:'#{mark}' parent tableViewCell delete", "tag" )
end
From http://groups.google.com/group/frank-discuss/browse_thread/thread/419a5f08d7ebb422
When /^I select (\d*)(?:st|nd|rd|th)? row in picker "([^\"]*)"$/ do |
row_ordinal, theview|
selector = "view:'UIPickerView' marked:'#{theview}'"
row_index = row_ordinal.to_i - 1
views_switched = frankly_map( selector, 'selectRow:inComponent:animated:', row_index, 0, false )
raise "could not find anything matching [#{row_ordinal}] to switch" if views_switched.empty?
end
Then /^the keyboard should be hidden$/ do
begin
type_into_keyboard("")
rescue
else
raise "The keyboard is not hidden."
end
end
Then /^the keyboard should be visible$/ do
begin
type_into_keyboard("")
rescue
raise "The keyboard is not visible."
else
end
end