frank-cucumber 1.1.1 → 1.1.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (32) hide show
  1. data/frank-cucumber.gemspec +1 -1
  2. data/frank-skeleton/frank_static_resources.bundle/index.html +6 -16
  3. data/frank-skeleton/frank_static_resources.bundle/index.html.haml +12 -14
  4. data/frank-skeleton/frank_static_resources.bundle/js/controller.coffee +6 -1
  5. data/frank-skeleton/frank_static_resources.bundle/js/controller.js +8 -1
  6. data/frank-skeleton/frank_static_resources.bundle/stylesheets/css/symbiote.css +1 -0
  7. data/frank-skeleton/frank_static_resources.bundle/stylesheets/sass/_elements.scss +28 -0
  8. data/frank-skeleton/frank_static_resources.bundle/stylesheets/sass/_header.scss +61 -0
  9. data/frank-skeleton/frank_static_resources.bundle/stylesheets/sass/_inspect_tabs_list_tabs.scss +194 -0
  10. data/frank-skeleton/frank_static_resources.bundle/{jquery.treeview.css → stylesheets/sass/_jquery.treeview.scss} +18 -20
  11. data/frank-skeleton/frank_static_resources.bundle/stylesheets/sass/_jqui.scss +2 -0
  12. data/frank-skeleton/frank_static_resources.bundle/stylesheets/sass/_layout.scss +13 -0
  13. data/frank-skeleton/frank_static_resources.bundle/stylesheets/sass/_mixins.sass +137 -0
  14. data/frank-skeleton/frank_static_resources.bundle/{reset.css → stylesheets/sass/_reset.scss} +2 -2
  15. data/frank-skeleton/frank_static_resources.bundle/stylesheets/sass/_selector_test_toolbar.scss +81 -0
  16. data/frank-skeleton/frank_static_resources.bundle/{_solarized_colors.scss → stylesheets/sass/_solarized.scss} +0 -0
  17. data/frank-skeleton/frank_static_resources.bundle/stylesheets/sass/_typography.scss +11 -0
  18. data/frank-skeleton/frank_static_resources.bundle/stylesheets/sass/_unicode.scss +3 -0
  19. data/frank-skeleton/frank_static_resources.bundle/stylesheets/sass/_z_index.scss +2 -0
  20. data/frank-skeleton/frank_static_resources.bundle/stylesheets/sass/symbiote.scss +26 -0
  21. data/frank-skeleton/libCocoaHTTPServer.a +0 -0
  22. data/frank-skeleton/libFrank.a +0 -0
  23. data/frank-skeleton/libShelley.a +0 -0
  24. data/lib/frank-cucumber.rb +1 -0
  25. data/lib/frank-cucumber/cli.rb +14 -3
  26. data/lib/frank-cucumber/core_frank_steps.rb +53 -28
  27. data/lib/frank-cucumber/frank_helper.rb +32 -4
  28. data/lib/frank-cucumber/rect.rb +24 -0
  29. data/lib/frank-cucumber/version.rb +1 -1
  30. data/test/rect_test.rb +25 -0
  31. metadata +114 -35
  32. data/frank-skeleton/frank_static_resources.bundle/symbiote.css +0 -505
