briar 0.1.1 → 0.1.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,15 +1,7 @@
1
1
  ---
2
- !binary "U0hBMQ==":
3
- metadata.gz: !binary |-
4
- NzIwYTIwOTk1NzRkOGIwYjljZTZiZWM4YTY4YTg3ZjNiNmUxZjNmMA==
5
- data.tar.gz: !binary |-
6
- YzBjM2M5M2RmMDlmZWQwNDFiYWJhZTk1MWJkNjk5NDU3NjY5ZmE5Zg==
2
+ SHA1:
3
+ metadata.gz: 93314dd49766ff68b61036af263bdb9493a37ae9
4
+ data.tar.gz: a8caf27e07199bdcf4e5d954d190649ecd7d6d44
7
5
  SHA512:
8
- metadata.gz: !binary |-
9
- OTFmOWY1M2JkODY1YmRhMjEzYjBkMWU5N2ZiNzFkNDE3OWM1OGE4NTljM2Zj
10
- MDQwNzNhYjJiNzMzMDg2YmIxYTE1OGVmMGMwODc3Y2NkZWJkY2UwZjE3ZGM4
11
- MzQxMGJmZjMyYTUwZjEwNTgzNjYzZDRlMDg1YWJlZDI4YWUzNzE=
12
- data.tar.gz: !binary |-
13
- MTBhYjhmYTAyZTQxM2IxMmUwNmUzOTVlMzQ2ZmJjYmY0NjhlMzk4NmNhNjBl
14
- NjM4M2RlNzc0ZTRhNTgyM2Y4YTIwZGFjODBmYTM1MWFjMzQ0YzNlNjMzOGIw
15
- MjllNjgxMjExZTM3NDc2ZDEwYTk3ZWZhNDJhN2Y4NTBhOGRkYTY=
6
+ metadata.gz: 368c8b7088534f878a18ab4aad6f2150d42804f9eccf18da6a8f3eaed2adeca9ac38a0278486209b797aacb580fd2be316d44074576cd32a9b5979968918fb8d
7
+ data.tar.gz: 78c34ffbf187dcc6a773937b9f6c4fb819a51fe32117e387a66ee7c8779477540f75c6f360eaf158bbd85ec599ceb2f093f0dcf00ba0796cea7aaad137618727
@@ -37,6 +37,7 @@ Then /^I should (not see|see) (?:the|an?) "([^"]*)" button in the navbar$/ do |v
37
37
  else
38
38
  should_not_see_navbar_button name
39
39
  end
40
+ step_pause
40
41
  end
41
42
 
42
43
  When /^I touch the "([^"]*)" navbar button, then I should see the "([^"]*)" view$/ do |button_name, view_id|
@@ -3,6 +3,6 @@ Then /^I touch the "([^"]*)" toolbar button$/ do |name|
3
3
  end
4
4
 
5
5
  When /^I touch the "([^"]*)" toolbar button, then I should see the "([^"]*)" view$/ do |button_name, view_id|
6
- touch_toolbar_button button_name, view_id
6
+ touch_toolbar_button button_name, {:wait_for_view => view_id}
7
7
  end
8
8
 
@@ -130,6 +130,7 @@ Then /^I touch the "([^"]*)" button in the "([^"]*)" row$/ do |button_id, row_id
130
130
  end
131
131
 
132
132
  Then /^I should see a switch for "([^"]*)" in the "([^"]*)" row that is in the "([^"]*)" position$/ do |switch_id, row_id, on_off|
133
+ warn 'WARN: deprecated 0.1.1 - write a custom step'
133
134
  should_see_switch_in_row_with_state switch_id, row_id, (on_off.eql? 'on') ? 1 : 0
134
135
  end
135
136
 
@@ -138,6 +139,7 @@ Then /^I should see a detail disclosure chevron in the "([^"]*)" row$/ do |row_i
138
139
  end
139
140
 
