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.
Files changed (139) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/chrome.yml +1 -1
  3. data/.github/workflows/edge.yml +1 -1
  4. data/.github/workflows/firefox.yml +1 -1
  5. data/.github/workflows/ie.yml +1 -1
  6. data/.github/workflows/safari.yml +1 -1
  7. data/.github/workflows/unit.yml +1 -1
  8. data/.rubocop.yml +25 -12
  9. data/.rubocop_todo.yml +8 -1
  10. data/CHANGES.md +6 -1
  11. data/LICENSE +2 -2
  12. data/lib/watir/capabilities.rb +1 -1
  13. data/lib/watir/locators/anchor/selector_builder.rb +3 -0
  14. data/lib/watir/locators/element/matcher.rb +2 -1
  15. data/lib/watir/locators/element/selector_builder/regexp_disassembler.rb +2 -1
  16. data/lib/watir/locators/text_field/matcher.rb +0 -4
  17. data/lib/watir/version.rb +1 -1
  18. data/spec/locator_spec_helper.rb +0 -8
  19. data/spec/unit/capabilities_spec.rb +553 -561
  20. data/spec/unit/element_locator_spec.rb +89 -78
  21. data/spec/unit/match_elements/button_spec.rb +69 -62
  22. data/spec/unit/match_elements/element_spec.rb +303 -309
  23. data/spec/unit/match_elements/text_field_spec.rb +76 -73
  24. data/spec/unit/selector_builder/anchor_spec.rb +39 -33
  25. data/spec/unit/selector_builder/button_spec.rb +209 -202
  26. data/spec/unit/selector_builder/cell_spec.rb +48 -42
  27. data/spec/unit/selector_builder/element_spec.rb +634 -627
  28. data/spec/unit/selector_builder/row_spec.rb +119 -113
  29. data/spec/unit/selector_builder/text_field_spec.rb +195 -188
  30. data/spec/unit/selector_builder/textarea_spec.rb +22 -14
  31. data/spec/unit/wait_spec.rb +85 -81
  32. data/spec/watirspec/adjacent_spec.rb +249 -247
  33. data/spec/watirspec/after_hooks_spec.rb +161 -159
  34. data/spec/watirspec/alert_spec.rb +61 -58
  35. data/spec/watirspec/browser_spec.rb +409 -409
  36. data/spec/watirspec/capabilities_spec.rb +89 -99
  37. data/spec/watirspec/cookies_spec.rb +120 -118
  38. data/spec/watirspec/drag_and_drop_spec.rb +26 -24
  39. data/spec/watirspec/element_hidden_spec.rb +66 -60
  40. data/spec/watirspec/elements/area_spec.rb +49 -47
  41. data/spec/watirspec/elements/areas_spec.rb +27 -25
  42. data/spec/watirspec/elements/button_spec.rb +253 -251
  43. data/spec/watirspec/elements/buttons_spec.rb +36 -34
  44. data/spec/watirspec/elements/checkbox_spec.rb +48 -36
  45. data/spec/watirspec/elements/checkboxes_spec.rb +29 -27
  46. data/spec/watirspec/elements/collections_spec.rb +126 -119
  47. data/spec/watirspec/elements/date_field_spec.rb +185 -183
  48. data/spec/watirspec/elements/date_fields_spec.rb +29 -27
  49. data/spec/watirspec/elements/date_time_field_spec.rb +197 -195
  50. data/spec/watirspec/elements/date_time_fields_spec.rb +30 -28
  51. data/spec/watirspec/elements/dd_spec.rb +87 -85
  52. data/spec/watirspec/elements/dds_spec.rb +27 -25
  53. data/spec/watirspec/elements/del_spec.rb +106 -104
  54. data/spec/watirspec/elements/dels_spec.rb +26 -24
  55. data/spec/watirspec/elements/div_spec.rb +225 -221
  56. data/spec/watirspec/elements/divs_spec.rb +37 -35
  57. data/spec/watirspec/elements/dl_spec.rb +110 -108
  58. data/spec/watirspec/elements/dls_spec.rb +28 -26
  59. data/spec/watirspec/elements/dt_spec.rb +86 -84
  60. data/spec/watirspec/elements/dts_spec.rb +27 -25
  61. data/spec/watirspec/elements/element_spec.rb +794 -775
  62. data/spec/watirspec/elements/elements_spec.rb +40 -38
  63. data/spec/watirspec/elements/em_spec.rb +62 -60
  64. data/spec/watirspec/elements/ems_spec.rb +28 -26
  65. data/spec/watirspec/elements/filefield_spec.rb +116 -114
  66. data/spec/watirspec/elements/filefields_spec.rb +28 -26
  67. data/spec/watirspec/elements/font_spec.rb +20 -18
  68. data/spec/watirspec/elements/form_spec.rb +51 -49
  69. data/spec/watirspec/elements/forms_spec.rb +29 -27
  70. data/spec/watirspec/elements/frame_spec.rb +89 -87
  71. data/spec/watirspec/elements/frames_spec.rb +27 -25
  72. data/spec/watirspec/elements/hidden_spec.rb +81 -79
  73. data/spec/watirspec/elements/hiddens_spec.rb +28 -26
  74. data/spec/watirspec/elements/hn_spec.rb +59 -57
  75. data/spec/watirspec/elements/hns_spec.rb +26 -24
  76. data/spec/watirspec/elements/iframe_spec.rb +195 -191
  77. data/spec/watirspec/elements/iframes_spec.rb +31 -29
  78. data/spec/watirspec/elements/image_spec.rb +148 -146
  79. data/spec/watirspec/elements/images_spec.rb +26 -24
  80. data/spec/watirspec/elements/input_spec.rb +9 -7
  81. data/spec/watirspec/elements/ins_spec.rb +106 -104
  82. data/spec/watirspec/elements/inses_spec.rb +26 -24
  83. data/spec/watirspec/elements/label_spec.rb +56 -54
  84. data/spec/watirspec/elements/labels_spec.rb +26 -24
  85. data/spec/watirspec/elements/li_spec.rb +76 -74
  86. data/spec/watirspec/elements/link_spec.rb +173 -177
  87. data/spec/watirspec/elements/links_spec.rb +45 -43
  88. data/spec/watirspec/elements/lis_spec.rb +27 -25
  89. data/spec/watirspec/elements/list_spec.rb +44 -42
  90. data/spec/watirspec/elements/map_spec.rb +57 -55
  91. data/spec/watirspec/elements/maps_spec.rb +27 -25
  92. data/spec/watirspec/elements/meta_spec.rb +16 -14
  93. data/spec/watirspec/elements/metas_spec.rb +26 -24
  94. data/spec/watirspec/elements/ol_spec.rb +56 -65
  95. data/spec/watirspec/elements/ols_spec.rb +26 -24
  96. data/spec/watirspec/elements/option_spec.rb +91 -89
  97. data/spec/watirspec/elements/p_spec.rb +81 -79
  98. data/spec/watirspec/elements/pre_spec.rb +77 -75
  99. data/spec/watirspec/elements/pres_spec.rb +26 -24
  100. data/spec/watirspec/elements/ps_spec.rb +26 -24
  101. data/spec/watirspec/elements/radio_spec.rb +251 -249
  102. data/spec/watirspec/elements/radios_spec.rb +28 -26
  103. data/spec/watirspec/elements/select_list_spec.rb +537 -526
  104. data/spec/watirspec/elements/select_lists_spec.rb +32 -30
  105. data/spec/watirspec/elements/span_spec.rb +112 -110
  106. data/spec/watirspec/elements/spans_spec.rb +26 -24
  107. data/spec/watirspec/elements/strong_spec.rb +58 -58
  108. data/spec/watirspec/elements/strongs_spec.rb +28 -26
  109. data/spec/watirspec/elements/table_spec.rb +192 -139
  110. data/spec/watirspec/elements/tables_spec.rb +28 -26
  111. data/spec/watirspec/elements/tbody_spec.rb +74 -72
  112. data/spec/watirspec/elements/tbodys_spec.rb +40 -38
  113. data/spec/watirspec/elements/td_spec.rb +66 -64
  114. data/spec/watirspec/elements/tds_spec.rb +41 -39
  115. data/spec/watirspec/elements/text_field_spec.rb +206 -204
  116. data/spec/watirspec/elements/text_fields_spec.rb +30 -28
  117. data/spec/watirspec/elements/textarea_spec.rb +20 -18
  118. data/spec/watirspec/elements/textareas_spec.rb +18 -16
  119. data/spec/watirspec/elements/tfoot_spec.rb +65 -63
  120. data/spec/watirspec/elements/tfoots_spec.rb +42 -40
  121. data/spec/watirspec/elements/thead_spec.rb +65 -63
  122. data/spec/watirspec/elements/theads_spec.rb +42 -40
  123. data/spec/watirspec/elements/tr_spec.rb +48 -46
  124. data/spec/watirspec/elements/trs_spec.rb +42 -40
  125. data/spec/watirspec/elements/ul_spec.rb +56 -54
  126. data/spec/watirspec/elements/uls_spec.rb +26 -24
  127. data/spec/watirspec/radio_set_spec.rb +269 -267
  128. data/spec/watirspec/screenshot_spec.rb +20 -18
  129. data/spec/watirspec/scroll_spec.rb +152 -148
  130. data/spec/watirspec/shadow_root_spec.rb +86 -83
  131. data/spec/watirspec/user_editable_spec.rb +200 -198
  132. data/spec/watirspec/wait_spec.rb +289 -295
  133. data/spec/watirspec/window_switching_spec.rb +422 -434
  134. data/spec/watirspec_helper.rb +1 -23
  135. data/watir.gemspec +5 -4
  136. metadata +44 -33
  137. data/spec/watirspec/attributes_spec.rb +0 -18
  138. data/spec/watirspec/elements/table_nesting_spec.rb +0 -51
  139. data/spec/watirspec/special_chars_spec.rb +0 -23
