briar 0.1.3.b4 → 0.1.3.b5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.gitignore +2 -0
- data/features/step_definitions/control/segmented_control_steps.rb +5 -5
- data/features/step_definitions/email_steps.rb +5 -5
- data/features/step_definitions/keyboard_steps.rb +2 -3
- data/features/step_definitions/picker/date_picker_steps.rb +1 -0
- data/features/step_definitions/table_steps.rb +2 -2
- data/lib/briar.rb +27 -25
- data/lib/briar/alerts_and_sheets/alert_view.rb +12 -12
- data/lib/briar/bars/toolbar.rb +1 -1
- data/lib/briar/briar_core.rb +1 -1
- data/lib/briar/email.rb +16 -21
- data/lib/briar/keyboard/keyboard.rb +6 -6
- data/lib/briar/keyboard/uia_keyboard_language.rb +16 -16
- data/lib/briar/keyboard/uia_numeric_keyboard.rb +13 -9
- data/lib/briar/picker/date_picker_core.rb +116 -40
- data/lib/briar/picker/date_picker_manipulation.rb +31 -6
- data/lib/briar/table.rb +6 -6
- data/lib/briar/text_field.rb +1 -1
- data/lib/briar/uia/briar_ipad_emulation.rb +1 -1
- data/lib/briar/version.rb +1 -1
- metadata +4 -4
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 20943d437cd107ef7346f8b3f087202b566464cf
|
|
4
|
+
data.tar.gz: ed60404c7bda025024d86bbf0cbfdf87799593ec
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: b2838a7535afdd499736697c1e77e40901c6be432a5110a547ec9b1d705c949856dd9981f2e3e60e201b5b96a9d440048444026f780f6e357a2db287041f7637
|
|
7
|
+
data.tar.gz: 3aedf37a8e73a8449607da32c1c73ea9a37eb5c35bb171c510f58409ba9427ab1ddc3cf849a482abc633602550e32139312557908bed04e48deff14001f2cb1b
|
data/.gitignore
CHANGED
|
@@ -15,7 +15,7 @@ end
|
|
|
15
15
|
### deprecated - will remove in future versions ####
|
|
16
16
|
|
|
17
17
|
Then /^I should see the segment I touched (is|is not) selected and the "([^"]*)" should be set correctly$/ do |selectedness, label_id|
|
|
18
|
-
|
|
18
|
+
_deprecated('0.1.1', 'no replacement', :pending)
|
|
19
19
|
#@associated_label = label_id
|
|
20
20
|
#should_see_segment_with_selected_state @control_id, @segment_id, selectedness.eql?('is') ? 1 : 0
|
|
21
21
|
## unexpected!
|
|
@@ -25,19 +25,19 @@ Then /^I should see the segment I touched (is|is not) selected and the "([^"]*)"
|
|
|
25
25
|
end
|
|
26
26
|
|
|
27
27
|
Then /^I touch the segment again$/ do
|
|
28
|
-
|
|
28
|
+
_deprecated('0.1.1', 'no replacement', :pending)
|
|
29
29
|
#touch_segment @segment_id, @control_id
|
|
30
30
|
end
|
|
31
31
|
|
|
32
32
|
Then /^I should see the segment is not selected and the detail label is cleared$/ do
|
|
33
|
-
|
|
33
|
+
_deprecated('0.1.1', 'no replacement', :pending)
|
|
34
34
|
## ugh - that @associated_label variable needs to be set
|
|
35
35
|
#macro %Q|I should see segment "#{@segment_id}" in segmented control "#{@control_id}" is not selected|
|
|
36
36
|
#macro %Q|I should see label "#{@associated_label}" with text ""|
|
|
37
37
|
end
|
|
38
38
|
|
|
39
39
|
Then /^I should see the segment I touched (is|is not) selected and the "([^"]*)" in the "([^"]*)" row should be set correctly$/ do |selectedness, label_id, row_id|
|
|
40
|
-
|
|
40
|
+
_deprecated('0.1.1', 'no replacement', :pending)
|
|
41
41
|
## ugh - that @associated_label variable needs to be set
|
|
42
42
|
#@associated_label = label_id
|
|
43
43
|
#@associated_row = row_id
|
|
@@ -46,7 +46,7 @@ Then /^I should see the segment I touched (is|is not) selected and the "([^"]*)"
|
|
|
46
46
|
end
|
|
47
47
|
|
|
48
48
|
Then /^I should see the segment is not selected and the label in the row is cleared$/ do
|
|
49
|
-
|
|
49
|
+
_deprecated('0.1.1', 'no replacement', :pending)
|
|
50
50
|
## ugh - difficult to extract to a function because we need the
|
|
51
51
|
## @associated_row and @associated_label to be set
|
|
52
52
|
#macro %Q|I should see segment "#{@segment_id}" in segmented control "#{@control_id}" is not selected|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
Then /^I should see email view with body that contains "([^"]*)"$/ do |text|
|
|
2
|
-
if not
|
|
2
|
+
if not ios5?
|
|
3
3
|
warn_about_no_ios5_email_view
|
|
4
4
|
else
|
|
5
5
|
2.times { step_pause }
|
|
@@ -26,7 +26,7 @@ Then /^I touch the "([^"]*)" row and wait to see the email view$/ do |row_id|
|
|
|
26
26
|
end
|
|
27
27
|
|
|
28
28
|
Then /^I should see email view with "([^"]*)" in the subject$/ do |text|
|
|
29
|
-
if not
|
|
29
|
+
if not ios5?
|
|
30
30
|
warn_about_no_ios5_email_view
|
|
31
31
|
else
|
|
32
32
|
wait_for_animation
|
|
@@ -38,7 +38,7 @@ Then /^I should see email view with "([^"]*)" in the subject$/ do |text|
|
|
|
38
38
|
end
|
|
39
39
|
|
|
40
40
|
Then /^I should see email view with recipients? "([^"]*)"$/ do |comma_sep_addrs|
|
|
41
|
-
if not
|
|
41
|
+
if not ios5?
|
|
42
42
|
warn_about_no_ios5_email_view
|
|
43
43
|
else
|
|
44
44
|
should_see_recipients comma_sep_addrs
|
|
@@ -51,7 +51,7 @@ Then /^I should see email view with to field set to "([^"]*)"$/ do |text|
|
|
|
51
51
|
end
|
|
52
52
|
|
|
53
53
|
Then /^I should see email view with text like "([^"]*)" in the subject$/ do |text|
|
|
54
|
-
if not
|
|
54
|
+
if not ios5?
|
|
55
55
|
warn_about_no_ios5_email_view
|
|
56
56
|
else
|
|
57
57
|
should_see_mail_view
|
|
@@ -78,7 +78,7 @@ Given(/^we are testing on the simulator or a device configured to send emails$/)
|
|
|
78
78
|
end
|
|
79
79
|
|
|
80
80
|
Given(/^I can test an email view$/) do
|
|
81
|
-
if (not
|
|
81
|
+
if (not ios5?) and (not uia_available?)
|
|
82
82
|
warn_about_no_ios5_email_view
|
|
83
83
|
pending('cannot test email views yet')
|
|
84
84
|
end
|
|
@@ -17,13 +17,12 @@ When /^I touch the done button the keyboard disappears$/ do
|
|
|
17
17
|
should_not_see_keyboard
|
|
18
18
|
end
|
|
19
19
|
|
|
20
|
-
|
|
21
20
|
Then /^I touch the delete key$/ do
|
|
22
|
-
|
|
21
|
+
keyboard_enter_char 'Delete'
|
|
23
22
|
end
|
|
24
23
|
|
|
25
24
|
Then(/^I turn off spell checking and capitalization$/) do
|
|
26
|
-
|
|
25
|
+
_deprecated('0.1.1', 'not working', :pending)
|
|
27
26
|
#should_see_keyboard
|
|
28
27
|
#turn_autocapitalization_off
|
|
29
28
|
#turn_autocorrect_off
|
|
@@ -85,7 +85,7 @@ Then /^I should see that the text I just entered is in the "([^"]*)" row "([^"]*
|
|
|
85
85
|
end
|
|
86
86
|
|
|
87
87
|
Then /^I move the "([^"]*)" row (up|down) (\d+) times? using the reorder edit control$/ do |row_id, dir, n|
|
|
88
|
-
if
|
|
88
|
+
if ios7?
|
|
89
89
|
pending 'reordering on iOS 7 (more specifically playback) is not supported'
|
|
90
90
|
end
|
|
91
91
|
|
|
@@ -128,7 +128,7 @@ Then /^I should see a detail disclosure chevron in the "([^"]*)" row$/ do |row_i
|
|
|
128
128
|
end
|
|
129
129
|
|
|
130
130
|
Then /^I touch the "([^"]*)" switch in the "([^"]*)" row$/ do |switch_id, row_id|
|
|
131
|
-
|
|
131
|
+
_deprecated('0.1.1', 'write a custom step', :warn)
|
|
132
132
|
touch_switch_in_row switch_id, row_id
|
|
133
133
|
end
|
|
134
134
|
|
data/lib/briar.rb
CHANGED
|
@@ -13,6 +13,7 @@ BRIAR_POST_TIMEOUT=0.5
|
|
|
13
13
|
##################
|
|
14
14
|
|
|
15
15
|
BRIAR_STEP_PAUSE = (ENV['STEP_PAUSE'] || 0.5).to_f
|
|
16
|
+
|
|
16
17
|
# we need an insanely long time out because of some changes in 0.9.163
|
|
17
18
|
# the waits succeed after a short amount of time (visually < 1 sec),
|
|
18
19
|
# but fail if the wait time out is too short (4s)
|
|
@@ -72,38 +73,39 @@ require 'briar/text_field'
|
|
|
72
73
|
require 'briar/text_view'
|
|
73
74
|
|
|
74
75
|
|
|
76
|
+
# <b>DEPRECATED</b> since 0.9.163
|
|
77
|
+
#
|
|
78
|
+
# replaced with:
|
|
79
|
+
# * calabash function <tt>default_device</tt>
|
|
80
|
+
# * methods in <tt>calabash-cucumber/environment_helpers.rb</tt>
|
|
81
|
+
# * briar function <tt>default_device_or_create</tt>
|
|
75
82
|
def device
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
def xamarin_test_cloud?
|
|
81
|
-
ENV['XAMARIN_TEST_CLOUD'] == '1'
|
|
82
|
-
end
|
|
83
|
-
|
|
83
|
+
msg = "use the calabash function 'default_device', one of the methods in calabash-cucumber/environment_helpers.rb', or briar's 'default_device_or_create'"
|
|
84
|
+
_deprecated('0.9.163', msg, :warn)
|
|
85
|
+
default_device_or_create()
|
|
84
86
|
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
unless allowed.include?(type)
|
|
89
|
-
screenshot_and_raise "type '#{type}' must be on of '#{allowed}'"
|
|
87
|
+
d = default_device()
|
|
88
|
+
if d.nil?
|
|
89
|
+
d = Calabash::Cucumber::Device.new(nil, server_version())
|
|
90
90
|
end
|
|
91
|
+
d
|
|
92
|
+
end
|
|
91
93
|
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
94
|
+
# returns the device that is currently being tested against
|
|
95
|
+
#
|
|
96
|
+
# returns the +device+ attr of <tt>Calabash::Cucumber::Launcher</tt> if
|
|
97
|
+
# it is defined. otherwise, creates a new <tt>Calabash::Cucumber::Device</tt>
|
|
98
|
+
# by querying the server.
|
|
99
|
+
#
|
|
100
|
+
# raises an error if the server cannot be reached
|
|
101
|
+
def default_device_or_create
|
|
102
|
+
device = default_device()
|
|
103
|
+
if device.nil?
|
|
104
|
+
device = Calabash::Cucumber::Device.new(nil, server_version())
|
|
100
105
|
end
|
|
106
|
+
device
|
|
101
107
|
end
|
|
102
108
|
|
|
103
109
|
|
|
104
110
|
|
|
105
111
|
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
@@ -8,7 +8,7 @@ module Briar
|
|
|
8
8
|
# touch("view:'_UIModalItemAlertContentView' descendant view:'_UIModalItemTableViewCell' marked:'OK'")
|
|
9
9
|
|
|
10
10
|
def alert_exists? (alert_id=nil)
|
|
11
|
-
if
|
|
11
|
+
if uia_available?
|
|
12
12
|
res = send_uia_command command: 'uia.alert() != null'
|
|
13
13
|
res['value']
|
|
14
14
|
else
|
|
@@ -41,26 +41,26 @@ module Briar
|
|
|
41
41
|
end
|
|
42
42
|
|
|
43
43
|
def should_see_alert_with_title (title, timeout=BRIAR_WAIT_TIMEOUT)
|
|
44
|
-
if
|
|
44
|
+
if ios7?
|
|
45
45
|
warn 'WARN: cannot distinguish between alert titles and messages'
|
|
46
46
|
should_see_alert
|
|
47
|
-
|
|
48
|
-
|
|
47
|
+
msg = "waited for '#{timeout}' but did not see an alert"
|
|
48
|
+
opts = wait_opts(msg, timeout)
|
|
49
|
+
wait_for(opts) do
|
|
50
|
+
not uia_query(:view, marked: "#{title}").empty?
|
|
49
51
|
end
|
|
50
52
|
else
|
|
51
53
|
qstr = 'alertView child label'
|
|
52
54
|
msg = "waited for '#{timeout}' for alert with title '#{title}'"
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
:post_timeout => BRIAR_WAIT_STEP_PAUSE,
|
|
56
|
-
:timeout_message => msg) do
|
|
55
|
+
opts = wait_opts(msg, timeout)
|
|
56
|
+
wait_for(opts) do
|
|
57
57
|
query(qstr, :text).include?(title)
|
|
58
58
|
end
|
|
59
59
|
end
|
|
60
60
|
end
|
|
61
61
|
|
|
62
62
|
def should_see_alert_with_message (message, timeout=BRIAR_WAIT_TIMEOUT)
|
|
63
|
-
if
|
|
63
|
+
if ios7?
|
|
64
64
|
warn 'WARN: cannot distinguish between alert titles and messages'
|
|
65
65
|
should_see_alert
|
|
66
66
|
if uia_query(:view, marked: "#{message}").empty?
|
|
@@ -79,7 +79,7 @@ module Briar
|
|
|
79
79
|
end
|
|
80
80
|
|
|
81
81
|
def alert_button_exists? (button_id)
|
|
82
|
-
if
|
|
82
|
+
if uia_available?
|
|
83
83
|
should_see_alert
|
|
84
84
|
not uia_query(:view, marked: "#{button_id}").empty?
|
|
85
85
|
else
|
|
@@ -95,7 +95,7 @@ module Briar
|
|
|
95
95
|
|
|
96
96
|
def dismiss_alert_with_button (button_label)
|
|
97
97
|
touch_alert_button(button_label)
|
|
98
|
-
if
|
|
98
|
+
if uia_available?
|
|
99
99
|
wait_for_view_to_disappear button_label
|
|
100
100
|
else
|
|
101
101
|
wait_for_view_to_disappear 'alertView'
|
|
@@ -105,7 +105,7 @@ module Briar
|
|
|
105
105
|
|
|
106
106
|
def touch_alert_button(button_title)
|
|
107
107
|
should_see_alert
|
|
108
|
-
if
|
|
108
|
+
if ios7?
|
|
109
109
|
touch("view marked:'#{button_title}'")
|
|
110
110
|
else
|
|
111
111
|
touch("alertView child button marked:'#{button_title}'")
|
data/lib/briar/bars/toolbar.rb
CHANGED
data/lib/briar/briar_core.rb
CHANGED
|
@@ -50,7 +50,7 @@ module Briar
|
|
|
50
50
|
screenshot_and_raise "should see view with id '#{view_id}'"
|
|
51
51
|
end
|
|
52
52
|
|
|
53
|
-
actual_ht = {x
|
|
53
|
+
actual_ht = {:x => res['rect']['center_x'].to_f, :y => res['rect']['center_y'].to_f}
|
|
54
54
|
|
|
55
55
|
unless actual_ht == center_ht
|
|
56
56
|
screenshot_and_raise "#{view_id} has center '#{actual_ht}' but should have center '#{center_ht}'"
|
data/lib/briar/email.rb
CHANGED
|
@@ -4,7 +4,7 @@ module Briar
|
|
|
4
4
|
module Email
|
|
5
5
|
|
|
6
6
|
def email_testable?
|
|
7
|
-
return true if
|
|
7
|
+
return true if ios5?
|
|
8
8
|
uia_available?
|
|
9
9
|
end
|
|
10
10
|
|
|
@@ -21,7 +21,7 @@ module Briar
|
|
|
21
21
|
end
|
|
22
22
|
|
|
23
23
|
def email_body_contains? (text)
|
|
24
|
-
if
|
|
24
|
+
if ios5?
|
|
25
25
|
!query("view:'MFComposeTextContentView' {text LIKE '*#{text}*'}").empty?
|
|
26
26
|
else
|
|
27
27
|
warn 'WARN: iOS > 5 detected - cannot test for email body text'
|
|
@@ -33,7 +33,7 @@ module Briar
|
|
|
33
33
|
end
|
|
34
34
|
|
|
35
35
|
def email_subject_is? (text)
|
|
36
|
-
if
|
|
36
|
+
if ios5?
|
|
37
37
|
email_subject.eql? text
|
|
38
38
|
else
|
|
39
39
|
warn 'WARN: iOS > 5 detected - cannot test for email subject text'
|
|
@@ -41,7 +41,7 @@ module Briar
|
|
|
41
41
|
end
|
|
42
42
|
|
|
43
43
|
def email_subject_has_text_like? (text)
|
|
44
|
-
if
|
|
44
|
+
if ios5?
|
|
45
45
|
!query("view:'MFComposeSubjectView' {text LIKE '*#{text}*'}").empty?
|
|
46
46
|
else
|
|
47
47
|
warn 'WARN: iOS > 5 detected - cannot test for email subject text'
|
|
@@ -53,7 +53,7 @@ module Briar
|
|
|
53
53
|
end
|
|
54
54
|
|
|
55
55
|
def email_to_field_is? (text)
|
|
56
|
-
if
|
|
56
|
+
if ios5?
|
|
57
57
|
email_to.eql? text
|
|
58
58
|
else
|
|
59
59
|
warn 'WARN: iOS > 5 detected - cannot test for email to field'
|
|
@@ -94,13 +94,13 @@ module Briar
|
|
|
94
94
|
timeout = opts[:timeout]
|
|
95
95
|
msg = "waited for '#{timeout}' seconds but did not see email compose view"
|
|
96
96
|
#noinspection RubyParenthesesAfterMethodCallInspection
|
|
97
|
-
|
|
97
|
+
|
|
98
98
|
email_view_mark = opts[:email_view_mark]
|
|
99
99
|
wait_for(:timeout => timeout,
|
|
100
100
|
:retry_frequency => BRIAR_WAIT_RETRY_FREQ,
|
|
101
101
|
:post_timeout => BRIAR_WAIT_STEP_PAUSE,
|
|
102
102
|
:timeout_message => msg) do
|
|
103
|
-
if
|
|
103
|
+
if ios5?
|
|
104
104
|
is_ios5_mail_view
|
|
105
105
|
else
|
|
106
106
|
view_exists? email_view_mark
|
|
@@ -110,7 +110,7 @@ module Briar
|
|
|
110
110
|
|
|
111
111
|
#noinspection RubyResolve
|
|
112
112
|
def device_can_send_email
|
|
113
|
-
return true if
|
|
113
|
+
return true if simulator?
|
|
114
114
|
if defined? backdoor_device_configured_for_mail?
|
|
115
115
|
backdoor_device_configured_for_mail?
|
|
116
116
|
else
|
|
@@ -120,7 +120,6 @@ module Briar
|
|
|
120
120
|
|
|
121
121
|
def delete_draft_and_wait_for (view_id, opts={})
|
|
122
122
|
|
|
123
|
-
|
|
124
123
|
if email_not_testable?
|
|
125
124
|
warn_about_no_ios5_email_view
|
|
126
125
|
return
|
|
@@ -133,10 +132,7 @@ module Briar
|
|
|
133
132
|
# does a wait for iOS > 5 + uia available
|
|
134
133
|
should_see_mail_view opts
|
|
135
134
|
|
|
136
|
-
|
|
137
|
-
device = device()
|
|
138
|
-
|
|
139
|
-
if device.ios5?
|
|
135
|
+
if ios5?
|
|
140
136
|
touch_navbar_item_and_wait_for_view 'Cancel', 'Delete Draft'
|
|
141
137
|
step_pause
|
|
142
138
|
touch_sheet_button_and_wait_for_view 'Delete Draft', view_id
|
|
@@ -147,12 +143,11 @@ module Briar
|
|
|
147
143
|
pending "iOS > 5 detected AND orientation '#{sbo}' - there is a bug in UIAutomation that prohibits touching the cancel button"
|
|
148
144
|
end
|
|
149
145
|
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
pending "iOS > 5 detected AND orientation '#{sbo}' AND simulator - there is a bug in UIAutomation prohibits touching the cancel button"
|
|
146
|
+
if sbo.eql?(:up) and ipad?
|
|
147
|
+
pending "iOS > 5 detected AND orientation '#{sbo}' AND ipad - there is a bug in UIAutomation prohibits touching the cancel button"
|
|
153
148
|
end
|
|
154
149
|
|
|
155
|
-
timeout = BRIAR_WAIT_TIMEOUT
|
|
150
|
+
timeout = BRIAR_WAIT_TIMEOUT
|
|
156
151
|
msg = "waited for '#{timeout}' seconds but did not see cancel button"
|
|
157
152
|
wait_for(:timeout => timeout,
|
|
158
153
|
:retry_frequency => BRIAR_WAIT_RETRY_FREQ,
|
|
@@ -178,7 +173,7 @@ module Briar
|
|
|
178
173
|
end
|
|
179
174
|
|
|
180
175
|
def uia_touch_email_to (opts={})
|
|
181
|
-
default_opts = {:
|
|
176
|
+
default_opts = {:wait_for_keyboard => true}
|
|
182
177
|
opts = default_opts.merge(opts)
|
|
183
178
|
|
|
184
179
|
if uia_not_available?
|
|
@@ -190,11 +185,11 @@ module Briar
|
|
|
190
185
|
point = {:x => rect['x'] + (2 * rect['width']),
|
|
191
186
|
:y => rect['y']}
|
|
192
187
|
uia_touch_with_options(point)
|
|
193
|
-
|
|
188
|
+
uia_wait_for_keyboard if opts[:wait_for_keyboard]
|
|
194
189
|
end
|
|
195
190
|
|
|
196
191
|
def uia_set_email_to(addresses, opts={})
|
|
197
|
-
default_opts = {:
|
|
192
|
+
default_opts = {:wait_for_keyboard => true}
|
|
198
193
|
opts = default_opts.merge(opts)
|
|
199
194
|
uia_touch_email_to opts
|
|
200
195
|
addresses.each do |addr|
|
|
@@ -209,7 +204,7 @@ module Briar
|
|
|
209
204
|
end
|
|
210
205
|
|
|
211
206
|
def uia_send_email_to(addresses, opts={})
|
|
212
|
-
default_opts = {:
|
|
207
|
+
default_opts = {:wait_for_keyboard => true}
|
|
213
208
|
opts = default_opts.merge(opts)
|
|
214
209
|
uia_set_email_to addresses, opts
|
|
215
210
|
uia_touch_send_email
|
|
@@ -72,7 +72,7 @@ module Briar
|
|
|
72
72
|
|
|
73
73
|
#noinspection RubyUnusedLocalVariable
|
|
74
74
|
def briar_clear_text(view_id, timeout=5)
|
|
75
|
-
|
|
75
|
+
_deprecated('0.1.1', "will remove 'timeout' argument in a future release", :warn)
|
|
76
76
|
clear_text("view marked:'#{view_id}'")
|
|
77
77
|
|
|
78
78
|
# i really wanted this to work, but there are too many issues with the
|
|
@@ -93,7 +93,7 @@ module Briar
|
|
|
93
93
|
|
|
94
94
|
#noinspection RubyUnusedLocalVariable
|
|
95
95
|
def set_autocapitalization (type)
|
|
96
|
-
|
|
96
|
+
_deprecated('0.1.1', 'does not work', :pending)
|
|
97
97
|
#if !query('textView index:0').empty?
|
|
98
98
|
# query('textView index:0', [{setAutocapitalizationType: type}])
|
|
99
99
|
#elsif !query('textField index:0').empty?
|
|
@@ -104,13 +104,13 @@ module Briar
|
|
|
104
104
|
end
|
|
105
105
|
|
|
106
106
|
def turn_autocapitalization_off
|
|
107
|
-
|
|
107
|
+
_deprecated('0.1.1', 'does not work', :pending)
|
|
108
108
|
#set_autocapitalization UITextAutocapitalizationTypeNone
|
|
109
109
|
end
|
|
110
110
|
|
|
111
111
|
#noinspection RubyUnusedLocalVariable
|
|
112
112
|
def set_autocorrect (type)
|
|
113
|
-
|
|
113
|
+
_deprecated('0.1.1', 'does not work', :pending)
|
|
114
114
|
#if !query('textView index:0').empty?
|
|
115
115
|
# query('textView index:0', [{setAutocorrectionType: type}])
|
|
116
116
|
#elsif !query('textField index:0').empty?
|
|
@@ -121,12 +121,12 @@ module Briar
|
|
|
121
121
|
end
|
|
122
122
|
|
|
123
123
|
def turn_autocorrect_off
|
|
124
|
-
|
|
124
|
+
_deprecated('0.1.1', 'does not work', :pending)
|
|
125
125
|
# set_autocorrect UITextAutocorrectionTypeNo
|
|
126
126
|
end
|
|
127
127
|
|
|
128
128
|
def turn_spell_correct_off
|
|
129
|
-
|
|
129
|
+
_deprecated('0.1.1', 'does not work', :pending)
|
|
130
130
|
#if !query('textView index:0').empty?
|
|
131
131
|
# query('textView index:0', [{setSpellCheckingType: UITextSpellCheckingTypeNo}])
|
|
132
132
|
#elsif !query('textField index:0').empty?
|
|
@@ -18,20 +18,20 @@ module Briar
|
|
|
18
18
|
# 3 <== there is no international button
|
|
19
19
|
# 4 <== there is an international button
|
|
20
20
|
def keyboard_has_international? (opts={})
|
|
21
|
-
default_opts = {:
|
|
21
|
+
default_opts = {:wait_for_keyboard => false}
|
|
22
22
|
opts = default_opts.merge(opts)
|
|
23
|
-
|
|
23
|
+
wait_for_keyboard if opts[:wait_for_keyboard]
|
|
24
24
|
res = uia('UIATarget.localTarget().frontMostApp().keyboard().buttons().length')
|
|
25
25
|
button_count = res['value']
|
|
26
26
|
button_count == 4
|
|
27
27
|
end
|
|
28
28
|
|
|
29
29
|
def touch_international_key(opts={})
|
|
30
|
-
default_opts = {:
|
|
30
|
+
default_opts = {:wait_for_keyboard => false,
|
|
31
31
|
:step_pause => 0.4}
|
|
32
32
|
opts = default_opts.merge(opts)
|
|
33
33
|
|
|
34
|
-
|
|
34
|
+
wait_for_keyboard if opts[:wait_for_keyboard]
|
|
35
35
|
|
|
36
36
|
unless keyboard_has_international?
|
|
37
37
|
screenshot_and_raise 'could not find an international key on the keyboard'
|
|
@@ -53,9 +53,9 @@ module Briar
|
|
|
53
53
|
# when looking at elements() the space bar will be at the penultimate index
|
|
54
54
|
# when looking at keys() the space bar index seems to float around
|
|
55
55
|
def spacebar_label (opts={})
|
|
56
|
-
default_opts = {:
|
|
56
|
+
default_opts = {:wait_for_keyboard => false}
|
|
57
57
|
opts = default_opts.merge(opts)
|
|
58
|
-
|
|
58
|
+
wait_for_keyboard if opts[:wait_for_keyboard]
|
|
59
59
|
elm_count = uia('UIATarget.localTarget().frontMostApp().keyboard().elements().length')['value']
|
|
60
60
|
spacebar_idx = elm_count - 2
|
|
61
61
|
res = uia("UIATarget.localTarget().frontMostApp().keyboard().elements()[#{spacebar_idx}].label()")
|
|
@@ -63,37 +63,37 @@ module Briar
|
|
|
63
63
|
end
|
|
64
64
|
|
|
65
65
|
def spacebar_has_label?(label, opts={})
|
|
66
|
-
default_opts = {:
|
|
66
|
+
default_opts = {:wait_for_keyboard => false}
|
|
67
67
|
opts = default_opts.merge(opts)
|
|
68
|
-
|
|
68
|
+
wait_for_keyboard if opts[:wait_for_keyboard]
|
|
69
69
|
spacebar_label.eql?(label)
|
|
70
70
|
end
|
|
71
71
|
|
|
72
72
|
def english_keyboard? (opts={})
|
|
73
|
-
default_opts = {:
|
|
73
|
+
default_opts = {:wait_for_keyboard => false}
|
|
74
74
|
opts = default_opts.merge(opts)
|
|
75
|
-
|
|
75
|
+
wait_for_keyboard if opts[:wait_for_keyboard]
|
|
76
76
|
spacebar_has_label? BRIAR_LANGUAGE_KEYS[:en]
|
|
77
77
|
end
|
|
78
78
|
|
|
79
79
|
def german_keyboard? (opts={})
|
|
80
|
-
default_opts = {:
|
|
80
|
+
default_opts = {:wait_for_keyboard => false}
|
|
81
81
|
opts = default_opts.merge(opts)
|
|
82
|
-
|
|
82
|
+
wait_for_keyboard if opts[:wait_for_keyboard]
|
|
83
83
|
spacebar_has_label? BRIAR_LANGUAGE_KEYS[:de]
|
|
84
84
|
end
|
|
85
85
|
|
|
86
86
|
def romaji_keyboard? (opts={})
|
|
87
|
-
default_opts = {:
|
|
87
|
+
default_opts = {:wait_for_keyboard => false}
|
|
88
88
|
opts = default_opts.merge(opts)
|
|
89
|
-
|
|
89
|
+
wait_for_keyboard if opts[:wait_for_keyboard]
|
|
90
90
|
spacebar_has_label? BRIAR_LANGUAGE_KEYS[:ja]
|
|
91
91
|
end
|
|
92
92
|
|
|
93
93
|
def touch_international_until_language(language_key, opts={})
|
|
94
|
-
default_opts = {:
|
|
94
|
+
default_opts = {:wait_for_keyboard => false}
|
|
95
95
|
opts = default_opts.merge(opts)
|
|
96
|
-
|
|
96
|
+
wait_for_keyboard if opts[:wait_for_keyboard]
|
|
97
97
|
|
|
98
98
|
unless keyboard_has_international?
|
|
99
99
|
screenshot_and_raise 'keyboard does not have an international key'
|
|
@@ -5,18 +5,21 @@ module Briar
|
|
|
5
5
|
module Numeric
|
|
6
6
|
|
|
7
7
|
def is_numeric_keyboard?(opts={})
|
|
8
|
-
|
|
8
|
+
if uia_not_available?
|
|
9
|
+
pending('this feature is nyi')
|
|
10
|
+
end
|
|
11
|
+
default_opts = {:wait_for_keyboard => false}
|
|
9
12
|
opts = default_opts.merge(opts)
|
|
10
|
-
|
|
13
|
+
wait_for_keyboard if opts[:wait_for_keyboard]
|
|
11
14
|
res = uia('UIATarget.localTarget().frontMostApp().keyboard().keys().length')['value']
|
|
12
15
|
res == 12
|
|
13
16
|
end
|
|
14
17
|
|
|
15
18
|
def keyboard_send_numeric_backspace(opts={})
|
|
16
|
-
default_opts = {:
|
|
19
|
+
default_opts = {:wait_for_keyboard => false}
|
|
17
20
|
opts = default_opts.merge(opts)
|
|
18
|
-
|
|
19
|
-
if
|
|
21
|
+
wait_for_keyboard if opts[:wait_for_keyboard]
|
|
22
|
+
if uia_available?
|
|
20
23
|
uia('UIATarget.localTarget().frontMostApp().keyboard().buttons()[0].tap()')
|
|
21
24
|
else
|
|
22
25
|
keyboard_enter_char 'Delete'
|
|
@@ -24,15 +27,16 @@ module Briar
|
|
|
24
27
|
end
|
|
25
28
|
|
|
26
29
|
def keyboard_send_backspace(opts={})
|
|
27
|
-
default_opts = {:
|
|
30
|
+
default_opts = {:wait_for_keyboard => false}
|
|
28
31
|
opts = default_opts.merge(opts)
|
|
29
|
-
|
|
32
|
+
wait_for_keyboard if opts[:wait_for_keyboard]
|
|
30
33
|
if is_numeric_keyboard?
|
|
31
34
|
keyboard_send_numeric_backspace
|
|
32
35
|
else
|
|
33
|
-
|
|
36
|
+
keyboard_enter_char 'Delete'
|
|
34
37
|
end
|
|
35
38
|
end
|
|
36
39
|
end
|
|
37
40
|
end
|
|
38
|
-
end
|
|
41
|
+
end
|
|
42
|
+
|
|
@@ -23,7 +23,7 @@ BRIAR_PICKER_12H_BRIEF_DATE_FMT = '%a %b %e'
|
|
|
23
23
|
BRIAR_DATE_FORMATS = {:brief_24h => BRIAR_PICKER_24H_BRIEF_DATE_FMT,
|
|
24
24
|
:brief_12h => BRIAR_PICKER_12H_BRIEF_DATE_FMT}
|
|
25
25
|
|
|
26
|
-
|
|
26
|
+
# todo briar picker should be a class - 1 instance per picker
|
|
27
27
|
module Briar
|
|
28
28
|
module Picker
|
|
29
29
|
module DateCore
|
|
@@ -38,14 +38,37 @@ module Briar
|
|
|
38
38
|
query_str
|
|
39
39
|
end
|
|
40
40
|
|
|
41
|
-
def ruby_time_from_picker (options = {
|
|
42
|
-
|
|
43
|
-
|
|
41
|
+
def ruby_time_from_picker (options = {})
|
|
42
|
+
if not options.is_a?(Hash) or options == nil
|
|
43
|
+
if options == nil
|
|
44
|
+
msg = "'picker_id' argument has been replaced with options hash; pass '{:picker_id => nil}' instead"
|
|
45
|
+
options = {:picker_id => nil}
|
|
46
|
+
else
|
|
47
|
+
msg = "'picker_id' argument has been replaced with options hash; pass '{:picker_id => #{options}}' instead"
|
|
48
|
+
options = {:picker_id => options}
|
|
49
|
+
end
|
|
50
|
+
_deprecated('0.1.3', msg, :warn)
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
default_options = {:picker_id => nil,
|
|
54
|
+
:convert_time_to_utc => false,
|
|
55
|
+
:assert_mode => true,
|
|
56
|
+
:assert_picker => true}
|
|
57
|
+
options = default_options.merge(options)
|
|
44
58
|
|
|
45
|
-
|
|
46
|
-
|
|
59
|
+
picker_id = options[:picker_id]
|
|
60
|
+
|
|
61
|
+
if options[:assert_mode]
|
|
62
|
+
if picker_is_in_countdown_mode picker_id
|
|
63
|
+
screenshot_and_raise 'method is not available for pickers that are not in date or date time mode'
|
|
64
|
+
end
|
|
47
65
|
end
|
|
48
|
-
|
|
66
|
+
|
|
67
|
+
if options[:assert_picker]
|
|
68
|
+
should_see_date_picker picker_id
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
query_str = query_string_for_picker(picker_id)
|
|
49
72
|
res = query(query_str, :date)
|
|
50
73
|
if res.empty?
|
|
51
74
|
screenshot_and_raise "should be able to get date from picker with query '#{query_str}'"
|
|
@@ -192,72 +215,125 @@ module Briar
|
|
|
192
215
|
end
|
|
193
216
|
|
|
194
217
|
# get the times off the picker in 12h and 24h format
|
|
195
|
-
def picker_time_str(format_key, options={
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
218
|
+
def picker_time_str(format_key, options={})
|
|
219
|
+
default_options = {:picker_id => nil,
|
|
220
|
+
:convert_time_to_utc => false,
|
|
221
|
+
:time_on_picker => nil,
|
|
222
|
+
:assert_mode => true}
|
|
223
|
+
options = default_options.merge(options)
|
|
224
|
+
|
|
225
|
+
picker_id = options[:picker_id]
|
|
226
|
+
|
|
227
|
+
if options[:assert_mode]
|
|
228
|
+
if picker_is_in_date_mode picker_id or picker_is_in_countdown_mode picker_id
|
|
229
|
+
screenshot_and_raise 'the time is not applicable for this mode'
|
|
230
|
+
end
|
|
201
231
|
end
|
|
232
|
+
|
|
202
233
|
format = BRIAR_TIME_FORMATS[format_key]
|
|
203
234
|
unless format
|
|
204
235
|
screenshot_and_raise "format '#{format_key}' was not one of '#{BRIAR_TIME_FORMATS}'"
|
|
205
236
|
end
|
|
206
237
|
|
|
207
|
-
time = ruby_time_from_picker
|
|
238
|
+
time = options[:time_on_picker] || ruby_time_from_picker(options)
|
|
208
239
|
time.strftime(format).strip.sub(BRIAR_REMOVE_LEADING_ZERO_REGEX, '')
|
|
209
240
|
end
|
|
210
241
|
|
|
211
242
|
|
|
212
|
-
def picker_time_strs_hash(options={
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
243
|
+
def picker_time_strs_hash(options={})
|
|
244
|
+
default_options = {:picker_id => nil,
|
|
245
|
+
:convert_time_to_utc => false,
|
|
246
|
+
:time_on_picker => nil,
|
|
247
|
+
:assert_mode => true}
|
|
248
|
+
options = default_options.merge(options)
|
|
249
|
+
picker_id = options[:picker_id]
|
|
250
|
+
|
|
251
|
+
if options[:assert_mode]
|
|
252
|
+
if picker_is_in_date_mode picker_id or picker_is_in_countdown_mode picker_id
|
|
253
|
+
screenshot_and_raise 'the time is not applicable for this mode'
|
|
254
|
+
end
|
|
217
255
|
end
|
|
218
256
|
|
|
219
257
|
{:h24 => picker_time_str(:h24, options),
|
|
220
258
|
:h12 => picker_time_str(:h12, options)}
|
|
221
259
|
end
|
|
222
260
|
|
|
223
|
-
def picker_time_strs_arr(options={
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
261
|
+
def picker_time_strs_arr(options={})
|
|
262
|
+
|
|
263
|
+
default_options = {:picker_id => nil,
|
|
264
|
+
:convert_time_to_utc => false,
|
|
265
|
+
:time_on_picker => nil,
|
|
266
|
+
:assert_mode => true}
|
|
267
|
+
options = default_options.merge(options)
|
|
268
|
+
|
|
269
|
+
picker_id = options[:picker_id]
|
|
270
|
+
|
|
271
|
+
if options[:assert_mode]
|
|
272
|
+
if picker_is_in_date_mode picker_id or picker_is_in_countdown_mode picker_id
|
|
273
|
+
screenshot_and_raise 'the time is not applicable for this mode'
|
|
274
|
+
end
|
|
228
275
|
end
|
|
229
276
|
[picker_time_str(:h24, options), picker_time_str(:h12, options)]
|
|
230
277
|
end
|
|
231
278
|
|
|
232
|
-
def picker_brief_date_str(format_key, options={
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
279
|
+
def picker_brief_date_str(format_key, options={})
|
|
280
|
+
|
|
281
|
+
default_options = {:picker_id => nil,
|
|
282
|
+
:convert_time_to_utc => false,
|
|
283
|
+
:time_on_picker => nil,
|
|
284
|
+
:assert_mode => true}
|
|
285
|
+
options = default_options.merge(options)
|
|
286
|
+
|
|
287
|
+
picker_id = options[:picker_id]
|
|
288
|
+
|
|
289
|
+
if options[:assert_mode]
|
|
290
|
+
if picker_is_in_countdown_mode picker_id
|
|
291
|
+
screenshot_and_raise 'date is not applicable for this mode'
|
|
292
|
+
end
|
|
237
293
|
end
|
|
294
|
+
|
|
238
295
|
format = BRIAR_DATE_FORMATS[format_key]
|
|
239
296
|
unless format
|
|
240
297
|
screenshot_and_raise "format '#{format_key}' is not one of '#{BRIAR_DATE_FORMATS.keys}'"
|
|
241
298
|
end
|
|
242
|
-
|
|
299
|
+
|
|
300
|
+
time = options[:time_on_picker] || ruby_time_from_picker(options)
|
|
243
301
|
time.strftime(format).strip.squeeze(' ')
|
|
244
302
|
end
|
|
245
303
|
|
|
246
|
-
def picker_brief_date_strs_hash(options={
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
304
|
+
def picker_brief_date_strs_hash(options={})
|
|
305
|
+
|
|
306
|
+
default_options = {:picker_id => nil,
|
|
307
|
+
:convert_time_to_utc => false,
|
|
308
|
+
:time_on_picker => nil,
|
|
309
|
+
:assert_mode => true}
|
|
310
|
+
options = default_options.merge(options)
|
|
311
|
+
|
|
312
|
+
picker_id = options[:picker_id]
|
|
313
|
+
|
|
314
|
+
if options[:assert_mode]
|
|
315
|
+
if picker_is_in_countdown_mode picker_id
|
|
316
|
+
screenshot_and_raise 'date is not applicable for this mode'
|
|
317
|
+
end
|
|
251
318
|
end
|
|
252
319
|
{:brief_24h => picker_brief_date_str(:brief_24h, options),
|
|
253
320
|
:brief_12h => picker_brief_date_str(:brief_12h, options)}
|
|
254
321
|
end
|
|
255
322
|
|
|
256
|
-
def picker_brief_date_strs_arr(options={
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
323
|
+
def picker_brief_date_strs_arr(options={})
|
|
324
|
+
|
|
325
|
+
default_options = {:picker_id => nil,
|
|
326
|
+
:convert_time_to_utc => false,
|
|
327
|
+
:time_on_picker => nil,
|
|
328
|
+
:assert_mode => true}
|
|
329
|
+
options = default_options.merge(options)
|
|
330
|
+
|
|
331
|
+
picker_id = options[:picker_id]
|
|
332
|
+
|
|
333
|
+
if options[:assert_mode]
|
|
334
|
+
if picker_is_in_countdown_mode picker_id
|
|
335
|
+
screenshot_and_raise 'date is not applicable for this mode'
|
|
336
|
+
end
|
|
261
337
|
end
|
|
262
338
|
[picker_brief_date_str(:brief_24h, options), picker_brief_date_str(:brief_12h, options)]
|
|
263
339
|
end
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
require 'calabash-cucumber'
|
|
2
2
|
require 'date'
|
|
3
|
+
require 'benchmark'
|
|
3
4
|
|
|
4
5
|
=begin
|
|
5
6
|
|
|
@@ -19,7 +20,7 @@ options ==>
|
|
|
19
20
|
# WARN: only set this if you need times converted to UTC - if you are in UTC
|
|
20
21
|
# timezone, don't set this
|
|
21
22
|
:convert_time_to_utc => false,
|
|
22
|
-
#
|
|
23
|
+
# animate the change
|
|
23
24
|
:animate => true,
|
|
24
25
|
# optionally pass the picker id
|
|
25
26
|
:picker_id => nil,
|
|
@@ -89,7 +90,7 @@ module Briar
|
|
|
89
90
|
end
|
|
90
91
|
|
|
91
92
|
def target_date_for_change_time_on_picker_with_time(target_time, convert, picker_id=nil)
|
|
92
|
-
current_time = ruby_time_from_picker picker_id
|
|
93
|
+
current_time = ruby_time_from_picker({:picker_id => picker_id})
|
|
93
94
|
tz_offset = (convert) ? 0 : Rational((target_time.utc_offset/3600.0)/24.0)
|
|
94
95
|
DateTime.new(current_time.year, current_time.mon, current_time.day,
|
|
95
96
|
target_time.hour, target_time.min,
|
|
@@ -136,23 +137,32 @@ module Briar
|
|
|
136
137
|
:picker_id => nil,
|
|
137
138
|
:notify_targets => true})
|
|
138
139
|
|
|
140
|
+
|
|
139
141
|
picker_id = picker_id_from_options options
|
|
140
142
|
unless picker_is_in_time_mode picker_id or picker_is_in_date_and_time_mode picker_id
|
|
141
143
|
screenshot_and_raise 'picker is not in date time or time mode'
|
|
142
144
|
end
|
|
143
145
|
|
|
146
|
+
|
|
144
147
|
should_see_date_picker picker_id
|
|
145
148
|
|
|
149
|
+
|
|
146
150
|
convert = convert_to_utc_from_options options
|
|
147
151
|
|
|
152
|
+
|
|
148
153
|
ensure_can_change_picker_to_date target_dt, picker_id
|
|
149
154
|
|
|
155
|
+
|
|
150
156
|
target_str = convert_date_time_to_objc_fmt target_dt, convert
|
|
151
157
|
fmt_str = date_format_for_target(:objc, convert ? :zoned : :default)
|
|
152
158
|
|
|
159
|
+
|
|
153
160
|
args = args_for_change_date_on_picker options
|
|
161
|
+
|
|
162
|
+
|
|
154
163
|
query_str = query_string_for_picker picker_id
|
|
155
164
|
|
|
165
|
+
|
|
156
166
|
views_touched = map(query_str, :changeDatePickerDate, target_str, fmt_str, *args)
|
|
157
167
|
|
|
158
168
|
if views_touched.empty? or views_touched.member? '<VOID>'
|
|
@@ -169,9 +179,12 @@ module Briar
|
|
|
169
179
|
:animate => true,
|
|
170
180
|
:picker_id => nil,
|
|
171
181
|
:notify_targets => true})
|
|
182
|
+
|
|
172
183
|
convert = convert_to_utc_from_options options
|
|
173
184
|
picker_id = picker_id_from_options options
|
|
185
|
+
|
|
174
186
|
target_dt = target_date_for_change_time_on_picker_with_time_str time_str, convert, picker_id
|
|
187
|
+
|
|
175
188
|
change_picker_date_time target_dt, options
|
|
176
189
|
end
|
|
177
190
|
|
|
@@ -204,10 +217,22 @@ module Briar
|
|
|
204
217
|
end
|
|
205
218
|
|
|
206
219
|
|
|
207
|
-
def set_briar_date_picker_variables(target_dt, options={
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
220
|
+
def set_briar_date_picker_variables(target_dt, options={})
|
|
221
|
+
default_options = {:picker_id => nil,
|
|
222
|
+
:convert_time_to_utc => false,
|
|
223
|
+
:assert_mode => false}
|
|
224
|
+
options = default_options.merge(options)
|
|
225
|
+
|
|
226
|
+
options[:assert_picker] = false
|
|
227
|
+
ruby_picker_time = ruby_time_from_picker options
|
|
228
|
+
|
|
229
|
+
options[:time_on_picker] = ruby_picker_time
|
|
230
|
+
|
|
231
|
+
|
|
232
|
+
picker_mode = picker_mode(options[:picker_id])
|
|
233
|
+
|
|
234
|
+
if picker_mode == UIDatePickerModeDateAndTime or
|
|
235
|
+
picker_mode == UIDatePickerModeTime
|
|
211
236
|
@date_picker_time_12h = picker_time_str :h12, options
|
|
212
237
|
@date_picker_time_24h = picker_time_str :h24, options
|
|
213
238
|
@date_picker_time_hash = picker_time_strs_hash options
|
data/lib/briar/table.rb
CHANGED
|
@@ -208,7 +208,7 @@ module Briar
|
|
|
208
208
|
|
|
209
209
|
def touch_row_and_wait_to_see(row_id, view, opts={})
|
|
210
210
|
if (not opts.is_a?(Hash)) and (not opts.nil?)
|
|
211
|
-
|
|
211
|
+
_deprecated('0.1.3',
|
|
212
212
|
"you should no longer pass a table_id '#{opts}' as an arg, pass opts hash instead",
|
|
213
213
|
:warn)
|
|
214
214
|
opts = {:table_id => opts}
|
|
@@ -241,7 +241,7 @@ module Briar
|
|
|
241
241
|
end
|
|
242
242
|
|
|
243
243
|
def swipe_on_row (dir, row_id, table_id=nil)
|
|
244
|
-
if
|
|
244
|
+
if ios7? and simulator?
|
|
245
245
|
pending('swiping on rows is not available on iOS 7 because of a bug in Xcode 5 simulator')
|
|
246
246
|
end
|
|
247
247
|
wait_for_row row_id, {:table_id => table_id}
|
|
@@ -260,11 +260,11 @@ module Briar
|
|
|
260
260
|
end
|
|
261
261
|
|
|
262
262
|
def query_str_for_confirm_delete_in_row(row_id, table_id=nil)
|
|
263
|
-
if
|
|
263
|
+
if ios5?
|
|
264
264
|
# it is not either of those...
|
|
265
265
|
pending 'cannot detect the confirm delete button (yet) in iOS 5'
|
|
266
266
|
end
|
|
267
|
-
mark =
|
|
267
|
+
mark = ios7? ? 'Delete' : 'Confirm Deletion'
|
|
268
268
|
"#{query_str_for_row row_id, table_id} descendant control marked:'#{mark}'"
|
|
269
269
|
end
|
|
270
270
|
|
|
@@ -343,7 +343,7 @@ module Briar
|
|
|
343
343
|
def should_see_switch_in_row_with_state (switch_id, row_id, state, opts={})
|
|
344
344
|
|
|
345
345
|
if (not opts.is_a?(Hash)) and (not opts.nil?)
|
|
346
|
-
|
|
346
|
+
_deprecated('0.1.1',
|
|
347
347
|
"you should no longer pass a table_id '#{opts}' as an arg, pass opts hash instead",
|
|
348
348
|
:warn)
|
|
349
349
|
opts = {:table_id => opts}
|
|
@@ -412,7 +412,7 @@ module Briar
|
|
|
412
412
|
|
|
413
413
|
def touch_switch_in_row (switch_id, row_id, opts={})
|
|
414
414
|
if (not opts.is_a?(Hash)) and (not opts.nil?)
|
|
415
|
-
|
|
415
|
+
_deprecated('0.1.1',
|
|
416
416
|
"you should no longer pass a table_id '#{opts}' pass a hash instead",
|
|
417
417
|
:warn)
|
|
418
418
|
opts = {:table_id => opts}
|
data/lib/briar/text_field.rb
CHANGED
|
@@ -24,7 +24,7 @@ module Briar
|
|
|
24
24
|
ht = query("textField marked:'#{text_field_id}' child button child imageView", :frame).first
|
|
25
25
|
return false if ht.nil?
|
|
26
26
|
|
|
27
|
-
if
|
|
27
|
+
if ios7?
|
|
28
28
|
ht['X'] == 2.5 and ht['Y'] == 2.5 and ht['Width'] == 14 and ht['Height'] == 14
|
|
29
29
|
else
|
|
30
30
|
ht['X'] == 0 and ht['Y'] == 0 and ht['Width'] == 19 and ht['Height'] == 19
|
data/lib/briar/version.rb
CHANGED
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: briar
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.1.3.
|
|
4
|
+
version: 0.1.3.b5
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Joshua Moody
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date:
|
|
11
|
+
date: 2014-01-08 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: calabash-cucumber
|
|
@@ -145,10 +145,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
145
145
|
version: 1.3.1
|
|
146
146
|
requirements: []
|
|
147
147
|
rubyforge_project:
|
|
148
|
-
rubygems_version: 2.1
|
|
148
|
+
rubygems_version: 2.2.1
|
|
149
149
|
signing_key:
|
|
150
150
|
specification_version: 4
|
|
151
|
-
summary: briar-0.1.3.
|
|
151
|
+
summary: briar-0.1.3.b5
|
|
152
152
|
test_files:
|
|
153
153
|
- features/step_definitions/alerts_and_sheets/action_sheet_steps.rb
|
|
154
154
|
- features/step_definitions/alerts_and_sheets/alert_view_steps.rb
|