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,204 +2,206 @@
|
|
|
2
2
|
|
|
3
3
|
require 'watirspec_helper'
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
browser
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
browser
|
|
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
|
-
element
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
5
|
+
module Watir
|
|
6
|
+
describe UserEditable do
|
|
7
|
+
before do
|
|
8
|
+
browser.goto(WatirSpec.url_for('forms_with_input_elements.html'))
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
describe '#append' do
|
|
12
|
+
it 'appends the text to the text field', except: {browser: :safari, reason: 'incorrectly clears first'} do
|
|
13
|
+
browser.text_field(name: 'new_user_occupation').append(' Append This')
|
|
14
|
+
expect(browser.text_field(name: 'new_user_occupation').value).to eq 'Developer Append This'
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
it 'appends multi-byte characters', except: {browser: :safari, reason: 'incorrectly clears first'} do
|
|
18
|
+
browser.text_field(name: 'new_user_occupation').append(' ijij')
|
|
19
|
+
expect(browser.text_field(name: 'new_user_occupation').value).to eq 'Developer ijij'
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
it 'raises NotImplementedError if the object is content editable element' do
|
|
23
|
+
msg = '#append method is not supported with contenteditable element'
|
|
24
|
+
expect { browser.div(id: 'contenteditable').append('bar') }.to raise_exception(NotImplementedError, msg)
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
it 'raises ObjectReadOnlyException if the object is read only' do
|
|
28
|
+
expect { browser.text_field(id: 'new_user_code').append('Append This') }.to raise_object_read_only_exception
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
it 'raises ObjectDisabledException if the object is disabled' do
|
|
32
|
+
expect { browser.text_field(name: 'new_user_species').append('Append This') }.to raise_object_disabled_exception
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
it "raises UnknownObjectException if the object doesn't exist" do
|
|
36
|
+
expect { browser.text_field(name: 'no_such_name').append('Append This') }.to raise_unknown_object_exception
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
describe '#clear' do
|
|
41
|
+
it 'removes all text from the text field' do
|
|
42
|
+
browser.text_field(name: 'new_user_occupation').clear
|
|
43
|
+
expect(browser.text_field(name: 'new_user_occupation').value).to be_empty
|
|
44
|
+
browser.textarea(id: 'delete_user_comment').clear
|
|
45
|
+
expect(browser.textarea(id: 'delete_user_comment').value).to be_empty
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
it 'removes all text from the content editable element' do
|
|
49
|
+
browser.div(id: 'contenteditable').clear
|
|
50
|
+
expect(browser.div(id: 'contenteditable').text).to eq ''
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
it "raises UnknownObjectException if the text field doesn't exist" do
|
|
54
|
+
expect { browser.text_field(id: 'no_such_id').clear }.to raise_unknown_object_exception
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
it 'raises ObjectReadOnlyException if the object is read only' do
|
|
58
|
+
expect { browser.text_field(id: 'new_user_code').clear }.to raise_object_read_only_exception
|
|
59
|
+
end
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
describe '#value=' do
|
|
63
|
+
it 'sets the value of the element' do
|
|
64
|
+
browser.text_field(id: 'new_user_email').value = 'Hello Cruel World'
|
|
65
|
+
expect(browser.text_field(id: 'new_user_email').value).to eq 'Hello Cruel World'
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
it 'is able to set multi-byte characters' do
|
|
69
|
+
browser.text_field(name: 'new_user_occupation').value = 'ijij'
|
|
70
|
+
expect(browser.text_field(name: 'new_user_occupation').value).to eq 'ijij'
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
it 'sets the value of a textarea element' do
|
|
74
|
+
browser.textarea(id: 'delete_user_comment').value = 'Hello Cruel World'
|
|
75
|
+
expect(browser.textarea(id: 'delete_user_comment').value).to eq 'Hello Cruel World'
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
it "raises UnknownObjectException if the text field doesn't exist" do
|
|
79
|
+
expect { browser.text_field(name: 'no_such_name').value = 'yo' }.to raise_unknown_object_exception
|
|
80
|
+
end
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
describe '#set' do
|
|
84
|
+
it 'sets the value of the element' do
|
|
85
|
+
browser.text_field(id: 'new_user_email').set('Bye Cruel World')
|
|
86
|
+
expect(browser.text_field(id: 'new_user_email').value).to eq 'Bye Cruel World'
|
|
87
|
+
end
|
|
88
|
+
|
|
89
|
+
it 'sets the value of a textarea element' do
|
|
90
|
+
browser.textarea(id: 'delete_user_comment').set('Hello Cruel World')
|
|
91
|
+
expect(browser.textarea(id: 'delete_user_comment').value).to eq 'Hello Cruel World'
|
|
92
|
+
end
|
|
93
|
+
|
|
94
|
+
it 'sets the value of a content editable element' do
|
|
95
|
+
browser.div(id: 'contenteditable').set('Bar')
|
|
96
|
+
expect(browser.div(id: 'contenteditable').text).to eq 'Bar'
|
|
97
|
+
end
|
|
98
|
+
|
|
99
|
+
it 'fires events' do
|
|
100
|
+
browser.text_field(id: 'new_user_username').set('Hello World')
|
|
101
|
+
expect(browser.span(id: 'current_length').text).to eq '11'
|
|
102
|
+
end
|
|
103
|
+
|
|
104
|
+
it 'sets the value of a password field' do
|
|
105
|
+
browser.text_field(name: 'new_user_password').set('secret')
|
|
106
|
+
expect(browser.text_field(name: 'new_user_password').value).to eq 'secret'
|
|
107
|
+
end
|
|
108
|
+
|
|
109
|
+
it 'sets the value when accessed through the enclosing Form' do
|
|
110
|
+
browser.form(id: 'new_user').text_field(name: 'new_user_password').set('secret')
|
|
111
|
+
expect(browser.form(id: 'new_user').text_field(name: 'new_user_password').value).to eq 'secret'
|
|
112
|
+
end
|
|
113
|
+
|
|
114
|
+
it 'is able to set multi-byte characters' do
|
|
115
|
+
browser.text_field(name: 'new_user_occupation').set('ijij')
|
|
116
|
+
expect(browser.text_field(name: 'new_user_occupation').value).to eq 'ijij'
|
|
117
|
+
end
|
|
118
|
+
|
|
119
|
+
it 'sets the value to a concatenation of multiple arguments' do
|
|
120
|
+
browser.text_field(id: 'new_user_email').set('Bye', 'Cruel', 'World')
|
|
121
|
+
expect(browser.text_field(id: 'new_user_email').value).to eq 'ByeCruelWorld'
|
|
122
|
+
end
|
|
123
|
+
|
|
124
|
+
it 'sets the value to blank when no arguments are provided' do
|
|
125
|
+
browser.text_field(id: 'new_user_email').set
|
|
126
|
+
expect(browser.text_field(id: 'new_user_email').value).to eq ''
|
|
127
|
+
end
|
|
128
|
+
|
|
129
|
+
it "raises UnknownObjectException if the text field doesn't exist" do
|
|
130
|
+
expect { browser.text_field(id: 'no_such_id').set('secret') }.to raise_unknown_object_exception
|
|
131
|
+
end
|
|
132
|
+
|
|
133
|
+
it 'raises ObjectReadOnlyException if the object is read only' do
|
|
134
|
+
expect { browser.text_field(id: 'new_user_code').set('Foo') }.to raise_object_read_only_exception
|
|
135
|
+
end
|
|
136
|
+
end
|
|
137
|
+
|
|
138
|
+
describe '#set!' do
|
|
139
|
+
it 'sets the value of the element' do
|
|
140
|
+
browser.text_field(id: 'new_user_email').set!('Bye Cruel World')
|
|
141
|
+
expect(browser.text_field(id: 'new_user_email').value).to eq 'Bye Cruel World'
|
|
142
|
+
end
|
|
143
|
+
|
|
144
|
+
it 'sets the value of a textarea element' do
|
|
145
|
+
browser.textarea(id: 'delete_user_comment').set!('Hello Cruel World')
|
|
146
|
+
expect(browser.textarea(id: 'delete_user_comment').value).to eq 'Hello Cruel World'
|
|
147
|
+
end
|
|
148
|
+
|
|
149
|
+
it 'sets the value of a content editable element' do
|
|
150
|
+
browser.div(id: 'contenteditable').set!('foo')
|
|
151
|
+
expect(browser.div(id: 'contenteditable').text).to eq 'foo'
|
|
152
|
+
end
|
|
153
|
+
|
|
154
|
+
it 'fires events' do
|
|
155
|
+
browser.text_field(id: 'new_user_username').set!('Hello World')
|
|
156
|
+
expect(browser.span(id: 'current_length').text).to eq '11'
|
|
157
|
+
end
|
|
158
|
+
|
|
159
|
+
it 'sets the value of a password field' do
|
|
160
|
+
browser.text_field(name: 'new_user_password').set!('secret')
|
|
161
|
+
expect(browser.text_field(name: 'new_user_password').value).to eq 'secret'
|
|
162
|
+
end
|
|
163
|
+
|
|
164
|
+
it 'sets the value when accessed through the enclosing Form' do
|
|
165
|
+
browser.form(id: 'new_user').text_field(name: 'new_user_password').set!('secret')
|
|
166
|
+
expect(browser.form(id: 'new_user').text_field(name: 'new_user_password').value).to eq 'secret'
|
|
167
|
+
end
|
|
168
|
+
|
|
169
|
+
it 'is able to set multi-byte characters' do
|
|
170
|
+
browser.text_field(name: 'new_user_occupation').set!('ijij')
|
|
171
|
+
expect(browser.text_field(name: 'new_user_occupation').value).to eq 'ijij'
|
|
172
|
+
end
|
|
173
|
+
|
|
174
|
+
it 'sets the value to a concatenation of multiple arguments' do
|
|
175
|
+
browser.text_field(id: 'new_user_email').set!('Bye', 'Cruel', 'World')
|
|
176
|
+
expect(browser.text_field(id: 'new_user_email').value).to eq 'ByeCruelWorld'
|
|
177
|
+
end
|
|
178
|
+
|
|
179
|
+
it 'sets the value to blank when no arguments are provided' do
|
|
180
|
+
browser.text_field(id: 'new_user_email').set!
|
|
181
|
+
expect(browser.text_field(id: 'new_user_email').value).to eq ''
|
|
182
|
+
end
|
|
183
|
+
|
|
184
|
+
it 'raises ArgumentError for special keys' do
|
|
185
|
+
expect { browser.text_field(id: 'new_user_email').set!('a', :tab) }.to raise_error(ArgumentError)
|
|
186
|
+
end
|
|
187
|
+
|
|
188
|
+
it "raises UnknownObjectException if the text field doesn't exist" do
|
|
189
|
+
expect { browser.text_field(id: 'no_such_id').set!('secret') }.to raise_unknown_object_exception
|
|
190
|
+
end
|
|
191
|
+
|
|
192
|
+
it "raises Exception if the value of text field doesn't match" do
|
|
193
|
+
element = browser.text_field(id: 'new_user_password')
|
|
194
|
+
allow(element).to receive(:value).and_return('wrong')
|
|
195
|
+
msg = "#set! value: 'wrong' does not match expected input: 'secret'"
|
|
196
|
+
expect { element.set!('secret') }.to raise_exception(Watir::Exception::Error, msg)
|
|
197
|
+
end
|
|
198
|
+
|
|
199
|
+
it "raises Exception if the text of content editable element doesn't match" do
|
|
200
|
+
element = browser.div(id: 'contenteditable')
|
|
201
|
+
allow(element).to receive(:text).and_return('wrong')
|
|
202
|
+
msg = "#set! text: 'wrong' does not match expected input: 'secret'"
|
|
203
|
+
expect { element.set!('secret') }.to raise_exception(Watir::Exception::Error, msg)
|
|
204
|
+
end
|
|
203
205
|
end
|
|
204
206
|
end
|
|
205
207
|
end
|