@@ -2,220 +2,222 @@
2
2
 
3
3
  require 'watirspec_helper'
4
4
 
5
- describe 'TextField' do
6
- before :each do
7
- browser.goto(WatirSpec.url_for('forms_with_input_elements.html'))
8
- end
9
-
10
- # Exists method
11
- describe '#exists?' do
12
- it 'returns true if the element exists' do
13
- expect(browser.text_field(id: 'new_user_email')).to exist
14
- expect(browser.text_field(id: /new_user_email/)).to exist
15
- expect(browser.text_field(name: 'new_user_email')).to exist
16
- expect(browser.text_field(name: /new_user_email/)).to exist
17
- expect(browser.text_field(name: /new_user_occupation/i)).to exist
18
- expect(browser.text_field(value: 'Developer')).to exist
19
- expect(browser.text_field(value: /Developer/)).to exist
20
- expect(browser.text_field(class: 'name')).to exist
21
- expect(browser.text_field(class: /name/)).to exist
22
- expect(browser.text_field(index: 0)).to exist
23
- expect(browser.text_field(xpath: "//input[@id='new_user_email']")).to exist
24
- expect(browser.text_field(label: 'First name')).to exist
25
- expect(browser.text_field(label: /(q|a)st? name/)).to exist
26
- expect(browser.text_field(label: 'Without for')).to exist
27
- expect(browser.text_field(label: /Without for/)).to exist
28
- expect(browser.text_field(label: 'With hidden text')).to exist
29
- expect(browser.text_field(label: 'With text')).not_to exist
30
-
31
- expect(browser.text_field(label: /With hidden text/)).to exist
32
- expect(browser.text_field(label: /With text/)).not_to exist
33
- end
34
-
35
- it 'returns true in spite of hidden text',
36
- except: {browser: :safari, reason: 'Safari is not filtering out hidden text'} do
37
- expect(browser.text_field(visible_label: 'With hidden text')).not_to exist
38
- expect(browser.text_field(visible_label: 'With text')).to exist
39
- expect(browser.text_field(visible_label: /With text/)).to exist
40
- expect(browser.text_field(visible_label: /With hidden text/)).not_to exist
41
- end
42
-
43
- it 'locates value of text_field using text locators' do
44
- browser.text_field(id: 'new_user_occupation').set 'Firefighter'
45
-
46
- expect(browser.text_field(text: 'Firefighter')).to exist
47
- expect(browser.text_field(text: /Fire/)).to exist
48
- expect(browser.text_field(visible_text: 'Firefighter')).to exist
49
- expect(browser.text_field(visible_text: /Fire/)).to exist
50
- end
51
-
52
- it 'returns the first text field if given no args' do
53
- expect(browser.text_field).to exist
54
- end
55
-
56
- it 'respects text fields types' do
57
- expect(browser.text_field.type).to eq('text')
58
- end
59
-
60
- it 'returns true if the element exists (no type attribute)' do
61
- expect(browser.text_field(id: 'new_user_first_name')).to exist
62
- end
63
-
64
- it 'returns true if the element exists (invalid type attribute)' do
65
- expect(browser.text_field(id: 'new_user_last_name')).to exist
66
- end
67
-
68
- it 'returns true for element with upper case type' do
69
- expect(browser.text_field(id: 'new_user_email_confirm')).to exist
70
- end
71
-
72
- it 'returns true for element with unknown type attribute' do
73
- expect(browser.text_field(id: 'unknown_text_field')).to exist
74
- end
75
-
76
- it 'returns false if the element does not exist' do
77
- expect(browser.text_field(id: 'no_such_id')).to_not exist
78
- expect(browser.text_field(id: /no_such_id/)).to_not exist
79
- expect(browser.text_field(name: 'no_such_name')).to_not exist
80
- expect(browser.text_field(name: /no_such_name/)).to_not exist
81
- expect(browser.text_field(value: 'no_such_value')).to_not exist
82
- expect(browser.text_field(value: /no_such_value/)).to_not exist
83
- expect(browser.text_field(text: 'no_such_text')).to_not exist
84
- expect(browser.text_field(text: /no_such_text/)).to_not exist
85
- expect(browser.text_field(class: 'no_such_class')).to_not exist
86
- expect(browser.text_field(class: /no_such_class/)).to_not exist
87
- expect(browser.text_field(index: 1337)).to_not exist
88
- expect(browser.text_field(xpath: "//input[@id='no_such_id']")).to_not exist
89
- expect(browser.text_field(label: 'bad label')).to_not exist
90
- expect(browser.text_field(label: /bad label/)).to_not exist
91
-
92
- # input type='hidden' should not be found by #text_field
93
- expect(browser.text_field(id: 'new_user_interests_dolls')).to_not exist
94
- end
95
-
96
- it "raises TypeError when 'what' argument is invalid" do
97
- expect { browser.text_field(id: 3.14).exists? }.to raise_error(TypeError)
98
- end
99
- end
100
-
101
- # Attribute methods
102
- describe '#id' do
103
- it 'returns the id attribute if the text field exists' do
104
- expect(browser.text_field(index: 4).id).to eq 'new_user_occupation'
105
- end
106
-
107
- it "raises UnknownObjectException if the text field doesn't exist" do
108
- expect { browser.text_field(index: 1337).id }.to raise_unknown_object_exception
109
- end
110
- end
111
-
112
- describe '#name' do
113
- it 'returns the name attribute if the text field exists' do
114
- expect(browser.text_field(index: 3).name).to eq 'new_user_email_confirm'
115
- end
116
-
117
- it "raises UnknownObjectException if the text field doesn't exist" do
118
- expect { browser.text_field(index: 1337).name }.to raise_unknown_object_exception
119
- end
120
- end
121
-
122
- describe '#title' do
123
- it 'returns the title attribute if the text field exists' do
124
- expect(browser.text_field(id: 'new_user_code').title).to eq 'Your personal code'
125
- end
126
-
127
- it "raises UnknownObjectException if the text field doesn't exist" do
128
- expect { browser.text_field(index: 1337).title }.to raise_unknown_object_exception
129
- end
130
- end
131
-
132
- describe '#type' do
133
- it 'returns the type attribute if the text field exists' do
134
- expect(browser.text_field(index: 3).type).to eq 'text'
135
- end
136
-
137
- it "returns 'text' if the type attribute is invalid" do
138
- expect(browser.text_field(id: 'new_user_last_name').type).to eq 'text'
139
- end
140
-
141
- it "returns 'text' if the type attribute does not exist" do
142
- expect(browser.text_field(id: 'new_user_first_name').type).to eq 'text'
143
- end
144
-
145
- it "raises UnknownObjectException if the text field doesn't exist" do
146
- expect { browser.text_field(index: 1337).type }.to raise_unknown_object_exception
147
- end
148
- end
149
-
150
- describe '#value' do
151
- it 'returns the value attribute if the text field exists' do
152
- expect(browser.text_field(name: 'new_user_occupation').value).to eq 'Developer'
153
- expect(browser.text_field(index: 4).value).to eq 'Developer'
154
- expect(browser.text_field(name: /new_user_occupation/i).value).to eq 'Developer'
155
- end
5
+ module Watir
6
+ describe TextField 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.text_field(id: 'new_user_email')).to exist
15
+ expect(browser.text_field(id: /new_user_email/)).to exist
16
+ expect(browser.text_field(name: 'new_user_email')).to exist
17
+ expect(browser.text_field(name: /new_user_email/)).to exist
18
+ expect(browser.text_field(name: /new_user_occupation/i)).to exist
19
+ expect(browser.text_field(value: 'Developer')).to exist
20
+ expect(browser.text_field(value: /Developer/)).to exist
21
+ expect(browser.text_field(class: 'name')).to exist
22
+ expect(browser.text_field(class: /name/)).to exist
23
+ expect(browser.text_field(index: 0)).to exist
24
+ expect(browser.text_field(xpath: "//input[@id='new_user_email']")).to exist
25
+ expect(browser.text_field(label: 'First name')).to exist
26
+ expect(browser.text_field(label: /(q|a)st? name/)).to exist
27
+ expect(browser.text_field(label: 'Without for')).to exist
28
+ expect(browser.text_field(label: /Without for/)).to exist
29
+ expect(browser.text_field(label: 'With hidden text')).to exist
30
+ expect(browser.text_field(label: 'With text')).not_to exist
31
+
32
+ expect(browser.text_field(label: /With hidden text/)).to exist
33
+ expect(browser.text_field(label: /With text/)).not_to exist
34
+ end
35
+
36
+ it 'returns true in spite of hidden text',
37
+ except: {browser: :safari, reason: 'Safari is not filtering out hidden text'} do
38
+ expect(browser.text_field(visible_label: 'With hidden text')).not_to exist
39
+ expect(browser.text_field(visible_label: 'With text')).to exist
40
+ expect(browser.text_field(visible_label: /With text/)).to exist
41
+ expect(browser.text_field(visible_label: /With hidden text/)).not_to exist
42
+ end
43
+
44
+ it 'locates value of text_field using text locators' do
45
+ browser.text_field(id: 'new_user_occupation').set 'Firefighter'
46
+
47
+ expect(browser.text_field(text: 'Firefighter')).to exist
48
+ expect(browser.text_field(text: /Fire/)).to exist
49
+ expect(browser.text_field(visible_text: 'Firefighter')).to exist
50
+ expect(browser.text_field(visible_text: /Fire/)).to exist
51
+ end
52
+
53
+ it 'returns the first text field if given no args' do
54
+ expect(browser.text_field).to exist
55
+ end
56
+
57
+ it 'respects text fields types' do
58
+ expect(browser.text_field.type).to eq('text')
59
+ end
60
+
61
+ it 'returns true if the element exists (no type attribute)' do
62
+ expect(browser.text_field(id: 'new_user_first_name')).to exist
63
+ end
64
+
65
+ it 'returns true if the element exists (invalid type attribute)' do
66
+ expect(browser.text_field(id: 'new_user_last_name')).to exist
67
+ end
68
+
69
+ it 'returns true for element with upper case type' do
70
+ expect(browser.text_field(id: 'new_user_email_confirm')).to exist
71
+ end
72
+
73
+ it 'returns true for element with unknown type attribute' do
74
+ expect(browser.text_field(id: 'unknown_text_field')).to exist
75
+ end
76
+
77
+ it 'returns false if the element does not exist' do
78
+ expect(browser.text_field(id: 'no_such_id')).not_to exist
79
+ expect(browser.text_field(id: /no_such_id/)).not_to exist
80
+ expect(browser.text_field(name: 'no_such_name')).not_to exist
81
+ expect(browser.text_field(name: /no_such_name/)).not_to exist
82
+ expect(browser.text_field(value: 'no_such_value')).not_to exist
83
+ expect(browser.text_field(value: /no_such_value/)).not_to exist
84
+ expect(browser.text_field(text: 'no_such_text')).not_to exist
85
+ expect(browser.text_field(text: /no_such_text/)).not_to exist
86
+ expect(browser.text_field(class: 'no_such_class')).not_to exist
87
+ expect(browser.text_field(class: /no_such_class/)).not_to exist
88
+ expect(browser.text_field(index: 1337)).not_to exist
89
+ expect(browser.text_field(xpath: "//input[@id='no_such_id']")).not_to exist
90
+ expect(browser.text_field(label: 'bad label')).not_to exist
91
+ expect(browser.text_field(label: /bad label/)).not_to exist
92
+
93
+ # input type='hidden' should not be found by #text_field
94
+ expect(browser.text_field(id: 'new_user_interests_dolls')).not_to exist
95
+ end
96
+
97
+ it "raises TypeError when 'what' argument is invalid" do
98
+ expect { browser.text_field(id: 3.14).exists? }.to raise_error(TypeError)
99
+ end
100
+ end
101
+
102
+ # Attribute methods
103
+ describe '#id' do
104
+ it 'returns the id attribute if the text field exists' do
105
+ expect(browser.text_field(index: 4).id).to eq 'new_user_occupation'
106
+ end
107
+
108
+ it "raises UnknownObjectException if the text field doesn't exist" do
109
+ expect { browser.text_field(index: 1337).id }.to raise_unknown_object_exception
110
+ end
111
+ end
112
+
113
+ describe '#name' do
114
+ it 'returns the name attribute if the text field exists' do
115
+ expect(browser.text_field(index: 3).name).to eq 'new_user_email_confirm'
116
+ end
117
+
118
+ it "raises UnknownObjectException if the text field doesn't exist" do
119
+ expect { browser.text_field(index: 1337).name }.to raise_unknown_object_exception
120
+ end
121
+ end
122
+
123
+ describe '#title' do
124
+ it 'returns the title attribute if the text field exists' do
125
+ expect(browser.text_field(id: 'new_user_code').title).to eq 'Your personal code'
126
+ end
127
+
128
+ it "raises UnknownObjectException if the text field doesn't exist" do
129
+ expect { browser.text_field(index: 1337).title }.to raise_unknown_object_exception
130
+ end
131
+ end
132
+
133
+ describe '#type' do
134
+ it 'returns the type attribute if the text field exists' do
135
+ expect(browser.text_field(index: 3).type).to eq 'text'
136
+ end
137
+
138
+ it "returns 'text' if the type attribute is invalid" do
139
+ expect(browser.text_field(id: 'new_user_last_name').type).to eq 'text'
140
+ end
141
+
142
+ it "returns 'text' if the type attribute does not exist" do
143
+ expect(browser.text_field(id: 'new_user_first_name').type).to eq 'text'
144
+ end
145
+
146
+ it "raises UnknownObjectException if the text field doesn't exist" do
147
+ expect { browser.text_field(index: 1337).type }.to raise_unknown_object_exception
148
+ end
149
+ end
150
+
151
+ describe '#value' do
152
+ it 'returns the value attribute if the text field exists' do
153
+ expect(browser.text_field(name: 'new_user_occupation').value).to eq 'Developer'
154
+ expect(browser.text_field(index: 4).value).to eq 'Developer'
155
+ expect(browser.text_field(name: /new_user_occupation/i).value).to eq 'Developer'
156
+ end
157
+
158
+ it "raises UnknownObjectException if the text field doesn't exist" do
159
+ expect { browser.text_field(index: 1337).value }.to raise_unknown_object_exception
160
+ end
161
+ end
162
+
163
+ describe '#respond_to?' do
164
+ it 'returns true for all attribute methods' do
165
+ expect(browser.text_field(index: 0)).to respond_to(:class_name)
166
+ expect(browser.text_field(index: 0)).to respond_to(:id)
167
+ expect(browser.text_field(index: 0)).to respond_to(:name)
168
+ expect(browser.text_field(index: 0)).to respond_to(:title)
169
+ expect(browser.text_field(index: 0)).to respond_to(:type)
170
+ expect(browser.text_field(index: 0)).to respond_to(:value)
171
+ end
172
+ end
173
+
174
+ # Access methods
175
+ describe '#enabled?' do
176
+ it 'returns true for enabled text fields' do
177
+ expect(browser.text_field(name: 'new_user_occupation')).to be_enabled
178
+ expect(browser.text_field(id: 'new_user_email')).to be_enabled
179
+ end
180
+
181
+ it 'returns false for disabled text fields' do
182
+ expect(browser.text_field(name: 'new_user_species')).not_to be_enabled
183
+ end
156
184
 