@@ -0,0 +1,2 @@
1
+ .ui-state-disabled { cursor: default !important; }
2
+ .ui-tabs .ui-tabs-hide { display: none !important; }
@@ -0,0 +1,13 @@
1
+ //--------------------------------------------------------
2
+ // veritcal layout for entire page.
3
+ //--------------------------------------------------------
4
+ // for horizontal layouts, see individual partial files.
5
+ //--------------------------------------------------------
6
+
7
+ $header-height: 40px;
8
+ $toast-height: $header-height;
9
+ $refresh-size: $header-height;
10
+ $selector-test-toolbar-vt-padding: 8px;
11
+
12
+ $selector-test-height: $btn-input-height + $label-line-height + ($selector-test-toolbar-vt-padding*2);
13
+ $columns-top: $header-height + $selector-test-height;
@@ -0,0 +1,137 @@
1
+ @mixin center-align($height: "", $width: "")
2
+ top: 50%
3
+ margin-top: -$height/2
4
+ left: 50%
5
+ margin-left: -$width/2
6
+
7
+ @mixin absolute-fill
8
+ position: absolute
9
+ top: 0
10
+ right: 0
11
+ bottom: 0
12
+ left: 0
13
+ height: 100%
14
+ width: 100%
15
+
16
+ @mixin clearfix-after
17
+ &:after
18
+ content: ""
19
+ display: block
20
+ height: 1px
21
+ width: 1px
22
+ clear: both
23
+ position: relative
24
+
25
+ @mixin transition ( $trans )
26
+ -webkit-transition: ( $trans )
27
+ -moz-transition: ( $trans )
28
+ transition: ( $trans )
29
+
30
+ @mixin transition-two ( $trans, $trans2 )
31
+ -webkit-transition: ( $trans, $trans2 )
32
+ -moz-transition: ( $trans, $trans2 )
33
+ transition: ( $trans, $trans2 )
34
+
35
+ @mixin transition-transform( $duration )
36
+ -webkit-transition: -webkit-transform $duration
37
+ -moz-transition: -moz-transform $duration
38
+ -ms-transition: -ms-transform $duration
39
+ -o-transition: -o-transform $duration
40
+ transition: transform $duration
41
+
42
+ @mixin transition-delay ( $delay )
43
+ -webkit-transition-delay: ( $delay )
44
+ -moz-transition-delay: ( $delay )
45
+ transition-delay: ( $delay )
46
+
47
+ @mixin transition-property ( $property )
48
+ -webkit-transition-property: ( $property )
49
+ -moz-transition-property: ( $property )
50
+ transition-property: ( $property )
51
+
52
+ @mixin transition-property-two ( $property1, $property2 )
53
+ -webkit-transition-property: ( $property1, $property2 )
54
+ -moz-transition-property: ( $property1, $property2 )
55
+ transition-property: ( $property1, $property2 )
56
+
57
+ @mixin transition-duration ( $duration )
58
+ -webkit-transition-duration: ( $duration )
59
+ -moz-transition-duration: ( $duration )
60
+ transition-duration: ( $duration )
61
+
62
+ @mixin animation ( $animation )
63
+ -webkit-animation: ( $animation )
64
+ -moz-animation: ( $animation )
65
+ -ms-animation: ( $animation )
66
+ animation: ( $animation )
67
+
68
+ @mixin text-shadow( $shadow )
69
+ -webkit-text-shadow: ( $shadow )
70
+ -moz-text-shadow: ( $shadow )
71
+ text-shadow: ( $shadow )
72
+
73
+ @mixin box-shadow( $shadow )
74
+ -webkit-box-shadow: ( $shadow )
75
+ -moz-box-shadow: ( $shadow )
76
+ box-shadow: ( $shadow )
77
+
78
+ @mixin box-shadow-two( $shadow1, $shadow2 )
79
+ -webkit-box-shadow: ( $shadow1, $shadow2 )
80
+ -moz-box-shadow: ( $shadow1, $shadow2 )
81
+ box-shadow: ( $shadow1, $shadow2 )
82
+
83
+ @mixin transform ( $transform )
84
+ -webkit-transform: ( $transform )
85
+ -moz-transform: ( $transform )
86
+ -ms-transform: ( $transform )
87
+ -o-transform: ( $transform )
88
+ transform: ( $transform )
89
+
90
+ @mixin transform-style ( $style )
91
+ -webkit-transform-style: ( $style )
92
+ -moz-transform-style: ( $style )
93
+ -ms-transform-style: ( $style )
94
+ transform-style: ( $style )
95
+
96
+ @mixin backface-visibility ( $visibility )
97
+ -webkit-backface-visibility: ( $visibility )
98
+ -moz-backface-visibility: ( $visibility )
99
+ -ms-backface-visibility: ( $visibility )
100
+ backface-visibility: ( $visibility )
101
+
102
+ @mixin perspective ( $perspective )
103
+ -webkit-perspective: ( $perspective )
104
+ -moz-perspective: ( $perspective )
105
+ -ms-perspective: ( $perspective )
106
+ perspective: ( $perspective )
107
+
108
+ @mixin perspective-origin( $origin )
109
+ -webkit-perspective-origin: ( $origin )
110
+ -moz-perspective-origin: ( $origin )
111
+ -ms-perspective-origin: ( $origin )
112
+ perspective-origin: ( $origin )
113
+
114
+ @mixin border-radius ( $radius )
115
+ -webkit-border-radius: ( $radius )
116
+ -moz-border-radius: ( $radius )
117
+ border-radius: ( $radius )
118
+
119
+ @mixin box-sizing( $box-size )
120
+ -webkit-box-sizing: ( $box-size )
121
+ -khtml-box-sizing: ( $box-size )
122
+ -icab-box-sizing: ( $box-size )
123
+ -moz-box-sizing: ( $box-size )
124
+ -o-box-sizing: ( $box-size )
125
+ box-sizing: ( $box-size )
126
+
127
+ @mixin user-select ( $user-select )
128
+ -webkit-user-select: ( $user-select )
129
+ -moz-user-select: ( $user-select )
130
+ -ms-user-select: ( $user-select )
131
+ user-select: ( $user-select )
132
+
133
+ @mixin linear-gradient ( $start-point, $stop1, $stop2 )
134
+ background-image: -webkit-linear-gradient( $start-point, $stop1, $stop2 )
135
+ background-image: -moz-linear-gradient( $start-point, $stop1, $stop2 )
136
+ background-image: -ms-linear-gradient( $start-point, $stop1, $stop2 )
137
+ background-image: linear-gradient( $start-point, $stop1, $stop2 )
@@ -22,11 +22,11 @@ article, aside, details, figcaption, figure, footer, header, hgroup, nav, sectio
22
22
  h1,h2,h3,h4,h5,h6 {font-size: 1.0em; }
