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,189 +2,191 @@
|
|
|
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
|
-
|
|
5
|
+
module Watir
|
|
6
|
+
describe DateField 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_field(id: 'html5_date')).to exist
|
|
15
|
+
expect(browser.date_field(id: /html5_date/)).to exist
|
|
16
|
+
expect(browser.date_field(name: 'html5_date')).to exist
|
|
17
|
+
expect(browser.date_field(name: /html5_date/)).to exist
|
|
18
|
+
expect(browser.date_field(text: '')).to exist
|
|
19
|
+
expect(browser.date_field(text: //)).to exist
|
|
20
|
+
expect(browser.date_field(index: 0)).to exist
|
|
21
|
+
expect(browser.date_field(label: 'HTML5 Date')).to exist
|
|
22
|
+
expect(browser.date_field(label: /Date$/)).to exist
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
it 'returns true when using xpath',
|
|
26
|
+
except: {browser: :ie, reason: 'Date type not recognized'} do
|
|
27
|
+
expect(browser.date_field(xpath: "//input[@id='html5_date']")).to exist
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
it 'returns the date field if given no args' do
|
|
31
|
+
expect(browser.date_field).to exist
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
it 'respects date fields types',
|
|
35
|
+
except: {browser: :ie, reason: 'Date type not recognized'} do
|
|
36
|
+
expect(browser.date_field.type).to eq('date')
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
it 'returns false if the element does not exist' do
|
|
40
|
+
expect(browser.date_field(id: 'no_such_id')).not_to exist
|
|
41
|
+
expect(browser.date_field(id: /no_such_id/)).not_to exist
|
|
42
|
+
expect(browser.date_field(name: 'no_such_name')).not_to exist
|
|
43
|
+
expect(browser.date_field(name: /no_such_name/)).not_to exist
|
|
44
|
+
expect(browser.date_field(value: 'no_such_value')).not_to exist
|
|
45
|
+
expect(browser.date_field(value: /no_such_value/)).not_to exist
|
|
46
|
+
expect(browser.date_field(text: 'no_such_text')).not_to exist
|
|
47
|
+
expect(browser.date_field(text: /no_such_text/)).not_to exist
|
|
48
|
+
expect(browser.date_field(class: 'no_such_class')).not_to exist
|
|
49
|
+
expect(browser.date_field(class: /no_such_class/)).not_to exist
|
|
50
|
+
expect(browser.date_field(index: 1337)).not_to exist
|
|
51
|
+
expect(browser.date_field(xpath: "//input[@id='no_such_id']")).not_to exist
|
|
52
|
+
expect(browser.date_field(label: 'bad label')).not_to exist
|
|
53
|
+
expect(browser.date_field(label: /bad label/)).not_to exist
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
it "raises TypeError when 'what' argument is invalid" do
|
|
57
|
+
expect { browser.date_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 field exists' do
|
|
64
|
+
expect(browser.date_field(name: 'html5_date').id).to eq 'html5_date'
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
it "raises UnknownObjectException if the date field doesn't exist" do
|
|
68
|
+
expect { browser.date_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 field exists' do
|
|
74
|
+
expect(browser.date_field(id: 'html5_date').name).to eq 'html5_date'
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
it "raises UnknownObjectException if the date field doesn't exist" do
|
|
78
|
+
expect { browser.date_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 field exists',
|
|
84
|
+
except: {browser: :ie, reason: 'Date type not recognized'} do
|
|
85
|
+
expect(browser.date_field(id: 'html5_date').type).to eq 'date'
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
it "raises UnknownObjectException if the date field doesn't exist" do
|
|
89
|
+
expect { browser.date_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 field exists' do
|
|
95
|
+
expect(browser.date_field(id: 'html5_date').value).to eq ''
|
|
96
|
+
end
|
|
97
|
+
|
|
98
|
+
it "raises UnknownObjectException if the date field doesn't exist" do
|
|
99
|
+
expect { browser.date_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_field).to respond_to(:class_name)
|
|
106
|
+
expect(browser.date_field).to respond_to(:id)
|
|
107
|
+
expect(browser.date_field).to respond_to(:name)
|
|
108
|
+
expect(browser.date_field).to respond_to(:title)
|
|
109
|
+
expect(browser.date_field).to respond_to(:type)
|
|
110
|
+
expect(browser.date_field).to respond_to(:value)
|
|
111
|
+
end
|
|
112
|
+
end
|
|
113
|
+
|
|
114
|
+
# Access methods
|
|
115
|
+
describe '#enabled?' do
|
|
116
|
+
it 'returns true for enabled date fields' do
|
|
117
|
+
expect(browser.browser.date_field(id: 'html5_date')).to be_enabled
|
|
118
|
+
end
|
|
119
|
+
|
|
120
|
+
it "raises UnknownObjectException if the date field doesn't exist" do
|
|
121
|
+
expect { browser.browser.date_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 = browser.date_field(id: 'html5_date')
|
|
129
|
+
date.value = Date.today
|
|
130
|
+
expect(Date.parse(date.value)).to eq Date.today
|
|
131
|
+
end
|
|
132
|
+
|
|
133
|
+
it 'sets the value when accessed through the enclosing Form' do
|
|
134
|
+
date_field = browser.form(id: 'new_user').date_field(id: 'html5_date')
|
|
135
|
+
date_field.value = Date.today
|
|
136
|
+
expect(Date.parse(date_field.value)).to eq Date.today
|
|
137
|
+
end
|
|
138
|
+
|
|
139
|
+
it "raises UnknownObjectException if the date field doesn't exist" do
|
|
140
|
+
expect { browser.date_field(id: 'no_such_id').value = Date.today }.to raise_unknown_object_exception
|
|
141
|
+
end
|
|
142
|
+
|
|
143
|
+
it 'raises ArgumentError if using non-Date parameter' do
|
|
144
|
+
expect { browser.date_field(id: 'no_such_id').value = 'foo' }.to raise_exception ArgumentError
|
|
145
|
+
end
|
|
146
|
+
end
|
|
147
|
+
|
|
148
|
+
describe '#set!' do
|
|
149
|
+
it 'sets the value of the element' do
|
|
150
|
+
date = browser.date_field(id: 'html5_date')
|
|
151
|
+
date.set!(Date.today)
|
|
152
|
+
expect(Date.parse(date.value)).to eq Date.today
|
|
153
|
+
end
|
|
154
|
+
|
|
155
|
+
it 'sets the value when accessed through the enclosing Form' do
|
|
156
|
+
date_field = browser.form(id: 'new_user').date_field(id: 'html5_date')
|
|
157
|
+
date_field.set!(Date.today)
|
|
158
|
+
expect(Date.parse(date_field.value)).to eq Date.today
|
|
159
|
+
end
|
|
160
|
+
|
|
161
|
+
it 'raises ArgumentError when no arguments are provided' do
|
|
162
|
+
expect { browser.date_field(id: 'html5_date').set! }.to raise_exception ArgumentError
|
|
163
|
+
end
|
|
164
|
+
|
|
165
|
+
it "raises UnknownObjectException if the date field doesn't exist" do
|
|
166
|
+
expect { browser.date_field(id: 'no_such_id').set!(Date.today) }.to raise_unknown_object_exception
|
|
167
|
+
end
|
|
168
|
+
end
|
|
169
|
+
|
|
170
|
+
describe '#set' do
|
|
171
|
+
it 'sets the value of the element' do
|
|
172
|
+
date = browser.date_field(id: 'html5_date')
|
|
173
|
+
date.set(Date.today)
|
|
174
|
+
expect(Date.parse(date.value)).to eq Date.today
|
|
175
|
+
end
|
|
176
|
+
|
|
177
|
+
it 'sets the value when accessed through the enclosing Form' do
|
|
178
|
+
date_field = browser.form(id: 'new_user').date_field(id: 'html5_date')
|
|
179
|
+
date_field.set(Date.today)
|
|
180
|
+
expect(Date.parse(date_field.value)).to eq Date.today
|
|
181
|
+
end
|
|
182
|
+
|
|
183
|
+
it 'raises ArgumentError when no arguments are provided' do
|
|
184
|
+
expect { browser.date_field(id: 'html5_date').set }.to raise_exception ArgumentError
|
|
185
|
+
end
|
|
186
|
+
|
|
187
|
+
it "raises UnknownObjectException if the date field doesn't exist" do
|
|
188
|
+
expect { browser.date_field(id: 'no_such_id').set(Date.today) }.to raise_unknown_object_exception
|
|
189
|
+
end
|
|
188
190
|
end
|
|
189
191
|
end
|
|
190
192
|
end
|
|
@@ -2,43 +2,45 @@
|
|
|
2
2
|
|
|
3
3
|
require 'watirspec_helper'
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
5
|
+
module Watir
|
|
6
|
+
describe DateFieldCollection do
|
|
7
|
+
before do
|
|
8
|
+
browser.goto(WatirSpec.url_for('forms_with_input_elements.html'))
|
|
9
|
+
end
|
|
9
10
|
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
11
|
+
describe 'with selectors' do
|
|
12
|
+
it 'returns the matching elements' do
|
|
13
|
+
expect(browser.date_fields(name: 'html5_date').to_a).to eq [browser.date_field(name: 'html5_date')]
|
|
14
|
+
end
|
|
13
15
|
end
|
|
14
|
-
end
|
|
15
16
|
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
17
|
+
describe '#length' do
|
|
18
|
+
it 'returns the number of date_fields' do
|
|
19
|
+
expect(browser.date_fields.length).to eq 1
|
|
20
|
+
end
|
|
19
21
|
end
|
|
20
|
-
end
|
|
21
22
|
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
23
|
+
describe '#[]' do
|
|
24
|
+
it 'returns the date_field at the given index' do
|
|
25
|
+
expect(browser.date_fields[0].id).to eq 'html5_date'
|
|
26
|
+
end
|
|
25
27
|
end
|
|
26
|
-
end
|
|
27
28
|
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
29
|
+
describe '#each' do
|
|
30
|
+
it 'iterates through date_fields correctly' do
|
|
31
|
+
count = 0
|
|
31
32
|
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
33
|
+
browser.date_fields.each_with_index do |c, index|
|
|
34
|
+
expect(c).to be_instance_of(DateField)
|
|
35
|
+
expect(c.name).to eq browser.date_field(index: index).name
|
|
36
|
+
expect(c.id).to eq browser.date_field(index: index).id
|
|
37
|
+
expect(c.value).to eq browser.date_field(index: index).value
|
|
37
38
|
|
|
38
|
-
|
|
39
|
-
|
|
39
|
+
count += 1
|
|
40
|
+
end
|
|
40
41
|
|
|
41
|
-
|
|
42
|
+
expect(count).to be > 0
|
|
43
|
+
end
|
|
42
44
|
end
|
|
43
45
|
end
|
|
44
46
|
end
|