watir 7.2.0 → 7.2.1
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/.github/workflows/chrome.yml +1 -1
- data/.github/workflows/edge.yml +1 -1
- data/.github/workflows/firefox.yml +1 -1
- data/.github/workflows/ie.yml +1 -1
- data/.github/workflows/safari.yml +1 -1
- data/.github/workflows/unit.yml +1 -1
- data/.rubocop.yml +25 -12
- data/.rubocop_todo.yml +8 -1
- data/CHANGES.md +6 -1
- data/LICENSE +2 -2
- data/lib/watir/capabilities.rb +1 -1
- data/lib/watir/locators/anchor/selector_builder.rb +3 -0
- data/lib/watir/locators/element/matcher.rb +2 -1
- data/lib/watir/locators/element/selector_builder/regexp_disassembler.rb +2 -1
- data/lib/watir/locators/text_field/matcher.rb +0 -4
- data/lib/watir/version.rb +1 -1
- data/spec/locator_spec_helper.rb +0 -8
- data/spec/unit/capabilities_spec.rb +553 -561
- data/spec/unit/element_locator_spec.rb +89 -78
- data/spec/unit/match_elements/button_spec.rb +69 -62
- data/spec/unit/match_elements/element_spec.rb +303 -309
- data/spec/unit/match_elements/text_field_spec.rb +76 -73
- data/spec/unit/selector_builder/anchor_spec.rb +39 -33
- data/spec/unit/selector_builder/button_spec.rb +209 -202
- data/spec/unit/selector_builder/cell_spec.rb +48 -42
- data/spec/unit/selector_builder/element_spec.rb +634 -627
- data/spec/unit/selector_builder/row_spec.rb +119 -113
- data/spec/unit/selector_builder/text_field_spec.rb +195 -188
- data/spec/unit/selector_builder/textarea_spec.rb +22 -14
- data/spec/unit/wait_spec.rb +85 -81
- data/spec/watirspec/adjacent_spec.rb +249 -247
- data/spec/watirspec/after_hooks_spec.rb +161 -159
- data/spec/watirspec/alert_spec.rb +61 -58
- data/spec/watirspec/browser_spec.rb +409 -409
- data/spec/watirspec/capabilities_spec.rb +89 -99
- data/spec/watirspec/cookies_spec.rb +120 -118
- data/spec/watirspec/drag_and_drop_spec.rb +26 -24
- data/spec/watirspec/element_hidden_spec.rb +66 -60
- data/spec/watirspec/elements/area_spec.rb +49 -47
- data/spec/watirspec/elements/areas_spec.rb +27 -25
- data/spec/watirspec/elements/button_spec.rb +253 -251
- data/spec/watirspec/elements/buttons_spec.rb +36 -34
- data/spec/watirspec/elements/checkbox_spec.rb +48 -36
- data/spec/watirspec/elements/checkboxes_spec.rb +29 -27
- data/spec/watirspec/elements/collections_spec.rb +126 -119
- data/spec/watirspec/elements/date_field_spec.rb +185 -183
- data/spec/watirspec/elements/date_fields_spec.rb +29 -27
- data/spec/watirspec/elements/date_time_field_spec.rb +197 -195
- data/spec/watirspec/elements/date_time_fields_spec.rb +30 -28
- data/spec/watirspec/elements/dd_spec.rb +87 -85
- data/spec/watirspec/elements/dds_spec.rb +27 -25
- data/spec/watirspec/elements/del_spec.rb +106 -104
- data/spec/watirspec/elements/dels_spec.rb +26 -24
- data/spec/watirspec/elements/div_spec.rb +225 -221
- data/spec/watirspec/elements/divs_spec.rb +37 -35
- data/spec/watirspec/elements/dl_spec.rb +110 -108
- data/spec/watirspec/elements/dls_spec.rb +28 -26
- data/spec/watirspec/elements/dt_spec.rb +86 -84
- data/spec/watirspec/elements/dts_spec.rb +27 -25
- data/spec/watirspec/elements/element_spec.rb +794 -775
- data/spec/watirspec/elements/elements_spec.rb +40 -38
- data/spec/watirspec/elements/em_spec.rb +62 -60
- data/spec/watirspec/elements/ems_spec.rb +28 -26
- data/spec/watirspec/elements/filefield_spec.rb +116 -114
- data/spec/watirspec/elements/filefields_spec.rb +28 -26
- data/spec/watirspec/elements/font_spec.rb +20 -18
- data/spec/watirspec/elements/form_spec.rb +51 -49
- data/spec/watirspec/elements/forms_spec.rb +29 -27
- data/spec/watirspec/elements/frame_spec.rb +89 -87
- data/spec/watirspec/elements/frames_spec.rb +27 -25
- data/spec/watirspec/elements/hidden_spec.rb +81 -79
- data/spec/watirspec/elements/hiddens_spec.rb +28 -26
- data/spec/watirspec/elements/hn_spec.rb +59 -57
- data/spec/watirspec/elements/hns_spec.rb +26 -24
- data/spec/watirspec/elements/iframe_spec.rb +195 -191
- data/spec/watirspec/elements/iframes_spec.rb +31 -29
- data/spec/watirspec/elements/image_spec.rb +148 -146
- data/spec/watirspec/elements/images_spec.rb +26 -24
- data/spec/watirspec/elements/input_spec.rb +9 -7
- data/spec/watirspec/elements/ins_spec.rb +106 -104
- data/spec/watirspec/elements/inses_spec.rb +26 -24
- data/spec/watirspec/elements/label_spec.rb +56 -54
- data/spec/watirspec/elements/labels_spec.rb +26 -24
- data/spec/watirspec/elements/li_spec.rb +76 -74
- data/spec/watirspec/elements/link_spec.rb +173 -177
- data/spec/watirspec/elements/links_spec.rb +45 -43
- data/spec/watirspec/elements/lis_spec.rb +27 -25
- data/spec/watirspec/elements/list_spec.rb +44 -42
- data/spec/watirspec/elements/map_spec.rb +57 -55
- data/spec/watirspec/elements/maps_spec.rb +27 -25
- data/spec/watirspec/elements/meta_spec.rb +16 -14
- data/spec/watirspec/elements/metas_spec.rb +26 -24
- data/spec/watirspec/elements/ol_spec.rb +56 -65
- data/spec/watirspec/elements/ols_spec.rb +26 -24
- data/spec/watirspec/elements/option_spec.rb +91 -89
- data/spec/watirspec/elements/p_spec.rb +81 -79
- data/spec/watirspec/elements/pre_spec.rb +77 -75
- data/spec/watirspec/elements/pres_spec.rb +26 -24
- data/spec/watirspec/elements/ps_spec.rb +26 -24
- data/spec/watirspec/elements/radio_spec.rb +251 -249
- data/spec/watirspec/elements/radios_spec.rb +28 -26
- data/spec/watirspec/elements/select_list_spec.rb +537 -526
- data/spec/watirspec/elements/select_lists_spec.rb +32 -30
- data/spec/watirspec/elements/span_spec.rb +112 -110
- data/spec/watirspec/elements/spans_spec.rb +26 -24
- data/spec/watirspec/elements/strong_spec.rb +58 -58
- data/spec/watirspec/elements/strongs_spec.rb +28 -26
- data/spec/watirspec/elements/table_spec.rb +192 -139
- data/spec/watirspec/elements/tables_spec.rb +28 -26
- data/spec/watirspec/elements/tbody_spec.rb +74 -72
- data/spec/watirspec/elements/tbodys_spec.rb +40 -38
- data/spec/watirspec/elements/td_spec.rb +66 -64
- data/spec/watirspec/elements/tds_spec.rb +41 -39
- data/spec/watirspec/elements/text_field_spec.rb +206 -204
- data/spec/watirspec/elements/text_fields_spec.rb +30 -28
- data/spec/watirspec/elements/textarea_spec.rb +20 -18
- data/spec/watirspec/elements/textareas_spec.rb +18 -16
- data/spec/watirspec/elements/tfoot_spec.rb +65 -63
- data/spec/watirspec/elements/tfoots_spec.rb +42 -40
- data/spec/watirspec/elements/thead_spec.rb +65 -63
- data/spec/watirspec/elements/theads_spec.rb +42 -40
- data/spec/watirspec/elements/tr_spec.rb +48 -46
- data/spec/watirspec/elements/trs_spec.rb +42 -40
- data/spec/watirspec/elements/ul_spec.rb +56 -54
- data/spec/watirspec/elements/uls_spec.rb +26 -24
- data/spec/watirspec/radio_set_spec.rb +269 -267
- data/spec/watirspec/screenshot_spec.rb +20 -18
- data/spec/watirspec/scroll_spec.rb +152 -148
- data/spec/watirspec/shadow_root_spec.rb +86 -83
- data/spec/watirspec/user_editable_spec.rb +200 -198
- data/spec/watirspec/wait_spec.rb +289 -295
- data/spec/watirspec/window_switching_spec.rb +422 -434
- data/spec/watirspec_helper.rb +1 -23
- data/watir.gemspec +5 -4
- metadata +44 -33
- data/spec/watirspec/attributes_spec.rb +0 -18
- data/spec/watirspec/elements/table_nesting_spec.rb +0 -51
- data/spec/watirspec/special_chars_spec.rb +0 -23
|
@@ -2,201 +2,203 @@
|
|
|
2
2
|
|
|
3
3
|
require 'watirspec_helper'
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
.
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
.
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
.
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
.
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
.
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
.
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
5
|
+
module Watir
|
|
6
|
+
describe DateTimeField do
|
|
7
|
+
before do
|
|
8
|
+
browser.goto(WatirSpec.url_for('forms_with_input_elements.html'))
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
# Exists method
|
|
12
|
+
describe '#exists?' do
|
|
13
|
+
it 'returns true if the element exists' do
|
|
14
|
+
expect(browser.date_time_field(id: 'html5_datetime-local')).to exist
|
|
15
|
+
expect(browser.date_time_field(id: /html5_datetime-local/)).to exist
|
|
16
|
+
expect(browser.date_time_field(name: 'html5_datetime-local')).to exist
|
|
17
|
+
expect(browser.date_time_field(name: /html5_datetime-local/)).to exist
|
|
18
|
+
expect(browser.date_time_field(text: '')).to exist
|
|
19
|
+
expect(browser.date_time_field(text: //)).to exist
|
|
20
|
+
expect(browser.date_time_field(index: 0)).to exist
|
|
21
|
+
expect(browser.date_time_field(label: 'HTML5 Datetime Local')).to exist
|
|
22
|
+
expect(browser.date_time_field(label: /Local$/)).to exist
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
it 'returns true if the datetime-local element exists',
|
|
26
|
+
except: {browser: :ie, reason: 'Date type not recognized'} do
|
|
27
|
+
expect(browser.date_time_field(xpath: "//input[@id='html5_datetime-local']")).to exist
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
it 'returns the date-time field if given no args' do
|
|
31
|
+
expect(browser.date_time_field).to exist
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
it 'respects date-time fields types',
|
|
35
|
+
except: {browser: :ie, reason: 'Date type not recognized'} do
|
|
36
|
+
expect(browser.date_time_field.type).to eq('datetime-local')
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
it 'returns false if the element does not exist' do
|
|
40
|
+
expect(browser.date_time_field(id: 'no_such_id')).not_to exist
|
|
41
|
+
expect(browser.date_time_field(id: /no_such_id/)).not_to exist
|
|
42
|
+
expect(browser.date_time_field(name: 'no_such_name')).not_to exist
|
|
43
|
+
expect(browser.date_time_field(name: /no_such_name/)).not_to exist
|
|
44
|
+
expect(browser.date_time_field(value: 'no_such_value')).not_to exist
|
|
45
|
+
expect(browser.date_time_field(value: /no_such_value/)).not_to exist
|
|
46
|
+
expect(browser.date_time_field(text: 'no_such_text')).not_to exist
|
|
47
|
+
expect(browser.date_time_field(text: /no_such_text/)).not_to exist
|
|
48
|
+
expect(browser.date_time_field(class: 'no_such_class')).not_to exist
|
|
49
|
+
expect(browser.date_time_field(class: /no_such_class/)).not_to exist
|
|
50
|
+
expect(browser.date_time_field(index: 1337)).not_to exist
|
|
51
|
+
expect(browser.date_time_field(xpath: "//input[@id='no_such_id']")).not_to exist
|
|
52
|
+
expect(browser.date_time_field(label: 'bad label')).not_to exist
|
|
53
|
+
expect(browser.date_time_field(label: /bad label/)).not_to exist
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
it "raises TypeError when 'what' argument is invalid" do
|
|
57
|
+
expect { browser.date_time_field(id: 3.14).exists? }.to raise_error(TypeError)
|
|
58
|
+
end
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
# Attribute methods
|
|
62
|
+
describe '#id' do
|
|
63
|
+
it 'returns the id attribute if the date-time field exists' do
|
|
64
|
+
expect(browser.date_time_field(name: 'html5_datetime-local').id).to eq 'html5_datetime-local'
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
it "raises UnknownObjectException if the date-time field doesn't exist" do
|
|
68
|
+
expect { browser.date_time_field(index: 1337).id }.to raise_unknown_object_exception
|
|
69
|
+
end
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
describe '#name' do
|
|
73
|
+
it 'returns the name attribute if the date-time field exists' do
|
|
74
|
+
expect(browser.date_time_field(id: 'html5_datetime-local').name).to eq 'html5_datetime-local'
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
it "raises UnknownObjectException if the date-time field doesn't exist" do
|
|
78
|
+
expect { browser.date_time_field(index: 1337).name }.to raise_unknown_object_exception
|
|
79
|
+
end
|
|
80
|
+
end
|
|
81
|
+
|
|
82
|
+
describe '#type' do
|
|
83
|
+
it 'returns the type attribute if the date-time field exists',
|
|
84
|
+
except: {browser: :ie, reason: 'Date type not recognized'} do
|
|
85
|
+
expect(browser.date_time_field(id: 'html5_datetime-local').type).to eq 'datetime-local'
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
it "raises UnknownObjectException if the date-time field doesn't exist" do
|
|
89
|
+
expect { browser.date_time_field(index: 1337).type }.to raise_unknown_object_exception
|
|
90
|
+
end
|
|
91
|
+
end
|
|
92
|
+
|
|
93
|
+
describe '#value' do
|
|
94
|
+
it 'returns the value attribute if the date-time field exists' do
|
|
95
|
+
expect(browser.date_time_field(id: 'html5_datetime-local').value).to eq ''
|
|
96
|
+
end
|
|
97
|
+
|
|
98
|
+
it "raises UnknownObjectException if the date-time field doesn't exist" do
|
|
99
|
+
expect { browser.date_time_field(index: 1337).value }.to raise_unknown_object_exception
|
|
100
|
+
end
|
|
101
|
+
end
|
|
102
|
+
|
|
103
|
+
describe '#respond_to?' do
|
|
104
|
+
it 'returns true for all attribute methods' do
|
|
105
|
+
expect(browser.date_time_field).to respond_to(:class_name)
|
|
106
|
+
expect(browser.date_time_field).to respond_to(:id)
|
|
107
|
+
expect(browser.date_time_field).to respond_to(:name)
|
|
108
|
+
expect(browser.date_time_field).to respond_to(:title)
|
|
109
|
+
expect(browser.date_time_field).to respond_to(:type)
|
|
110
|
+
expect(browser.date_time_field).to respond_to(:value)
|
|
111
|
+
end
|
|
112
|
+
end
|
|
113
|
+
|
|
114
|
+
# Access methods
|
|
115
|
+
describe '#enabled?' do
|
|
116
|
+
it 'returns true for enabled date-time fields' do
|
|
117
|
+
expect(browser.browser.date_time_field(id: 'html5_datetime-local')).to be_enabled
|
|
118
|
+
end
|
|
119
|
+
|
|
120
|
+
it "raises UnknownObjectException if the date-time field doesn't exist" do
|
|
121
|
+
expect { browser.browser.date_time_field(id: 'no_such_id').enabled? }.to raise_unknown_object_exception
|
|
122
|
+
end
|
|
123
|
+
end
|
|
124
|
+
|
|
125
|
+
# Manipulation methods
|
|
126
|
+
describe '#value=' do
|
|
127
|
+
it 'sets the value of the element' do
|
|
128
|
+
date_time = ::Time.now
|
|
129
|
+
date_time_field = browser.date_time_field(id: 'html5_datetime-local')
|
|
130
|
+
date_time_field.value = date_time
|
|
131
|
+
expect(::Time.parse(date_time_field.value).strftime('%Y-%m-%dT%H:%M'))
|
|
132
|
+
.to eq date_time.strftime('%Y-%m-%dT%H:%M')
|
|
133
|
+
end
|
|
134
|
+
|
|
135
|
+
it 'sets the value when accessed through the enclosing Form' do
|
|
136
|
+
date_time = ::Time.now
|
|
137
|
+
date_time_field = browser.form(id: 'new_user').date_time_field(id: 'html5_datetime-local')
|
|
138
|
+
date_time_field.value = date_time
|
|
139
|
+
expect(::Time.parse(date_time_field.value).strftime('%Y-%m-%dT%H:%M'))
|
|
140
|
+
.to eq date_time.strftime('%Y-%m-%dT%H:%M')
|
|
141
|
+
end
|
|
142
|
+
|
|
143
|
+
it "raises UnknownObjectException if the date-time field doesn't exist" do
|
|
144
|
+
expect { browser.date_time_field(id: 'no_such_id').value = ::Time.now }.to raise_unknown_object_exception
|
|
145
|
+
end
|
|
146
|
+
|
|
147
|
+
it 'raises ArgumentError if using non-Date parameter' do
|
|
148
|
+
expect { browser.date_time_field(id: 'no_such_id').value = 'foo' }.to raise_exception ArgumentError
|
|
149
|
+
end
|
|
150
|
+
end
|
|
151
|
+
|
|
152
|
+
describe '#set!' do
|
|
153
|
+
it 'sets the value of the element' do
|
|
154
|
+
date_time = ::Time.now
|
|
155
|
+
date_time_field = browser.date_time_field(id: 'html5_datetime-local')
|
|
156
|
+
date_time_field.set! date_time
|
|
157
|
+
expect(::Time.parse(date_time_field.value).strftime('%Y-%m-%dT%H:%M'))
|
|
158
|
+
.to eq date_time.strftime('%Y-%m-%dT%H:%M')
|
|
159
|
+
end
|
|
160
|
+
|
|
161
|
+
it 'sets the value when accessed through the enclosing Form' do
|
|
162
|
+
date_time = ::Time.now
|
|
163
|
+
date_time_field = browser.form(id: 'new_user').date_time_field(id: 'html5_datetime-local')
|
|
164
|
+
date_time_field.set! date_time
|
|
165
|
+
expect(::Time.parse(date_time_field.value).strftime('%Y-%m-%dT%H:%M'))
|
|
166
|
+
.to eq date_time.strftime('%Y-%m-%dT%H:%M')
|
|
167
|
+
end
|
|
168
|
+
|
|
169
|
+
it 'raises ArgumentError when no arguments are provided' do
|
|
170
|
+
expect { browser.date_time_field(id: 'html5_datetime-local').set! }.to raise_exception ArgumentError
|
|
171
|
+
end
|
|
172
|
+
|
|
173
|
+
it "raises UnknownObjectException if the date-time field doesn't exist" do
|
|
174
|
+
expect { browser.date_time_field(id: 'no_such_id').set!(::Time.now) }.to raise_unknown_object_exception
|
|
175
|
+
end
|
|
176
|
+
end
|
|
177
|
+
|
|
178
|
+
describe '#set' do
|
|
179
|
+
it 'sets the value of the element' do
|
|
180
|
+
date_time = ::Time.now
|
|
181
|
+
date_time_field = browser.date_time_field(id: 'html5_datetime-local')
|
|
182
|
+
date_time_field.set(date_time)
|
|
183
|
+
expect(::Time.parse(date_time_field.value).strftime('%Y-%m-%dT%H:%M'))
|
|
184
|
+
.to eq date_time.strftime('%Y-%m-%dT%H:%M')
|
|
185
|
+
end
|
|
186
|
+
|
|
187
|
+
it 'sets the value when accessed through the enclosing Form' do
|
|
188
|
+
date_time = ::Time.now
|
|
189
|
+
date_time_field = browser.form(id: 'new_user').date_time_field(id: 'html5_datetime-local')
|
|
190
|
+
date_time_field.set date_time
|
|
191
|
+
expect(::Time.parse(date_time_field.value).strftime('%Y-%m-%dT%H:%M'))
|
|
192
|
+
.to eq date_time.strftime('%Y-%m-%dT%H:%M')
|
|
193
|
+
end
|
|
194
|
+
|
|
195
|
+
it 'raises ArgumentError when no arguments are provided' do
|
|
196
|
+
expect { browser.date_time_field(id: 'html5_datetime-local').set }.to raise_exception ArgumentError
|
|
197
|
+
end
|
|
198
|
+
|
|
199
|
+
it "raises UnknownObjectException if the date-time field doesn't exist" do
|
|
200
|
+
expect { browser.date_time_field(id: 'no_such_id').set(::Time.now) }.to raise_unknown_object_exception
|
|
201
|
+
end
|
|
200
202
|
end
|
|
201
203
|
end
|
|
202
204
|
end
|
|
@@ -2,44 +2,46 @@
|
|
|
2
2
|
|
|
3
3
|
require 'watirspec_helper'
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
5
|
+
module Watir
|
|
6
|
+
describe DateTimeFieldCollection do
|
|
7
|
+
before do
|
|
8
|
+
browser.goto(WatirSpec.url_for('forms_with_input_elements.html'))
|
|
9
|
+
end
|
|
9
10
|
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
11
|
+
describe 'with selectors' do
|
|
12
|
+
it 'returns the matching elements' do
|
|
13
|
+
list = [browser.date_time_field(name: 'html5_datetime-local')]
|
|
14
|
+
expect(browser.date_time_fields(name: 'html5_datetime-local').to_a).to eq list
|
|
15
|
+
end
|
|
14
16
|
end
|
|
15
|
-
end
|
|
16
17
|
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
18
|
+
describe '#length' do
|
|
19
|
+
it 'returns the number of date_time_fields' do
|
|
20
|
+
expect(browser.date_time_fields.length).to eq 1
|
|
21
|
+
end
|
|
20
22
|
end
|
|
21
|
-
end
|
|
22
23
|
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
24
|
+
describe '#[]' do
|
|
25
|
+
it 'returns the date_time_field at the given index' do
|
|
26
|
+
expect(browser.date_time_fields[0].id).to eq 'html5_datetime-local'
|
|
27
|
+
end
|
|
26
28
|
end
|
|
27
|
-
end
|
|
28
29
|
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
30
|
+
describe '#each' do
|
|
31
|
+
it 'iterates through date_time_fields correctly' do
|
|
32
|
+
count = 0
|
|
32
33
|
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
34
|
+
browser.date_time_fields.each_with_index do |c, index|
|
|
35
|
+
expect(c).to be_instance_of(DateTimeField)
|
|
36
|
+
expect(c.name).to eq browser.date_time_field(index: index).name
|
|
37
|
+
expect(c.id).to eq browser.date_time_field(index: index).id
|
|
38
|
+
expect(c.value).to eq browser.date_time_field(index: index).value
|
|
38
39
|
|
|
39
|
-
|
|
40
|
-
|
|
40
|
+
count += 1
|
|
41
|
+
end
|
|
41
42
|
|
|
42
|
-
|
|
43
|
+
expect(count).to be > 0
|
|
44
|
+
end
|
|
43
45
|
end
|
|
44
46
|
end
|
|
45
47
|
end
|