23
23
 
24
24
  /* save your sanity */
25
- * {
25
+ * {
26
26
  -webkit-box-sizing: border-box;
27
27
  -khtml-box-sizing: border-box;
28
28
  -icab-box-sizing: border-box;
29
29
  -moz-box-sizing: border-box;
30
30
  -o-box-sizing: border-box;
31
- box-sizing: border-box;
31
+ box-sizing: border-box;
32
32
  }
@@ -0,0 +1,81 @@
1
+ //----------------------------------------------
2
+ // horizontal layout
3
+ $wrap-middle-width: 60%;
4
+ $wrap-outter-width: (100% - $wrap-middle-width)/2;
5
+ //----------------------------------------------
6
+
7
+ #selector-test {
8
+ position: relative;
9
+ text-align: center;
10
+ padding: $selector-test-toolbar-vt-padding 0;
11
+ .wrap {
12
+ display: inline-block;
13
+ position: relative;
14
+ vertical-align: middle;
15
+ padding: 0 .5em;
16
+ &.middle { width: $wrap-middle-width; }
17
+ &.outter { width: $wrap-outter-width; }
18
+ }//.wrap
19
+
20
+ #query { width: 100%; }
21
+
22
+ label {
23
+ display: block;
24
+ text-align: left;
25
+ text-transform: capitalize;
26
+ &:after {
27
+ content: "#{$arrow-right-down}";
28
+ font-size: .8em;
29
+ font-weight: bold;
30
+ padding-left: .3em;
31
+ }
32
+ }//label
33
+ }//#selector-test
34
+
35
+ $drop-indicator-width: 2em;
36
+
37
+ .dropdown {
38
+ position: relative;
39
+ display: block;
40
+ width: 100%;
41
+
42
+ * { z-index: $dropdown-child-z; }
43
+
44
+ button {
45
+ position: relative;
46
+ width: 100%;
47
+ padding-left: .8em;
48
+ padding-right: $drop-indicator-width;
49
+ white-space: nowrap;
50
+ overflow: hidden;
51
+ text-overflow: ellipsis;
52
+ }//button
53
+
54
+ ul {
55
+ position: absolute;
56
+ top: 100%;
57
+ width: 100%;
58
+ float: left;
59
+ opacity: 0;
60
+ visibility: hidden;
61
+ @include transition-two( visibility 0s linear 0.2s,opacity 0.2s linear );
62
+ &.shown {
63
+ opacity: 1;
64
+ visibility:visible;
65
+ @include transition-delay( 0s );
66
+ }//&.shown
67
+ }//ul
68
+
69
+ .drop-indicator {
70
+ color: #eee;
71
+ position: absolute;
72
+ width: $drop-indicator-width;
73
+ right: 0;
74
+ top: 6px;
75
+ bottom: 6px;
76
+ border-left: 1px solid white;
77
+ text-align: center;
78
+ cursor: pointer;
79
+ @include user-select( none );
80
+ }//.drop-indicator
81
+ }//.dropdown
@@ -0,0 +1,11 @@
1
+ $sans: "Helvetica Neue", "HelveticaNeue", Arial;
2
+
3
+ $base-font-size: 16px;
4
+ $base-line-height: 24px;
5
+ $label-line-height: $base-line-height;
6
+
7
+
8
+ @mixin light-text {
9
+ color: #fff;
10
+ text-shadow: 0 -1px rgba(0,0,0, .3);
11
+ }
@@ -0,0 +1,3 @@
1
+ $arrow-right-down: "\21b4";
2
+ $arrow-down-right: "\21b3";
3
+ $arrow-right: "\2192";
@@ -0,0 +1,2 @@
1
+ $ui-locator-view-z: -1;
2
+ $dropdown-child-z: 1;
@@ -0,0 +1,26 @@
1
+ //-------------------------------
2
+ // primary application file
3
+ // all partials should be loaded here.
4
+ //-------------------------------
5
+ // base
6
+ @import "_unicode.scss";
7
+ @import "_mixins.sass";
8
+ @import "_solarized.scss";
9
+ @import "_typography.scss";
10
+ @import "_z_index.scss";
11
+ //----------------------------------
12
+ @import "_reset.scss";
13
+ @import "_elements.scss";
14
+ //----------------------------------
15
+ // global layout affords control
16
+ // over container heights.
17
+ @import "_layout.scss";
18
+ //----------------------------------
19
+ // partials
20
+ @import "_header.scss";
21
+ @import "_selector_test_toolbar.scss";
22
+ @import "_inspect_tabs_list_tabs.scss";
23
+ //-------------------------------
24
+ // vender
25
+ @import "_jquery.treeview.scss";
26
+ @import "_jqui.scss";
Binary file
Binary file
@@ -1,3 +1,4 @@
1
+ require 'frank-cucumber/rect'
1
2
  require 'frank-cucumber/color_helper'