157
- it "raises UnknownObjectException if the text field doesn't exist" do
158
- expect { browser.text_field(index: 1337).value }.to raise_unknown_object_exception
185
+ it "raises UnknownObjectException if the text field doesn't exist" do
186
+ expect { browser.text_field(id: 'no_such_id').enabled? }.to raise_unknown_object_exception
187
+ end
159
188
  end
160
- end
161
189
 
162
- describe '#respond_to?' do
163
- it 'returns true for all attribute methods' do
164
- expect(browser.text_field(index: 0)).to respond_to(:class_name)
165
- expect(browser.text_field(index: 0)).to respond_to(:id)
166
- expect(browser.text_field(index: 0)).to respond_to(:name)
167
- expect(browser.text_field(index: 0)).to respond_to(:title)
168
- expect(browser.text_field(index: 0)).to respond_to(:type)
169
- expect(browser.text_field(index: 0)).to respond_to(:value)
170
- end
171
- end
190
+ describe '#disabled?' do
191
+ it 'returns true if the text field is disabled' do
192
+ expect(browser.text_field(id: 'new_user_species')).to be_disabled
193
+ end
172
194
 
173
- # Access methods
174
- describe '#enabled?' do
175
- it 'returns true for enabled text fields' do
176
- expect(browser.text_field(name: 'new_user_occupation')).to be_enabled
177
- expect(browser.text_field(id: 'new_user_email')).to be_enabled
178
- end
195
+ it 'returns false if the text field is enabled' do
196
+ expect(browser.text_field(index: 0)).not_to be_disabled
197
+ end
179
198
 