140
141
  Then /^I touch the "([^"]*)" switch in the "([^"]*)" row$/ do |switch_id, row_id|
142
+ warn 'WARN: deprecated 0.1.1 - write a custom step'
141
143
  touch_switch_in_row switch_id, row_id
142
144
  end
143
145
 
data/lib/briar.rb CHANGED
@@ -8,7 +8,7 @@ TOUCH_TRANSITION_RETRY_FREQ = 0.5
8
8
  ##################
9
9
 
10
10
  BRIAR_STEP_PAUSE = (ENV['STEP_PAUSE'] || 0.5).to_f
11
- BRIAR_WAIT_TIMEOUT = (ENV['WAIT_TIMEOUT'] || 2.0).to_f
11
+ BRIAR_WAIT_TIMEOUT = (ENV['WAIT_TIMEOUT'] || 4.0).to_f
12
12
  BRIAR_RETRY_FREQ = (ENV['RETRY_FREQ'] || 0.1).to_f
13
13
  BRIAR_POST_TIMEOUT = (ENV['POST_TIMEOUT'] || 0.2).to_f
14
14
 
@@ -21,6 +21,7 @@ AL = :accessibilityLabel
21
21
 
22
22
  require 'briar/version'
23
23
  require 'briar/briar_core'
24
+ require 'briar/briar_uia'
24
25
 
25
26
  require 'briar/alerts_and_sheets/alert_view'
26
27
  require 'briar/alerts_and_sheets/action_sheet'
@@ -71,15 +72,6 @@ def device ()
71
72
  end
72
73
  end
73
74
 
74
- def uia_available?
75
- # proxy for testing if run_loop exists
76
- if default_device.nil?
77
- false
78
- else
79
- true
80
- end
81
- end
82
-
83
75
  #noinspection RubyDefParenthesesInspection
84
76
  def gestalt ()
85
77
  pending("deprecated 0.0.8: replaced with Calabash::Cucumber::Device implementation - from now on use use 'device.*'")
@@ -39,8 +39,8 @@ module Briar
39
39
  end
40
40
 
41
41
  def should_see_alert_with_title (title, timeout=BRIAR_WAIT_TIMEOUT)
42
- warn 'cannot distinguish between alert titles and messages'
43
42
  if device.ios7?
43
+ warn 'WARN: cannot distinguish between alert titles and messages'
44
44
  should_see_alert()
45
45
  if uia_query(:view, marked:"#{title}").empty?
46
46
  screenshot_and_raise "expected to see alert with title '#{title}'"
@@ -57,10 +57,10 @@ module Briar
57
57
  end
58
58
  end
59
59
 
60
- def should_see_alert_with_message (message)
61
- warn 'cannot distinguish between alert titles and messages'
60
+ def should_see_alert_with_message (message, timeout=BRIAR_WAIT_TIMEOUT)
62
61
  if device.ios7?
63
- should_see_alert()
62
+ warn 'WARN: cannot distinguish between alert titles and messages'
63
+ should_see_alert
64
64
  if uia_query(:view, marked:"#{message}").empty?
65
65
  screenshot_and_raise "expected to see alert with title '#{message}'"
66
66
  end
@@ -71,7 +71,7 @@ module Briar
71
71
  :retry_frequency => BRIAR_RETRY_FREQ,
72
72
  :post_timeout => BRIAR_POST_TIMEOUT,
73
73
  :timeout_message => msg) do
74
- query(qstr, :text).include?(title)
74
+ query(qstr, :text).include?(message)
75
75
  end
76
76
  end
77
77
  end
@@ -46,22 +46,29 @@ module Briar
46
46
  titles.index(name)
47
47
  end
48
48
 
49
- def should_see_navbar_button (name, is_ui_button=false)
50
- if is_ui_button
51
- qstr = "button marked:'#{name}' parent navigationBar"
52
- timeout = BRIAR_WAIT_TIMEOUT
53
- msg = "waited for '#{timeout}' seconds but did not see '#{name}' in navigation bar"
49
+ # bar_button_type options =>
50
+ # button <= the button is a UIButton
51
+ # bar_item <= the button is UIBarButtonItem
52
+ def should_see_navbar_button (mark, opts={})
53
+ default_opts = {:bar_button_type => :bar_item,
54
+ :timeout => BRIAR_WAIT_TIMEOUT}
55
+ opts = default_opts.merge(opts)
56
+ if opts[:bar_button_type] == :button
57
+ queries = ["buttonLabel marked:'#{mark}' parent navigationBar",
58
+ "button marked:'#{mark}' parent navigationBar"]
59
+ timeout = opts[:timeout]
60
+ msg = "waited for '#{timeout}' seconds but did not see '#{mark}' in navigation bar"
54
61
  wait_for(:timeout => timeout,
55
62
  :retry_frequency => BRIAR_RETRY_FREQ,
56
63
  :post_timeout => BRIAR_POST_TIMEOUT,
57
64
  :timeout_message => msg) do
58
- element_exists qstr
65
+ queries.any? { |query| element_exists query }
59
66
  end
60
67
  else
61
- idx = index_of_navbar_button name
68
+ idx = index_of_navbar_button mark
62
69
  if idx.nil?
63
70
  # check to see if it is a ui button
64
- should_see_navbar_button(name, true)
71
+ should_see_navbar_button mark, {:bar_button_type => :button}
65
72
  end
66
73
  end
67
74
  end
@@ -69,7 +76,7 @@ module Briar
69
76
 
70
77
  def should_not_see_navbar_button (name, is_ui_button=false)
71
78
  if is_ui_button
72
- qstr = "button marked:'#{name}' parent navigationBar"
79
+ qstr = "buttonLabel marked:'#{name}' parent navigationBar"
73
80
  timeout = 1.0
74
81
  msg = "waited for '#{timeout}' seconds but i still see '#{name}' in navigation bar"
75
82
  wait_for(:timeout => timeout,
@@ -2,20 +2,37 @@ require 'calabash-cucumber'
2
2
 
3
3
  module Briar
4
4
  module Bars
5
+
6
+ def toolbar_qstr(toolbar_id=nil)
7
+ if toolbar_id.nil?
8
+ 'toolbar'
9
+ else
10
+ "toolbar marked:'#{toolbar_id}'"
11
+ end
12
+ end
13
+
5
14
  def toolbar_exists? (id)
6
15
  !query("toolbar marked:'#{id}'").empty?
7
16
  end
8
17
 
9
- def should_see_toolbar (id)
10
- screenshot_and_raise "expected to see toolbar with id '#{id}'" unless toolbar_exists? id
18
+ def should_see_toolbar (toolbar_id, timeout=BRIAR_WAIT_TIMEOUT)
19
+ wait_for_toolbar(toolbar_id, timeout)
11
20
  end
12
21
 
13
- def should_not_see_toolbar (id)
14
- screenshot_and_raise "did not expect to see toolbar with id '#{id}'" if toolbar_exists? id
22
+ def should_not_see_toolbar (toolbar_id, timeout=BRIAR_WAIT_TIMEOUT)
23
+ wait_for_toolbar_to_disappear toolbar_id, timeout
24
+ screenshot_and_raise "did not expect to see toolbar with id '#{toolbar_id}'" if toolbar_exists? toolbar_id
15
25
  end
16
26
 
17
- def toolbar_button_exists? (name_or_id)
18
- query("toolbar descendant view marked:#{name_or_id}")
27
+ def toolbar_button_exists?(button_id, opts={:toolbar_id => nil})
28
+ toolbar_id = opts[:toolbar_id]
29
+ if toolbar_id.nil?
30
+ not query("toolbar descendant view marked:'#{button_id}'").empty?
31
+ else
32
+ not query("toolbar marked:'#{toolbar_id}' descendant view marked:'#{button_id}'").empty?
33
+ end
34
+
35
+ # the problem here is that toolbar buttons come in many different flavors
19
36
  ## look for text button
20
37
  #text_button_arr = query("toolbar child toolbarTextButton child button child buttonLabel", :text)
21
38
  #has_text_button = text_button_arr.index(name_or_id) != nil
@@ -26,24 +43,90 @@ module Briar
26
43
  #has_text_button or has_toolbar_button
27
44
  end
28
45
 
29
- def should_see_toolbar_button (name_or_id)
30
- res = toolbar_button_exists? name_or_id
31
- unless res
32
- screenshot_and_raise "could not see toolbar button with name '#{name_or_id}'"
46
+ def wait_for_toolbar_button(button_id, opts={})
47
+ default_opts = {:timeout => BRIAR_WAIT_TIMEOUT,
48
+ :toolbar_id => nil}
49
+ opts = default_opts.merge(opts)
50
+ timeout=opts[:timeout]
51
+ toolbar_id = opts[:toolbar_id]
52
+ if toolbar_id.nil?
53
+ msg = "waited for '#{timeout}' seconds but did not see toolbar button marked: '#{button_id}'"
54
+ else
55
+ msg = "waited for '#{timeout}' seconds but did not see toolbar button marked: '#{button_id}' in toolbar '#{toolbar_id}'"
56
+ end
57
+
58
+ options = {:timeout => timeout,
59
+ :retry_frequency => BRIAR_RETRY_FREQ,
60
+ :post_timeout => BRIAR_POST_TIMEOUT,
61
+ :timeout_message => msg}
62
+ wait_for(options) do
63
+ toolbar_button_exists? button_id, opts
33
64
  end
65
+
34
66
  end
35
67
 
36
- def touch_toolbar_button(button_name, and_wait_for_view_id=nil)
37
- should_see_toolbar_button button_name
38
- if and_wait_for_view_id.nil?
39
- touch("toolbar descendant view marked:'#{button_name}'")
68
+ def should_see_toolbar_button (button_id, opts={:timeout => BRIAR_WAIT_TIMEOUT,
69
+ :toolbar_id => nil})
70
+ wait_for_toolbar_button button_id, opts
71
+ end
72
+
73
+ def wait_for_toolbar_to_disappear(toolbar_id, timeout=BRIAR_WAIT_TIMEOUT)
74
+ msg = "waited for '#{timeout}' seconds but i still see toolbar marked: '#{toolbar_id}'"
75
+ options = {:timeout => timeout,
76
+ :retry_frequency => BRIAR_RETRY_FREQ,
77
+ :post_timeout => BRIAR_POST_TIMEOUT,
78
+ :timeout_message => msg}
79
+
80
+ wait_for(options) do
81
+ not toolbar_exists? toolbar_id
82
+ end
83
+ end
84
+
85
+
86
+ def wait_for_toolbar(toolbar_id, timeout=BRIAR_WAIT_TIMEOUT)
87
+ msg = "waited for '#{timeout}' seconds but did not see toolbar marked: '#{toolbar_id}'"
88
+ options = {:timeout => timeout,
89
+ :retry_frequency => BRIAR_RETRY_FREQ,
90
+ :post_timeout => BRIAR_POST_TIMEOUT,
91
+ :timeout_message => msg}
92
+ wait_for(options) do
93
+ toolbar_exists? toolbar_id
94
+ end
95
+
96
+ end
97
+
98
+
99
+ def touch_toolbar_button(button_id, opts={})
100
+
101
+ if opts.is_a?(Hash)
102
+ default_opts ={:wait_for_view => nil,
103
+ :timeout => BRIAR_WAIT_TIMEOUT,
104
+ :toolbar_id => nil}
105
+ opts = default_opts.merge(opts)
40
106
  else
41
- touch_transition("toolbar descendant view marked:'#{button_name}'",
42
- "view marked:'#{and_wait_for_view_id}'",
43
- {:timeout=>TOUCH_TRANSITION_TIMEOUT,
44
- :retry_frequency=>TOUCH_TRANSITION_RETRY_FREQ})
107
+ warn("WARN: deprecated 0.1.2: second argument should be a hash - found '#{opts}'")
108
+ opts = {:wait_for_view => opts[:wait_for_view],
109
+ :timeout => BRIAR_WAIT_TIMEOUT,
110
+ :toolbar_id => nil}
111
+ end
112
+
113
+ should_see_toolbar_button button_id, opts
114
+
115
+ toolbar_qstr = toolbar_qstr(opts[:toolbar_id])
116
+ touch("#{toolbar_qstr} descendant view marked:'#{button_id}'")
117
+
118
+ wait_for_view = opts[:wait_for_view]
119
+ unless wait_for_view.nil?
120
+ timeout = opts[:timeout]
121
+ msg = "touched '#{button_id}' and waited for '#{timeout}' sec but did not see '#{wait_for_view}'"
122
+ options = {:timeout => timeout,
123
+ :retry_frequency => BRIAR_RETRY_FREQ,
124
+ :post_timeout => BRIAR_POST_TIMEOUT,
125
+ :timeout_message => msg}
126
+ wait_for(options) do
127
+ view_exists? wait_for_view
128
+ end
45
129
  end
46
- step_pause
47
130
  end
48
131
  end
49
132
  end
@@ -11,14 +11,6 @@ module Briar
11
11
  sleep(ANIMATION_PAUSE)
12
12
  end
13
13
 
14
- def uia_not_available
15
- env('NO_LAUNCH') == '1'
16
- end
17
-
18
- def uia_available
19
- not uia_not_available
20
- end
21
-
22
14
  def view_exists? (view_id)
23
15
  !query("view marked:'#{view_id}'").empty?
24
16
  end
@@ -0,0 +1,85 @@
1
+ require 'calabash-cucumber'
2
+
3
+ module Briar
4
+ module UIA
5
+
6
+ def uia_available?
7
+ # proxy for testing if run_loop exists
8
+ not uia_not_available?
9
+ end
10
+
11
+ def uia_not_available?
12
+ default_device.nil?
13
+ end
14
+
15
+ def uia_handle_target_command(cmd, *query_args)
16
+ args = query_args.map do |part|
17
+ if part.is_a?(String)
18
+ "#{escape_uia_string(part)}"
19
+ else
20
+ "#{escape_uia_string(part.to_edn)}"
21
+ end
22
+ end
23
+ command = %Q[target.#{cmd}(#{args.join(', ')})]
24
+ if ENV['DEBUG'] == '1'
25
+ puts 'Sending UIA command'
26
+ puts command
27
+ end
28
+ s=send_uia_command :command => command
29
+ if ENV['DEBUG'] == '1'
30
+ puts 'Result'
31
+ p s
32
+ end
33
+ if s['status'] == 'success'
34
+ s['value']
35
+ else
36
+ raise s
37
+ end
38
+ end
39
+
40
+ def uia_touch_with_options(point, opts={})
41
+ defaults = {:tap_count => 1,
42
+ :touch_count => 1,
43
+ :duration => 1.0}
44
+ opts = defaults.merge(opts)
45
+ pt = "{x: #{point[:x]}, y: #{point[:y]}}"
46
+ args = "{tapCount: #{opts[:tap_count]}, touchCount: #{opts[:touch_count]}, duration: #{opts[:duration]}}"
47
+ uia_handle_target_command(:tapWithOptions, pt, args)
48
+ end
49
+
50
+ def dismiss_ipad_keyboard
51
+ screenshot_and_raise 'cannot dismiss keyboard on iphone' if iphone?
52
+ screenshot_and_raise 'cannot dismiss keyboard without launching with instruments' unless uia_available?
53
+ send_uia_command command:"uia.keyboard().buttons()['Hide keyboard'].tap()"
54
+ step_pause
55
+ end
56
+
57
+ def make_ipad_emulation_1x
58
+ device = device()
59
+ unless device.ipad?
60
+ pending 'this trick only works on the iPad'
61
+ end
62
+
63
+ unless device.ios7?
64
+ pending 'this trick only works on iOS 7'
65
+ end
66
+
67
+ unless uia_available?
68
+ pending 'this trick requires the app be launched with instruments'
69
+ end
70
+
71
+ # this only works because iPhone apps emulated on iPads in iOS 7 _always_
72
+ # launch at 2x
73
+ uia_touch_with_options({x:738, y:24})
74
+ step_pause
75
+ end
76
+
77
+ def ensure_ipad_emulation_1x
78
+ device = device()
79
+ if device.ipad? and device.ios7? and uia_available?
80
+ uia_touch_with_options({x:738, y:24})
81
+ end
82
+ end
83
+
84
+ end
85
+ end
@@ -2,6 +2,7 @@ require 'briar'
2
2
 
3
3
  World(Briar)
4
4
  World(Briar::Core)
5
+ World(Briar::UIA)
5
6
  World(Briar::Alerts_and_Sheets)
6
7
  World(Briar::Bars)
7
8
  World(Briar::Control::Button)
@@ -22,7 +23,6 @@ World(Briar::TextField)
22
23
  World(Briar::TextView)
23
24
 
24
25
 
25
-
26
26
  AfterConfiguration do
27
27
  require 'briar/briar_steps'
28
28
  end
data/lib/briar/email.rb CHANGED
@@ -121,14 +121,20 @@ module Briar
121
121
  end
122
122
  end
123
123
 
124
- def delete_draft_and_wait_for (view_id)
124
+ def delete_draft_and_wait_for (view_id, opts={})
125
+
126
+
125
127
  if email_not_testable?
126
128
  warn_about_no_ios5_email_view
127
129
  return
128
130
  end
129
131
 
132
+ default_opts = {:timeout => BRIAR_WAIT_TIMEOUT,
133
+ :email_view_mark => 'compose email'}
134
+ opts = default_opts.merge(opts)
135
+
130
136
  # does a wait for iOS > 5 + uia available
131
- should_see_mail_view
137
+ should_see_mail_view opts
132
138
 
133
139
  device = device()
134
140
 
@@ -2,8 +2,8 @@ require 'calabash-cucumber'
2
2
 
3
3
  module Briar
4
4
  module ImageView
5
- def image_view_exists? name
6
- query_str = "imageView marked:'#{name}'"
5
+ def image_view_exists?(iv_id)
6
+ query_str = "imageView marked:'#{iv_id}'"
7
7
  exists = !query(query_str).empty?
8
8
  if exists
9
9
  alpha = query(query_str, :alpha).first.to_i
@@ -12,15 +12,33 @@ module Briar
12
12
  end
13
13
  end
14
14
 
15
- def should_see_image_view name
16
- unless image_view_exists? name
17
- screenshot_and_raise "i should see image view with id '#{name}'"
15
+ def should_see_image_view(iv_id, timeout=BRIAR_WAIT_TIMEOUT)
16
+ wait_for_image_view iv_id, timeout
17
+ end
18
+
19
+ def should_not_see_image_view(iv_id, timeout=BRIAR_WAIT_TIMEOUT)
20
+ wait_for_image_view_to_disappear iv_id, timeout
21
+ end
22
+
23
+ def wait_for_image_view(iv_id, timeout=BRIAR_WAIT_TIMEOUT)
24
+ msg = "waited for '#{timeout}' seconds but did not see image view marked: '#{iv_id}'"
25
+ options = {:timeout => timeout,
26
+ :retry_frequency => BRIAR_RETRY_FREQ,
27
+ :post_timeout => BRIAR_POST_TIMEOUT,
28
+ :timeout_message => msg}
29
+ wait_for(options) do
30
+ image_view_exists? iv_id
18
31
  end
19
32
  end
20
33
 
21
- def should_not_see_image_view name
22
- if image_view_exists? name
23
- screenshot_and_raise "i should not see an image view with id #{name}"
34
+ def wait_for_image_view_to_disappear(iv_id, timeout=BRIAR_WAIT_TIMEOUT)
35
+ msg = "waited for '#{timeout}' seconds but i still see image view marked: '#{iv_id}'"
36
+ options = {:timeout => timeout,
37
+ :retry_frequency => BRIAR_RETRY_FREQ,
38
+ :post_timeout => BRIAR_POST_TIMEOUT,
39
+ :timeout_message => msg}
40
+ wait_for(options) do
41
+ not image_view_exists? iv_id
24
42
  end
25
43
  end
26
44
  end
data/lib/briar/table.rb CHANGED
@@ -312,10 +312,33 @@ module Briar
312
312
  should_see_delete_confirmation_in_row row_id
313
313
  end
314
314
 
315
- def should_see_switch_in_row_with_state (switch_id, row_id, state, table_id=nil)
315
+ def should_see_switch_in_row_with_state (switch_id, row_id, state, opts={})
316
+
317
+ if (not opts.is_a?(Hash)) and (not opts.nil?)
318
+ warn "WARN: deprecated 0.1.1 - you should no longer pass a table_id '#{table_id}' at an arg, pass opts hash instead"
319
+ opts = {:table_id => opts}
320
+ end
321
+
322
+ default_opts = {:table_id => nil,
323
+ :switch_class => nil,
324
+ :switch_state_selector => :isOn}
325
+
326
+ opts = default_opts.merge(opts)
327
+
328
+ table_id = opts[:table_id]
329
+
316
330
  should_see_row row_id, table_id
317
- query_str = query_str_for_row_content row_id, table_id
318
- res = query("#{query_str} switch marked:'#{switch_id}'", :isOn).first
331
+ row_content_qstr = query_str_for_row_content row_id, table_id
332
+
333
+ switch_class = opts[:switch_class]
334
+ if switch_class.nil?
335
+ switch_qstr = "switch marked:'#{switch_id}'"
336
+ else
337
+ switch_qstr = "view:'#{switch_class}' marked:'#{switch_id}'"
338
+ end
339
+
340
+ qstr = "#{row_content_qstr} #{switch_qstr}"
341
+ res = query(qstr, opts[:switch_state_selector]).first
319
342
  unless res
320
343
  screenshot_and_raise "expected to find a switch marked '#{switch_id}' in row '#{row_id}'"
321
344
  end
@@ -357,10 +380,32 @@ module Briar
357
380
  should_not_see_row row_id, table_id
358
381
  end
359
382
 
360
- def touch_switch_in_row (switch_id, row_id, table_id=nil)
383
+ def touch_switch_in_row (switch_id, row_id, opts={})
384
+ if (not opts.is_a?(Hash)) and (not table_id.nil?)
385
+ warn "WARN: deprecated 0.1.1 - passing a table_id '#{table_id}' has been deprecated pass a hash instead"
386
+ opts = {:table_id => table_id}
387
+ end
388
+
389
+ default_opts = {:table_id => nil,
390
+ :switch_class => nil}
391
+
392
+ opts = default_opts.merge(opts)
393
+
394
+ table_id = opts[:table_id]
395
+
396
+ switch_class = opts[:switch_class]
397
+
398
+
399
+ if switch_class.nil?
400
+ switch_query = "switch marked:'#{switch_id}'"
401
+ else
402
+ switch_query = "view:'#{switch_class}' marked:'#{switch_id}'"
403
+ end
404
+
405
+
361
406
  should_see_row row_id, table_id
362
407
  query_str = query_str_for_row_content row_id, table_id
363
- touch("#{query_str} switch marked:'#{switch_id}'")
408
+ touch("#{query_str} #{switch_query}")
364
409
  step_pause
365
410
  end
366
411
 
data/lib/briar/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Briar
2
- VERSION = '0.1.1'
2
+ VERSION = '0.1.2'
3
3
  end
metadata CHANGED
@@ -1,55 +1,55 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: briar
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Joshua Moody
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-10-25 00:00:00.000000000 Z
11
+ date: 2013-12-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: calabash-cucumber
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ! '>='
17
+ - - '>='
18
18
  - !ruby/object:Gem::Version
19
19
  version: '0'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ! '>='
24
+ - - '>='
25
25
  - !ruby/object:Gem::Version
26
26
  version: '0'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rake
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - ! '>='
31
+ - - '>='
32
32
  - !ruby/object:Gem::Version
33
33
  version: '0'
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - ! '>='
38
+ - - '>='
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: syntax
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - ! '>='
45
+ - - '>='
46
46
  - !ruby/object:Gem::Version
47
47
  version: '0'
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - ! '>='
52
+ - - '>='
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0'
55
55
  description: extends calabash-ios steps
@@ -101,6 +101,7 @@ files:
101
101
  - lib/briar/bars/toolbar.rb
102
102
  - lib/briar/briar_core.rb
103
103
  - lib/briar/briar_steps.rb
104
+ - lib/briar/briar_uia.rb
104
105
  - lib/briar/control/button.rb
105
106
  - lib/briar/control/segmented_control.rb
106
107
  - lib/briar/control/slider.rb
@@ -131,20 +132,20 @@ require_paths:
131
132
  - lib
132
133
  required_ruby_version: !ruby/object:Gem::Requirement
133
134
  requirements:
134
- - - ! '>='
135
+ - - '>='
135
136
  - !ruby/object:Gem::Version
136
137
  version: '0'
137
138
  required_rubygems_version: !ruby/object:Gem::Requirement
138
139
  requirements:
139
- - - ! '>='
140
+ - - '>='
140
141
  - !ruby/object:Gem::Version
141
142
  version: '0'
142
143
  requirements: []
143
144
  rubyforge_project:
144
- rubygems_version: 2.1.10
145
+ rubygems_version: 2.1.11
145
146
  signing_key:
146
147
  specification_version: 4
147
- summary: briar-0.1.1
148
+ summary: briar-0.1.2
148
149
  test_files:
149
150
  - features/step_definitions/alerts_and_sheets/action_sheet_steps.rb
150
151
  - features/step_definitions/alerts_and_sheets/alert_view_steps.rb