2
3
  require 'frank-cucumber/frank_helper'
3
4
  require 'frank-cucumber/launcher'
@@ -48,7 +48,9 @@ module Frank
48
48
  method_option option
49
49
  end
50
50
  method_option 'arch', :type => :string, :default => 'i386'
51
+ method_option :noclean, :type => :boolean, :default => false, :aliases => '--nc', :desc => "Don't clean the build directory before building"
51
52
  def build
53
+ clean = !options['noclean']
52
54
 
53
55
  in_root do
54
56
  unless File.directory? 'Frank'
@@ -64,14 +66,23 @@ module Frank
64
66
 
65
67
  static_bundle = 'frank_static_resources.bundle'
66
68
 
67
- remove_dir build_output_dir
69
+ if clean
70
+ remove_dir build_output_dir
71
+ end
72
+
73
+ build_steps = 'build'
74
+ if clean
75
+ build_steps = 'clean ' + build_steps
76
+ end
68
77
 
69
78
  extra_opts = XCODEBUILD_OPTIONS.map{ |o| "-#{o} #{options[o]}" if options[o] }.compact.join(' ')
70
79
  extra_opts += " -arch #{options['arch']}"
71
80
 
72
- run %Q|xcodebuild -xcconfig Frank/frankify.xcconfig clean build #{extra_opts} -configuration Debug -sdk iphonesimulator DEPLOYMENT_LOCATION=YES DSTROOT="#{build_output_dir}" FRANK_LIBRARY_SEARCH_PATHS="\\"#{frank_lib_directory}\\""|
81
+ run %Q|xcodebuild -xcconfig Frank/frankify.xcconfig #{build_steps} #{extra_opts} -configuration Debug -sdk iphonesimulator DEPLOYMENT_LOCATION=YES DSTROOT="#{build_output_dir}" FRANK_LIBRARY_SEARCH_PATHS="\\"#{frank_lib_directory}\\""|
73
82
 