180
- it 'returns false for disabled text fields' do
181
- expect(browser.text_field(name: 'new_user_species')).to_not be_enabled
199
+ it "raises UnknownObjectException if the text field doesn't exist" do
200
+ expect { browser.text_field(index: 1337).disabled? }.to raise_unknown_object_exception
201
+ end
182
202
  end
183
203
 
184
- it "raises UnknownObjectException if the text field doesn't exist" do
185
- expect { browser.text_field(id: 'no_such_id').enabled? }.to raise_unknown_object_exception
186
- end
187
- end
188
-
189
- describe '#disabled?' do
190
- it 'returns true if the text field is disabled' do
191
- expect(browser.text_field(id: 'new_user_species')).to be_disabled
192
- end
204
+ describe '#readonly?' do
205
+ it 'returns true for read-only text fields' do
206
+ expect(browser.text_field(name: 'new_user_code')).to be_readonly
207
+ expect(browser.text_field(id: 'new_user_code')).to be_readonly
208
+ end
193
209
 
194
- it 'returns false if the text field is enabled' do
195
- expect(browser.text_field(index: 0)).to_not be_disabled
196
- end
210
+ it 'returns false for writable text fields' do
211
+ expect(browser.text_field(name: 'new_user_email')).not_to be_readonly
212
+ end
197
213
 
