briar 0.0.7 → 0.0.8
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +8 -8
- data/Rakefile +6 -11
- data/bin/briar +58 -0
- data/bin/briar_helpers.rb +28 -2
- data/briar.gemspec +3 -2
- data/features/step_definitions/alerts_and_sheets/action_sheet_steps.rb +10 -4
- data/features/step_definitions/alerts_and_sheets/alert_view_steps.rb +3 -10
- data/features/step_definitions/bars/navbar_steps.rb +1 -9
- data/features/step_definitions/bars/tabbar_steps.rb +2 -4
- data/features/step_definitions/bars/toolbar_steps.rb +2 -11
- data/features/step_definitions/control/button_steps.rb +3 -8
- data/features/step_definitions/control/segmented_control_steps.rb +20 -58
- data/features/step_definitions/email_steps.rb +10 -7
- data/features/step_definitions/keyboard_steps.rb +7 -2
- data/features/step_definitions/picker/date_picker_steps.rb +21 -177
- data/features/step_definitions/table_steps.rb +35 -71
- data/features/step_definitions/text_field_steps.rb +1 -5
- data/features/step_definitions/text_view_steps.rb +2 -2
- data/install-calabash-framework.sh.example +10 -0
- data/lib/briar.rb +31 -5
- data/lib/briar/alerts_and_sheets/action_sheet.rb +99 -0
- data/lib/briar/alerts_and_sheets/alert_view.rb +25 -4
- data/lib/briar/bars/navbar.rb +30 -19
- data/lib/briar/bars/tabbar.rb +7 -4
- data/lib/briar/bars/toolbar.rb +14 -1
- data/lib/briar/briar_core.rb +46 -15
- data/lib/briar/control/button.rb +35 -1
- data/lib/briar/control/segmented_control.rb +69 -8
- data/lib/briar/control/slider.rb +2 -2
- data/lib/briar/cucumber.rb +3 -1
- data/lib/briar/email.rb +19 -13
- data/lib/briar/keyboard.rb +50 -10
- data/lib/briar/label.rb +20 -0
- data/lib/briar/picker/date_picker.rb +88 -584
- data/lib/briar/picker/date_picker_core.rb +293 -0
- data/lib/briar/picker/date_picker_manipulation.rb +255 -0
- data/lib/briar/picker/picker.rb +10 -0
- data/lib/briar/table.rb +261 -93
- data/lib/briar/version.rb +1 -1
- data/spec/spec_helper.rb +0 -2
- metadata +14 -13
- data/lib/briar/gestalt.rb +0 -87
- data/spec/briar/gestalt_spec.rb +0 -66
data/lib/briar/picker/picker.rb
CHANGED
@@ -28,5 +28,15 @@ module Briar
|
|
28
28
|
titles = visible_titles column
|
29
29
|
titles[selected_idx]
|
30
30
|
end
|
31
|
+
|
32
|
+
def scroll_picker(dir, picker_id)
|
33
|
+
should_see_picker picker_id
|
34
|
+
if dir.eql? 'down'
|
35
|
+
picker_scroll_down_on_column 0
|
36
|
+
else
|
37
|
+
picker_scroll_up_on_column 0
|
38
|
+
end
|
39
|
+
step_pause
|
40
|
+
end
|
31
41
|
end
|
32
42
|
end
|
data/lib/briar/table.rb
CHANGED
@@ -2,97 +2,126 @@
|
|
2
2
|
|
3
3
|
module Briar
|
4
4
|
module Table
|
5
|
-
|
5
|
+
|
6
|
+
def query_str_for_row_content (row_id, table_id = nil)
|
7
|
+
base = query_str_for_row row_id, table_id
|
8
|
+
"#{base} tableViewCellContentView descendant"
|
9
|
+
end
|
10
|
+
|
11
|
+
def query_str_for_row (row_id, table_id = nil)
|
6
12
|
table_id == nil ?
|
7
13
|
"tableViewCell marked:'#{row_id}'" :
|
8
|
-
"tableView marked:'#{table_id}'
|
14
|
+
"tableView marked:'#{table_id}' descendant tableViewCell marked:'#{row_id}'"
|
9
15
|
end
|
10
16
|
|
11
|
-
def
|
17
|
+
def query_str_for_rows (table_id = nil)
|
12
18
|
table_id == nil ?
|
13
19
|
'tableViewCell' :
|
14
|
-
"tableView marked:'#{table_id}'
|
20
|
+
"tableView marked:'#{table_id}' descendant tableViewCell"
|
15
21
|
end
|
16
22
|
|
17
|
-
def
|
23
|
+
def query_str_for_table (table_id = nil)
|
18
24
|
table_id == nil ?
|
19
25
|
'tableView' :
|
20
26
|
"tableView marked:'#{table_id}'"
|
21
27
|
end
|
22
28
|
|
23
|
-
def
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
all_rows = query(query_str_rows_in_table(table_id), :accessibilityIdentifier)
|
30
|
-
index = all_rows.index(row_id)
|
31
|
-
|
32
|
-
# problems only happen if we are dealing with the first or last index
|
33
|
-
return exists if index != 0 and index != (all_rows.length - 1)
|
29
|
+
def table_has_calabash_additions
|
30
|
+
success_value = '1'
|
31
|
+
res = query('tableView', [{hasCalabashAdditions: success_value}])
|
32
|
+
screenshot_and_raise 'table is not visible' if res.empty?
|
33
|
+
res.first.eql? success_value
|
34
|
+
end
|
34
35
|
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
cell_h = frame['height'].to_f
|
40
|
-
cell_y = frame['y'].to_f
|
41
|
-
table_h = query(query_str_table(table_id)).first['frame']['height']
|
36
|
+
#noinspection RubyUnusedLocalVariable
|
37
|
+
def row_exists? (row_id, table_id = nil)
|
38
|
+
pending "deprecated 0.0.8 - use 'row_visible?' instead"
|
39
|
+
end
|
42
40
|
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
41
|
+
def row_visible? (row_id, table_id = nil)
|
42
|
+
query_str = query_str_for_row row_id, table_id
|
43
|
+
!query(query_str, AI).empty?
|
44
|
+
|
45
|
+
#query_str = query_str_row_in_table row_id, table_id
|
46
|
+
#exists = !query(query_str, AI).empty?
|
47
|
+
## if row cannot be found just return false
|
48
|
+
#return false unless exists
|
49
|
+
#
|
50
|
+
#all_rows = query(query_str_rows_in_table(table_id), AI)
|
51
|
+
#index = all_rows.index(row_id)
|
52
|
+
#
|
53
|
+
## problems only happen if we are dealing with the first or last index
|
54
|
+
#return exists if index != 0 and index != (all_rows.length - 1)
|
55
|
+
#
|
56
|
+
#if index == 0 or index == (all_rows.length - 1)
|
57
|
+
# # collect information about the table, row, and content offset
|
58
|
+
# content_offset_y = query('tableView', :contentOffset).first['Y']
|
59
|
+
# frame = query(query_str).first['frame']
|
60
|
+
# cell_h = frame['height'].to_f
|
61
|
+
# cell_y = frame['y'].to_f
|
62
|
+
# table_h = query(query_str_table(table_id)).first['frame']['height']
|
63
|
+
#
|
64
|
+
# # if the row is the first row and there has been no scrolling, just return true
|
65
|
+
# return true if index == 0 and content_offset_y == 0
|
66
|
+
# # if the row is the first row and more than half of it is visible
|
67
|
+
# return (content_offset_y + cell_y + (cell_h/2.0))/content_offset_y >= 2.0 if index == 0
|
68
|
+
# # if the row is the last row and more than half of it is visible
|
69
|
+
# return (table_h - (cell_y - content_offset_y))/(cell_h/2.0) >= 1.0 if index == (all_rows.length - 1)
|
70
|
+
#end
|
50
71
|
end
|
51
72
|
|
52
73
|
def should_see_row (row_id, table_id = nil)
|
53
|
-
unless
|
54
|
-
screenshot_and_raise "i do not see a row
|
74
|
+
unless row_visible? row_id, table_id
|
75
|
+
screenshot_and_raise "i do not see a row '#{row_id}'"
|
55
76
|
end
|
56
77
|
end
|
57
78
|
|
58
79
|
|
59
|
-
def should_not_see_row(row_id)
|
60
|
-
if
|
80
|
+
def should_not_see_row(row_id, table_id=nil)
|
81
|
+
if row_visible? row_id, table_id
|
61
82
|
screenshot_and_raise "i should not have seen row named #{row_id}"
|
62
83
|
end
|
63
84
|
end
|
64
85
|
|
65
|
-
def
|
66
|
-
|
67
|
-
|
68
|
-
|
86
|
+
def wait_for_row(row_id, options={:table_id => nil,
|
87
|
+
:timeout => 1.0})
|
88
|
+
table_id = options[:table_id]
|
89
|
+
query_str = query_str_for_row row_id, table_id
|
90
|
+
timeout = options[:timeout] || 1.0
|
91
|
+
msg = "waited for '#{timeout}' seconds but did not see row '#{query_str}' with query '#{query_str}'"
|
92
|
+
wait_for(:timeout => timeout,
|
93
|
+
:retry_frequency => 0.2,
|
94
|
+
:post_timeout => 0.1,
|
95
|
+
:timeout_message => msg ) do
|
96
|
+
row_visible? row_id, table_id
|
97
|
+
end
|
98
|
+
end
|
99
|
+
|
69
100
|
|
101
|
+
def query_str_for_label_and_text_exists (row_id, label_id, table_id = nil)
|
102
|
+
query_str = query_str_for_row_content row_id, table_id
|
103
|
+
"#{query_str} label marked:'#{label_id}'"
|
70
104
|
end
|
71
105
|
|
72
106
|
def row_with_label_and_text_exists? (row_id, label_id, text, table_id = nil)
|
73
107
|
should_see_row row_id
|
74
|
-
|
75
|
-
arr = query(query_str_for_label_and_text_exists(row_id, label_id, table_id), :text)
|
76
|
-
## iOS 4 and 5
|
77
|
-
|
108
|
+
arr = query(query_str_for_label_and_text_exists(row_id, label_id, table_id), :text)
|
78
109
|
(arr.length == 1) and (arr.first.eql? text)
|
79
110
|
end
|
80
111
|
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
actual = query("tableViewCell marked:'#{row_id}' child tableViewCellContentView child label marked:'#{label_id}'", :text).first
|
112
|
+
def should_see_row_with_label_with_text (row_id, label_id, text, table_id=nil)
|
113
|
+
should_see_row row_id, table_id
|
114
|
+
unless row_with_label_and_text_exists? row_id, label_id, text, table_id
|
115
|
+
query_str = query_str_for_row_content row_id, table_id
|
116
|
+
actual = query("#{query_str} label marked:'#{label_id}'", :text).first
|
87
117
|
screenshot_and_raise "expected to see row '#{row_id}' with label '#{label_id}' that has text '#{text}', but found '#{actual}'"
|
88
118
|
end
|
89
119
|
end
|
90
120
|
|
91
121
|
def should_see_row_with_image (row_id, image_id, table_id = nil)
|
92
122
|
should_see_row row_id, table_id
|
93
|
-
|
94
|
-
|
95
|
-
if query(query_str).empty?
|
123
|
+
query_str = query_str_for_row_content row_id, table_id
|
124
|
+
if query("#{query_str} imageView marked:'#{image_id}'").empty?
|
96
125
|
if table_id == nil
|
97
126
|
screenshot_and_raise "expected to see row '#{row_id}' with image view '#{image_id}'"
|
98
127
|
else
|
@@ -102,13 +131,41 @@ module Briar
|
|
102
131
|
end
|
103
132
|
|
104
133
|
|
105
|
-
def
|
106
|
-
|
134
|
+
def briar_scroll_to_row (row_id, table_id=nil)
|
135
|
+
unless table_id.nil?
|
136
|
+
should_see_table row_id
|
137
|
+
end
|
138
|
+
|
139
|
+
query_str = query_str_for_table table_id
|
140
|
+
|
141
|
+
msg = "could find row marked '#{row_id}' in table '#{query_str}'"
|
142
|
+
options = {:query => query_str,
|
143
|
+
:scroll_position => :middle,
|
144
|
+
:animate => true,
|
145
|
+
:failed_message => msg}
|
146
|
+
scroll_to_row_with_mark row_id, options
|
147
|
+
# you will be tempted to remove this pause - don't.
|
148
|
+
# set :animate => false instead
|
149
|
+
step_pause
|
150
|
+
end
|
151
|
+
|
152
|
+
def briar_scroll_to_row_and_touch (row_id, wait_for_view=nil)
|
153
|
+
briar_scroll_to_row(row_id)
|
154
|
+
if wait_for_view.nil?
|
155
|
+
touch_row row_id
|
156
|
+
else
|
157
|
+
touch_row_and_wait_to_see row_id, wait_for_view
|
158
|
+
end
|
159
|
+
end
|
160
|
+
|
161
|
+
def scroll_until_i_see_row (dir, row_id, table_id=nil)
|
162
|
+
warn "deprecated 0.0.8 - use 'scroll_to_row #{row_id}' with optional table view mark"
|
163
|
+
wait_poll({:until_exists => query_str_for_row(row_id, table_id),
|
107
164
|
:timeout => 2}) do
|
108
165
|
scroll('tableView', dir)
|
109
166
|
end
|
110
167
|
|
111
|
-
unless
|
168
|
+
unless row_visible?(row_id)
|
112
169
|
screenshot_and_raise "i scrolled '#{dir}' but did not see '#{row_id}'"
|
113
170
|
end
|
114
171
|
end
|
@@ -116,10 +173,10 @@ module Briar
|
|
116
173
|
|
117
174
|
def touch_row_offset_hash (row_id, table_id = nil)
|
118
175
|
offset = 0
|
119
|
-
query =
|
176
|
+
query = query_str_for_row row_id, table_id
|
120
177
|
if tabbar_visible?
|
121
178
|
#puts "tabbar visible"
|
122
|
-
cells = query(
|
179
|
+
cells = query(query_str_for_rows, AI)
|
123
180
|
#puts "cells = #{cells} is #{row_id} last? ==> #{cells.last.eql?(row_id)}"
|
124
181
|
if cells.last.eql?(row_id)
|
125
182
|
row_h = query(query, :frame).first['Height'].to_i
|
@@ -133,7 +190,7 @@ module Briar
|
|
133
190
|
def touch_row (row_id, table_id = nil)
|
134
191
|
should_see_row row_id
|
135
192
|
offset = touch_row_offset_hash row_id, table_id
|
136
|
-
query_str =
|
193
|
+
query_str = query_str_for_row(row_id, table_id)
|
137
194
|
#puts "touch(\"#{query_str}\", :offset => #{offset})"
|
138
195
|
touch(query_str, :offset => offset)
|
139
196
|
step_pause
|
@@ -141,15 +198,13 @@ module Briar
|
|
141
198
|
|
142
199
|
|
143
200
|
def touch_row_and_wait_to_see(row_id, view, table_id = nil)
|
144
|
-
should_see_row row_id
|
201
|
+
should_see_row row_id, table_id
|
145
202
|
touch_row row_id, table_id
|
146
|
-
|
147
|
-
{:timeout=>TOUCH_TRANSITION_TIMEOUT,
|
148
|
-
:retry_frequency=>TOUCH_TRANSITION_RETRY_FREQ})
|
203
|
+
wait_for_view view, 2.0
|
149
204
|
end
|
150
205
|
|
151
206
|
def table_exists? (table_name)
|
152
|
-
!query("tableView marked:'#{table_name}'",
|
207
|
+
!query("tableView marked:'#{table_name}'", AI).empty?
|
153
208
|
end
|
154
209
|
|
155
210
|
def should_see_table (table_name)
|
@@ -166,64 +221,177 @@ module Briar
|
|
166
221
|
end
|
167
222
|
end
|
168
223
|
|
169
|
-
def swipe_on_row (dir,
|
170
|
-
|
224
|
+
def swipe_on_row (dir, row_id, table_id=nil)
|
225
|
+
if device.ios7?
|
226
|
+
pending ('swipe is not available on iOS 7')
|
227
|
+
end
|
228
|
+
query_str = query_str_for_row row_id, table_id
|
229
|
+
swipe(dir, {:query => query_str})
|
171
230
|
step_pause
|
172
|
-
@row_that_was_swiped =
|
231
|
+
@row_that_was_swiped = row_id
|
173
232
|
end
|
174
233
|
|
175
|
-
|
176
|
-
|
177
|
-
|
234
|
+
|
235
|
+
def should_not_see_delete_confirmation_in_row(row_id, table_id=nil)
|
236
|
+
query_str = query_str_for_row row_id, table_id
|
237
|
+
unless query("#{query_str} descendant tableViewCellDeleteConfirmationControl").empty?
|
238
|
+
screenshot_and_raise "should see a delete confirmation button on row #{row_id}"
|
178
239
|
end
|
179
240
|
end
|
180
241
|
|
181
|
-
|
182
|
-
|
183
|
-
if query("
|
184
|
-
screenshot_and_raise "should see a delete confirmation button on row '#{
|
242
|
+
def should_see_delete_confirmation_in_row(row_id, table_id=nil)
|
243
|
+
query_str = query_str_for_row row_id, table_id
|
244
|
+
if query("#{query_str} descendant tableViewCellDeleteConfirmationControl").empty?
|
245
|
+
screenshot_and_raise "should see a delete confirmation button on row '#{row_id}'"
|
185
246
|
end
|
186
247
|
end
|
187
248
|
|
188
|
-
def touch_delete_confirmation(
|
189
|
-
|
249
|
+
def touch_delete_confirmation(row_id, table_id=nil)
|
250
|
+
query_str = query_str_for_row row_id, table_id
|
251
|
+
touch("#{query_str} descendant tableViewCellDeleteConfirmationControl")
|
190
252
|
step_pause
|
191
253
|
end
|
192
254
|
|
193
|
-
def edit_mode_delete_button_exists? (
|
194
|
-
|
195
|
-
|
255
|
+
def edit_mode_delete_button_exists? (row_id, table_id=nil)
|
256
|
+
query_str = query_str_for_row row_id, table_id
|
257
|
+
#!query("all tableViewCell marked:'#{row_id}' child tableViewCellEditControl").empty?
|
258
|
+
!query("#{query_str} descendant tableViewCellEditControl").empty?
|
259
|
+
end
|
260
|
+
|
261
|
+
def should_see_edit_mode_delete_button (row_id, table_id=nil)
|
262
|
+
unless edit_mode_delete_button_exists? row_id, table_id
|
263
|
+
screenshot_and_raise "should see a edit mode delete button on row #{row_id}"
|
264
|
+
end
|
265
|
+
end
|
266
|
+
|
267
|
+
def should_not_see_edit_mode_delete_button (row_id, table_id=nil)
|
268
|
+
if edit_mode_delete_button_exists? row_id, table_id
|
269
|
+
screenshot_and_raise "i should not see an edit mode delete button on row #{row_id}"
|
270
|
+
end
|
271
|
+
end
|
272
|
+
|
273
|
+
def reorder_button_exists? (row_id, table_id=nil)
|
274
|
+
query_str = query_str_for_row row_id, table_id
|
275
|
+
#!query("tableViewCell marked:'#{row_id}' child tableViewCellReorderControl").empty?
|
276
|
+
#!query("all tableViewCell marked:'#{row_id}' child tableViewCellReorderControl").empty?
|
277
|
+
!query("#{query_str} descendant tableViewCellReorderControl").empty?
|
278
|
+
end
|
279
|
+
|
280
|
+
def should_see_reorder_button (row_id, table_id=nil)
|
281
|
+
unless reorder_button_exists? row_id, table_id
|
282
|
+
screenshot_and_raise "i should be able to see reorder button on row #{row_id}"
|
283
|
+
end
|
196
284
|
end
|
197
285
|
|
198
|
-
def
|
199
|
-
|
200
|
-
screenshot_and_raise "should see
|
286
|
+
def should_not_see_reorder_button (row_id, table_id=nil)
|
287
|
+
if reorder_button_exists? row_id, table_id
|
288
|
+
screenshot_and_raise "i should not see reorder button on row #{row_id}"
|
201
289
|
end
|
202
290
|
end
|
203
291
|
|
204
|
-
def
|
205
|
-
|
206
|
-
|
292
|
+
def should_see_row_at_index (row_id, index, table_id=nil)
|
293
|
+
query_str = query_str_for_rows table_id
|
294
|
+
res = query(query_str, AI)[index.to_i]
|
295
|
+
unless res.eql? row_id
|
296
|
+
screenshot_and_raise "i should see '#{row_id}' at #{index} in '#{query_str}', but found #{res}"
|
207
297
|
end
|
208
298
|
end
|
209
299
|
|
210
|
-
def
|
211
|
-
|
212
|
-
|
213
|
-
|
300
|
+
def touch_edit_mode_delete_button (row_id, table_id=nil)
|
301
|
+
should_see_edit_mode_delete_button row_id, table_id
|
302
|
+
touch("tableViewCell marked:'#{row_id}' child tableViewCellEditControl")
|
303
|
+
step_pause
|
304
|
+
should_see_delete_confirmation_in_row row_id
|
214
305
|
end
|
215
306
|
|
216
|
-
def
|
217
|
-
|
218
|
-
|
307
|
+
def should_see_switch_in_row_with_state (switch_id, row_id, state, table_id=nil)
|
308
|
+
should_see_row row_id, table_id
|
309
|
+
query_str = query_str_for_row_content row_id, table_id
|
310
|
+
res = query("#{query_str} switch marked:'#{switch_id}'", :isOn).first
|
311
|
+
unless res
|
312
|
+
screenshot_and_raise "expected to find a switch marked '#{switch_id}' in row '#{row_id}'"
|
219
313
|
end
|
314
|
+
unless res.to_i == state
|
315
|
+
screenshot_and_raise "expected to find a switch marked '#{switch_id}' in row '#{row_id}' that is '#{state ? 'on' : 'off'}' but found it was '#{res ? 'on' : 'off'}'"
|
316
|
+
end
|
317
|
+
end
|
318
|
+
|
319
|
+
def touch_text_field_clear_button_in_row (row_id, table_id=nil)
|
320
|
+
query_str = query_str_for_row_content row_id, table_id
|
321
|
+
res = query("#{query_str} textField")
|
322
|
+
screenshot_and_raise "expected to see text field in '#{row_id}' row" if res.empty?
|
323
|
+
touch("#{query_str} textField descendant button")
|
324
|
+
step_pause
|
325
|
+
end
|
326
|
+
|
327
|
+
def touch_text_field_in_row_and_wait_for_keyboard (text_field_id, row_id, table_id=nil)
|
328
|
+
should_see_row row_id, table_id
|
329
|
+
query_str = query_str_for_row_content row_id, table_id
|
330
|
+
touch("#{query_str} textField marked:'#{text_field_id}'")
|
331
|
+
step_pause
|
332
|
+
should_see_keyboard
|
220
333
|
end
|
221
334
|
|
222
|
-
def
|
223
|
-
|
224
|
-
|
335
|
+
def should_see_text_field_in_row_with_text (row_id, text_field_id, text, table_id=nil)
|
336
|
+
should_see_row row_id, table_id
|
337
|
+
query_str = "#{query_str_for_row_content row_id, table_id} textField marked:'#{text_field_id}'"
|
338
|
+
res = query(query_str)
|
339
|
+
screenshot_and_raise "expected to see text field in '#{row_id}' row" if res.empty?
|
340
|
+
actual = query(query_str, :text).first
|
341
|
+
screenshot_and_raise "expected to find text field with '#{text}' in row '#{row_id}' but found '#{actual}'" if !text.eql? actual
|
342
|
+
end
|
343
|
+
|
344
|
+
def delete_row_with_edit_mode_delete_button (row_id, table_id=nil)
|
345
|
+
touch_edit_mode_delete_button row_id, table_id
|
346
|
+
touch_delete_confirmation row_id, table_id
|
347
|
+
should_not_see_row row_id, table_id
|
348
|
+
end
|
349
|
+
|
350
|
+
def touch_switch_in_row (switch_id, row_id, table_id=nil)
|
351
|
+
should_see_row row_id, table_id
|
352
|
+
query_str = query_str_for_row_content row_id, table_id
|
353
|
+
touch("#{query_str} switch marked:'#{switch_id}'")
|
354
|
+
step_pause
|
355
|
+
end
|
356
|
+
|
357
|
+
def swipe_to_delete_row (row_id, table_id = nil)
|
358
|
+
|
359
|
+
swipe_on_row 'left', row_id, table_id
|
360
|
+
should_see_delete_confirmation_in_row row_id, table_id
|
361
|
+
touch_delete_confirmation row_id, table_id
|
362
|
+
should_not_see_row row_id, table_id
|
363
|
+
end
|
364
|
+
|
365
|
+
def should_see_disclosure_chevron_in_row (row_id, table_id=nil)
|
366
|
+
should_see_row row_id, table_id
|
367
|
+
# gray disclosure chevron is accessory type 1
|
368
|
+
query_str = query_str_for_row row_id, table_id
|
369
|
+
res = query(query_str, :accessoryType).first
|
370
|
+
unless res == 1
|
371
|
+
screenshot_and_raise "expected to see disclosure chevron in row '#{row_id}' but found '#{res}'"
|
225
372
|
end
|
226
373
|
end
|
227
374
|
|
375
|
+
def should_see_slider_in_row (slider_id, row_id, table_id)
|
376
|
+
query_str = query_str_for_row_content row_id, table_id
|
377
|
+
actual_id = query("#{query_str} slider marked:'#{slider_id}'", AI).first
|
378
|
+
unless actual_id.eql? row_id
|
379
|
+
screenshot_and_raise "expected to see slider '#{slider_id}' in '#{row_id}' but found '#{actual_id}'"
|
380
|
+
end
|
381
|
+
end
|
382
|
+
|
383
|
+
def should_see_slider_in_row_with_value (slider_id, row_id, value, table_id=nil)
|
384
|
+
query_str = query_str_for_row_content row_id, table_id
|
385
|
+
actual_value = query("#{query_str} slider marked:'#{slider_id}'", :value).first.to_i
|
386
|
+
unless actual_value == value.to_i
|
387
|
+
screenshot_and_raise "expected to see slider '#{slider_id}' with '#{value}' in '#{row_id}' but found '#{actual_value}'"
|
388
|
+
end
|
389
|
+
end
|
390
|
+
|
391
|
+
def touch_section_header (header_id, table_id=nil)
|
392
|
+
query_str = query_str_for_table table_id
|
393
|
+
touch("#{query_str} descendant view marked:'#{header_id}'")
|
394
|
+
step_pause
|
395
|
+
end
|
228
396
|
end
|
229
397
|
end
|