74
- FileUtils.mv( Dir.glob( "#{build_output_dir}/*.app" ).first, frankified_app_dir )
83
+ app = Dir.glob("#{build_output_dir}/*.app").delete_if { |x| x =~ /\/#{app_bundle_name}$/ }
84
+ app = app.first
85
+ FileUtils.cp_r("#{app}/.", frankified_app_dir)
75
86
 
76
87
  fix_frankified_apps_bundle_identifier
77
88
 
@@ -4,37 +4,42 @@ require 'rspec/expectations'
4
4
 
5
5
  # -- See -- #
6
6
  Then /^I wait to see "([^\"]*)"$/ do |expected_mark|
7
- wait_until(:message => "waited to see view marked '#{expected_mark}'"){
7
+ quote = get_selector_quote(expected_mark)
8
+ wait_until(:message => "waited to see view marked #{quote}#{expected_mark}#{quote}"){
8
9
  view_with_mark_exists( expected_mark )
9
10
  }
10
11
  end
11
12
 
12
13
  Then /^I wait to not see "([^\"]*)"$/ do |expected_mark|
13
14
  sleep 3 # ugh, this should be removed but I'm worried it'll break existing tests
14
-
15
- wait_until(:message => "waited to not see view marked '#{expected_mark}'"){
15
+ quote = get_selector_quote(expected_mark)
16
+ wait_until(:message => "waited to not see view marked #{quote}#{expected_mark}#{quote}"){
16
17
  !view_with_mark_exists( expected_mark )
17
18
  }
18
19
  end
19
20
 
20
21
  Then /^I should see a navigation bar titled "([^\"]*)"$/ do |expected_mark|
21
- check_element_exists( "navigationItemView marked:'#{expected_mark}'" )
22
+ quote = get_selector_quote(expected_mark)
23
+ check_element_exists( "navigationItemView marked:#{quote}#{expected_mark}#{quote}" )
22
24
  end
23
25
 
24
26
  Then /^I wait to see a navigation bar titled "([^\"]*)"$/ do |expected_mark|
25
- wait_until( :timeout => 30, :message => "waited to see a navigation bar titled '#{expected_mark}'" ) {
26
- element_exists( "navigationItemView marked:'#{expected_mark}'" )
27
+ quote = get_selector_quote(expected_mark)
28
+ wait_until( :timeout => 30, :message => "waited to see a navigation bar titled #{quote}#{expected_mark}#{quote}" ) {
29
+ element_exists( "navigationItemView marked:#{quote}#{expected_mark}#{quote}" )
27
30
  }
28
31
  end
29
32
 
30
33
  Then /^I wait to not see a navigation bar titled "([^\"]*)"$/ do |expected_mark|
31
- wait_until( :timeout => 30, :message => "waited to not see a navigation bar titled '#{expected_mark}'" ) {
32
- !element_exists( "navigationItemView marked:'#{expected_mark}'" )
34
+ quote = get_selector_quote(expected_mark)
35
+ wait_until( :timeout => 30, :message => "waited to not see a navigation bar titled #{quote}#{expected_mark}#{quote}" ) {
36
+ !element_exists( "navigationItemView marked:#{quote}#{expected_mark}#{quote}" )
33
37
  }
34
38
  end
35
39
 
36
40
  Then /^I should see a "([^\"]*)" button$/ do |expected_mark|
37
- check_element_exists("button marked:'#{expected_mark}'")
41
+ quote = get_selector_quote(expected_mark)
42
+ check_element_exists("button marked:#{quote}#{expected_mark}#{quote}")
38
43
  end
39
44
 
40
45
  Then /^I should see "([^\"]*)"$/ do |expected_mark|
@@ -42,7 +47,8 @@ Then /^I should see "([^\"]*)"$/ do |expected_mark|
42
47
  end
43
48
 
44
49
  Then /^I should not see "([^\"]*)"$/ do |expected_mark|
45
- check_element_does_not_exist("view marked:'#{expected_mark}'")
50
+ quote = get_selector_quote(expected_mark)
51
+ check_element_does_not_exist("view marked:#{quote}#{expected_mark}#{quote}")
46
52
  end
47
53
 
48
54
  Then /I should see the following:/ do |table|
@@ -64,6 +70,11 @@ Then /^I should see an alert view titled "([^\"]*)"$/ do |expected_mark|
64
70
  values.should include(expected_mark)
65
71
  end
66
72
 
73
+ Then /^I should see an alert view with the message "([^\"]*)"$/ do |expected_mark|
74
+ values = frankly_map( 'alertView', 'message')
75
+ values.should include(expected_mark)
76
+ end
77
+
67
78
  Then /^I should not see an alert view$/ do
68
79
  check_element_does_not_exist( 'alertView' )
69
80
  end
@@ -71,20 +82,24 @@ end
71
82
  Then /^I should see an element of class "([^\"]*)" with name "([^\"]*)" with the following labels: "([^\"]*)"$/ do |className, classLabel, listOfLabels|
72
83
  arrayOfLabels = listOfLabels.split(',');
73
84
  arrayOfLabels.each do |label|
74
- check_element_exists("view marked:'#{classLabel}' parent view:'#{className}' descendant view marked:'#{label}'")
85
+ quote = get_selector_quote(label)
86
+ check_element_exists("view marked:'#{classLabel}' parent view:'#{className}' descendant view marked:#{quote}#{label}#{quote}")
75
87
  end
76
88
  end
77
89
 
78
90
  Then /^I should see an element of class "([^\"]*)" with name "([^\"]*)" with a "([^\"]*)" button$/ do |className, classLabel, buttonName|
79
- check_element_exists("view marked:'#{classLabel}' parent view:'#{className}' descendant button marked:'#{buttonName}'")
91
+ quote = get_selector_quote(buttonName)
92
+ check_element_exists("view marked:'#{classLabel}' parent view:'#{className}' descendant button marked:#{quote}#{buttonName}#{quote}")
80
93
  end
81
94
 
82
95
  Then /^I should not see a hidden button marked "([^\"]*)"$/ do |expected_mark|
83
- element_is_not_hidden("button marked:'#{expected_mark}'").should be_false
96
+ quote = get_selector_quote(expected_mark)
97
+ element_is_not_hidden("button marked:#{quote}#{expected_mark}#{quote}").should be_false
84
98
  end
85
99
 
86
100
  Then /^I should see a nonhidden button marked "([^\"]*)"$/ do |expected_mark|
87
- element_is_not_hidden("button marked:'#{expected_mark}'").should be_true
101
+ quote = get_selector_quote(expected_mark)
102
+ element_is_not_hidden("button marked:#{quote}#{expected_mark}#{quote}").should be_true
88
103
  end
89
104
 
90
105
  Then /^I should see an element of class "([^\"]*)"$/ do |className|
@@ -101,8 +116,9 @@ end
101
116
  # -- Type/Fill in -- #
102
117
 
103
118
  When /^I type "([^\"]*)" into the "([^\"]*)" text field$/ do |text_to_type, field_name|
104
- text_fields_modified = frankly_map( "textField placeholder:'#{field_name}'", "setText:", text_to_type )
105
- raise "could not find text fields with placeholder '#{field_name}'" if text_fields_modified.empty?
119
+ quote = get_selector_quote(field_name)
120
+ text_fields_modified = frankly_map( "textField placeholder:#{quote}#{field_name}#{quote}", "setText:", text_to_type )
121
+ raise "could not find text fields with placeholder #{quote}#{field_name}#{quote}" if text_fields_modified.empty?
106
122
  #TODO raise warning if text_fields_modified.count > 1
107
123
  end
108
124
 
@@ -154,7 +170,8 @@ end
154
170
  # -- touch -- #
155
171
  # generic views
156
172
  When /^I touch "([^\"]*)"$/ do |mark|
157
- selector = "view marked:'#{mark}' first"
173
+ quote = get_selector_quote(mark)
174
+ selector = "view marked:#{quote}#{mark}#{quote} first"
158
175
  if element_exists(selector)
159
176
  touch( selector )
160
177
  else
@@ -165,10 +182,10 @@ end
165
182
 
166
183
  When /^I touch "([^\"]*)" if exists$/ do |mark|
167
184
  sleep 1
168
- selector = "view marked:'#{mark}' first"
185
+ quote = get_selector_quote(mark)
186
+ selector = "view marked:#{quote}#{mark}#{quote} first"
169
187
  if element_exists(selector)
170
188
  touch(selector)
171
- sleep 1
172
189
  end
173
190
  end
174
191
 
@@ -178,7 +195,8 @@ When /^I touch the first table cell$/ do
178
195
  end
179
196
 
180
197
  When /^I touch the table cell marked "([^\"]*)"$/ do |mark|
181
- touch("tableViewCell marked:'#{mark}'")
198
+ quote = get_selector_quote(mark)
199
+ touch("tableViewCell marked:#{quote}#{mark}#{quote}")
182
200
  end
183
201
 
184
202
  When /^I touch the (\d*)(?:st|nd|rd|th)? table cell$/ do |ordinal|
@@ -189,19 +207,22 @@ end
189
207
  Then /I touch the following:/ do |table|
190
208
  values = frankly_map( 'view', 'accessibilityLabel' )
191
209
  table.raw.each do |expected_mark|
192
- touch( "view marked:'#{expected_mark}'" )
210
+ quote = get_selector_quote(expected_mark)
211
+ touch( "view marked:#{quote}#{expected_mark}#{quote}" )
193
212
  sleep 2
194
213
  end
195
214
  end
196
215
 
197
216
  # buttons
198
217
  When /^I touch the button marked "([^\"]*)"$/ do |mark|
199
- touch( "button marked:'#{mark}'" )
218
+ quote = get_selector_quote(mark)
219
+ touch( "button marked:#{quote}#{mark}#{quote}" )
200
220
  end
201
221
 
202
222
  # action sheets
203
223
  When /^I touch the "([^\"]*)" action sheet button$/ do |mark|
204
- touch( "actionSheet threePartButton marked:'#{mark}'" )
224
+ quote = get_selector_quote(mark)
225
+ touch( "actionSheet threePartButton marked:#{quote}#{mark}#{quote}" )
205
226
  end
206
227
 
207
228
  When /^I touch the (\d*)(?:st|nd|rd|th)? action sheet button$/ do |ordinal|
@@ -211,7 +232,8 @@ end
211
232
 
212
233
  # alert views
213
234
  When /^I touch the "([^\"]*)" alert view button$/ do |mark|
214
- touch( "alertView threePartButton marked:'#{mark}'" )
235
+ quote = get_selector_quote(mark)
236
+ touch( "alertView threePartButton marked:#{quote}#{mark}#{quote}" )
215
237
  end
216
238
 
217
239
  When /^I touch the (\d*)(?:st|nd|rd|th)? alert view button$/ do |ordinal|
@@ -222,14 +244,16 @@ end
222
244
  # -- switch -- #
223
245
 
224
246
  When /^I flip switch "([^\"]*)"$/ do |mark|
225
- touch("view:'UISwitch' marked:'#{mark}'")
247
+ quote = get_selector_quote(mark)
248
+ touch("view:'UISwitch' marked:#{quote}#{mark}#{quote}")
226
249
  end
227
250
 
228
251
 
229
252
  Then /^switch "([^\"]*)" should be (on|off)$/ do |mark,expected_state|
230
253
  expected_state = expected_state == 'on'
231
-
232
- selector = "view:'UISwitch' marked:'#{mark}'"
254
+
255
+ quote = get_selector_quote(mark)
256
+ selector = "view:'UISwitch' marked:#{quote}#{mark}#{quote}"
233
257
  switch_states = frankly_map( selector, "isOn" )
234
258
 
235
259
  switch_states.each do |switch_state|
@@ -247,7 +271,8 @@ end
247
271
  Then /^a pop\-over menu is displayed with the following:$/ do |table|
248
272
  sleep 1
249
273
  table.raw.each do |expected_mark|
250
- check_element_exists "actionSheet view marked:'#{expected_mark}'"
274
+ quote = get_selector_quote(expected_mark)
275
+ check_element_exists "actionSheet view marked:#{quote}#{expected_mark}#{quote}"
251
276
  end
252
277
  end
253
278