198
- it "raises UnknownObjectException if the text field doesn't exist" do
199
- expect { browser.text_field(index: 1337).disabled? }.to raise_unknown_object_exception
200
- end
201
- end
202
-
203
- describe '#readonly?' do
204
- it 'returns true for read-only text fields' do
205
- expect(browser.text_field(name: 'new_user_code')).to be_readonly
206
- expect(browser.text_field(id: 'new_user_code')).to be_readonly
207
- end
208
-
209
- it 'returns false for writable text fields' do
210
- expect(browser.text_field(name: 'new_user_email')).to_not be_readonly
211
- end
212
-
213
- it "raises UnknownObjectException if the text field doesn't exist" do
214
- expect { browser.text_field(id: 'no_such_id').readonly? }.to raise_unknown_object_exception
215
- end
214
+ it "raises UnknownObjectException if the text field doesn't exist" do
215
+ expect { browser.text_field(id: 'no_such_id').readonly? }.to raise_unknown_object_exception
216
+ end
216
217
 
217
- it 'raises UnknownReadOnlyException if sending keys to readonly element' do
218
- expect { browser.text_field(id: 'new_user_code').set 'foo' }.to raise_object_read_only_exception
218
+ it 'raises UnknownReadOnlyException if sending keys to readonly element' do
219
+ expect { browser.text_field(id: 'new_user_code').set 'foo' }.to raise_object_read_only_exception
220
+ end
219
221
  end
220
222
  end
221
223
  end
@@ -2,44 +2,46 @@
2
2
 
3
3
  require 'watirspec_helper'
4
4
 
5
- describe 'TextFields' do
6
- before :each do
7
- browser.goto(WatirSpec.url_for('forms_with_input_elements.html'))
8
- end
5
+ module Watir
6
+ describe TextFieldCollection do
7
+ before do
8
+ browser.goto(WatirSpec.url_for('forms_with_input_elements.html'))
9
+ end
9
10
 
10
- describe 'with selectors' do
11
- it 'returns the matching elements' do
12
- expect(browser.text_fields(name: 'new_user_email').to_a).to eq [browser.text_field(name: 'new_user_email')]
11
+ describe 'with selectors' do
12
+ it 'returns the matching elements' do
13
+ expect(browser.text_fields(name: 'new_user_email').to_a).to eq [browser.text_field(name: 'new_user_email')]
14
+ end
13
15
  end
14
- end
15
16
 
16
- describe '#length' do
17
- it 'returns the number of text fields' do
18
- expect(browser.text_fields.length).to eq 19
17
+ describe '#length' do
18
+ it 'returns the number of text fields' do
19
+ expect(browser.text_fields.length).to eq 19
20
+ end
19
21
  end
20
- end
21
22
 
22
- describe '#[]' do
23
- it 'returns the text field at the given index' do
24
- expect(browser.text_fields[0].id).to eq 'new_user_first_name'
25
- expect(browser.text_fields[1].id).to eq 'new_user_last_name'
26
- expect(browser.text_fields[2].id).to eq 'new_user_email'
23
+ describe '#[]' do
24
+ it 'returns the text field at the given index' do
25
+ expect(browser.text_fields[0].id).to eq 'new_user_first_name'
26
+ expect(browser.text_fields[1].id).to eq 'new_user_last_name'
27
+ expect(browser.text_fields[2].id).to eq 'new_user_email'
28
+ end
27
29
  end
28
- end
29
30
 
30
- describe '#each' do
31
- it 'iterates through text fields correctly' do
32
- count = 0
31
+ describe '#each' do
32
+ it 'iterates through text fields correctly' do
33
+ count = 0
33
34
 
34
- browser.text_fields.each_with_index do |r, index|
35
- expect(r.name).to eq browser.text_field(index: index).name
36
- expect(r.id).to eq browser.text_field(index: index).id
37
- expect(r.value).to eq browser.text_field(index: index).value
35
+ browser.text_fields.each_with_index do |r, index|
36
+ expect(r.name).to eq browser.text_field(index: index).name
37
+ expect(r.id).to eq browser.text_field(index: index).id
38
+ expect(r.value).to eq browser.text_field(index: index).value
38
39
 
39
- count += 1
40
- end
40
+ count += 1
41
+ end
41
42
 
42
- expect(count).to be > 0
43
+ expect(count).to be > 0
44
+ end
43
45
  end
44
46
  end
45
47
  end
@@ -2,27 +2,29 @@
2
2
 
3
3
  require 'watirspec_helper'
4
4
 
5
- describe 'TextArea' do
6
- before :each do
7
- browser.goto WatirSpec.url_for('forms_with_input_elements.html')
8
- end
5
+ module Watir
6
+ describe TextArea do
7
+ before do
8
+ browser.goto WatirSpec.url_for('forms_with_input_elements.html')
9
+ end
9
10
 
10
- let(:textarea) { browser.textarea }
11
+ let(:textarea) { browser.textarea }
11
12
 
12
- it 'can set a value' do
13
- textarea.set 'foo'
14
- expect(textarea.value).to eq 'foo'
15
- end
13
+ it 'can set a value' do
14
+ textarea.set 'foo'
15
+ expect(textarea.value).to eq 'foo'
16
+ end
16
17
 
17
- it 'can clear a value' do
18
- textarea.set 'foo'
19
- textarea.clear
20
- expect(textarea.value).to eq ''
21
- end
18
+ it 'can clear a value' do
19
+ textarea.set 'foo'
20
+ textarea.clear
21
+ expect(textarea.value).to eq ''
22
+ end
22
23
 
23
- it 'locates textarea by value' do
24
- browser.textarea.set 'foo'
25
- expect(browser.textarea(value: /foo/)).to exist
26
- expect(browser.textarea(value: 'foo')).to exist
24
+ it 'locates textarea by value' do
25
+ browser.textarea.set 'foo'
26
+ expect(browser.textarea(value: /foo/)).to exist
27
+ expect(browser.textarea(value: 'foo')).to exist
28
+ end
27
29
  end
28
30
  end
@@ -2,25 +2,27 @@
2
2
 
3
3
  require 'watirspec_helper'
4
4
 
5
- describe 'TextArea' do
6
- before :each do
7
- browser.goto WatirSpec.url_for('forms_with_input_elements.html')
8
- end
9
-
10
- context 'when locating by :value' do
11
- before(:each) do
12
- browser.textarea(index: 0).set 'foo1'
13
- browser.textarea(index: 1).set 'foo2'
5
+ module Watir
6
+ describe TextAreaCollection do
7
+ before do
8
+ browser.goto WatirSpec.url_for('forms_with_input_elements.html')
14
9
  end
15
10
 
16
- it 'finds textareas by string' do
17
- expect(browser.textareas(value: 'foo1').map(&:id)).to eq [browser.textarea(index: 0).id]
18
- expect(browser.textareas(value: 'foo2').map(&:id)).to eq [browser.textarea(index: 1).id]
19
- end
11
+ context 'when locating by :value' do
12
+ before do
13
+ browser.textarea(index: 0).set 'foo1'
14
+ browser.textarea(index: 1).set 'foo2'
15
+ end
16
+
17
+ it 'finds textareas by string' do
18
+ expect(browser.textareas(value: 'foo1').map(&:id)).to eq [browser.textarea(index: 0).id]
19
+ expect(browser.textareas(value: 'foo2').map(&:id)).to eq [browser.textarea(index: 1).id]
20
+ end
20
21
 
21
- it 'finds textareas by regexp' do
22
- expect(browser.textareas(value: /foo/)[0].id).to eq browser.textarea(index: 0).id
23
- expect(browser.textareas(value: /foo/)[1].id).to eq browser.textarea(index: 1).id
22
+ it 'finds textareas by regexp' do
23
+ expect(browser.textareas(value: /foo/)[0].id).to eq browser.textarea(index: 0).id
24
+ expect(browser.textareas(value: /foo/)[1].id).to eq browser.textarea(index: 1).id
25
+ end
24
26
  end
25
27
  end
26
28
  end