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,183 +2,179 @@
2
2
 
3
3
  require 'watirspec_helper'
4
4
 
5
- describe 'Link' do
6
- before :each do
7
- browser.goto(WatirSpec.url_for('non_control_elements.html'))
8
- end
9
-
10
- # Exists method
11
- describe '#exist?' do
12
- it 'returns true if the link exists' do
13
- expect(browser.link(id: 'link_2')).to exist
14
- expect(browser.link(id: /link_2/)).to exist
15
- expect(browser.link(title: 'link_title_2')).to exist
16
- expect(browser.link(title: /link_title_2/)).to exist
17
- expect(browser.link(text: 'Link 2')).to exist
18
- expect(browser.link(text: /Link 2/i)).to exist
19
- expect(browser.link(href: 'non_control_elements.html')).to exist
20
- expect(browser.link(href: /non_control_elements.html/)).to exist
21
- expect(browser.link(index: 1)).to exist
22
- expect(browser.link(xpath: "//a[@id='link_2']")).to exist
23
- end
24
-
25
- it 'returns the first link if given no args' do
26
- expect(browser.link).to exist
27
- end
28
-
29
- it 'strips spaces from href attribute when locating elements' do
30
- expect(browser.link(href: /strip_space$/)).to exist
31
- end
32
-
33
- it "returns false if the link doesn't exist" do
34
- expect(browser.link(id: 'no_such_id')).to_not exist
35
- expect(browser.link(id: /no_such_id/)).to_not exist
36
- expect(browser.link(title: 'no_such_title')).to_not exist
37
- expect(browser.link(title: /no_such_title/)).to_not exist
38
- expect(browser.link(text: 'no_such_text')).to_not exist
39
- expect(browser.link(text: /no_such_text/i)).to_not exist
40
- expect(browser.link(href: 'no_such_href')).to_not exist
41
- expect(browser.link(href: /no_such_href/)).to_not exist
42
- expect(browser.link(index: 1337)).to_not exist
43
- expect(browser.link(xpath: "//a[@id='no_such_id']")).to_not exist
44
- end
45
-
46
- it "raises TypeError when 'what' argument is invalid" do
47
- expect { browser.link(id: 3.14).exists? }.to raise_error(TypeError)
48
- end
49
- end
50
-
51
- # Attribute methods
52
- describe '#href' do
53
- it 'returns the href attribute if the link exists' do
54
- expect(browser.link(index: 1).href).to match(/non_control_elements/)
55
- end
56
-
57
- it "returns an empty string if the link exists and the attribute doesn't" do
58
- expect(browser.link(index: 0).href).to eq ''
59
- end
60
-
61
- it "raises an UnknownObjectException if the link doesn't exist" do
62
- expect { browser.link(index: 1337).href }.to raise_unknown_object_exception
63
- end
64
- end
65
-
66
- describe '#href' do
67
- it 'returns the href attribute' do
68
- expect(browser.link(index: 1).href).to match(/non_control_elements/)
69
- end
70
- end
71
-
72
- describe '#id' do
73
- it 'returns the id attribute if the link exists' do
74
- expect(browser.link(index: 1).id).to eq 'link_2'
75
- end
76
-
77
- it "returns an empty string if the link exists and the attribute doesn't" do
78
- expect(browser.link(index: 0).id).to eq ''
79
- end
80
-
81
- it "raises an UnknownObjectException if the link doesn't exist" do
82
- expect { browser.link(index: 1337).id }.to raise_unknown_object_exception
83
- end
84
- end
85
-
86
- describe '#text' do
87
- it 'returns the link text' do
88
- expect(browser.link(index: 1).text).to eq 'Link 2'
89
- end
90
-
91
- it 'returns an empty string if the link exists and contains no text' do
92
- expect(browser.link(index: 0).text).to eq ''
93
- end
94
-
95
- it "raises an UnknownObjectException if the link doesn't exist" do
96
- expect { browser.link(index: 1337).text }.to raise_unknown_object_exception
97
- end
98
- end
99
-
100
- describe '#title' do
101
- it 'returns the type attribute if the link exists' do
102
- expect(browser.link(index: 1).title).to eq 'link_title_2'
103
- end
104
-
105
- it "returns an empty string if the link exists and the attribute doesn't" do
106
- expect(browser.link(index: 0).title).to eq ''
107
- end
108
-
109
- it "raises an UnknownObjectException if the link doesn't exist" do
110
- expect { browser.link(index: 1337).title }.to raise_unknown_object_exception
111
- end
112
- end
113
-
114
- describe '#respond_to?' do
115
- it 'returns true for all attribute methods' do
116
- expect(browser.link(index: 0)).to respond_to(:class_name)
117
- expect(browser.link(index: 0)).to respond_to(:href)
118
- expect(browser.link(index: 0)).to respond_to(:id)
119
- expect(browser.link(index: 0)).to respond_to(:style)
120
- expect(browser.link(index: 0)).to respond_to(:text)
121
- expect(browser.link(index: 0)).to respond_to(:title)
122
- end
123
- end
124
-
125
- # Manipulation methods
126
- # Note: the #wait_until calls are hacks for Safari specifically
127
- describe '#click' do
128
- it 'finds an existing link by (text: String) and clicks it' do
129
- element = browser.link(text: 'Link 3')
130
- element.wait_until { |link| !link.exist? || link.click }
131
- expect(browser.h1(text: 'User administration')).to exist
132
- end
133
-
134
- it 'finds an existing link by (text: Regexp) and clicks it' do
135
- element = browser.link(href: /forms_with_input_elements/)
136
- element.wait_until { |link| !link.exist? || link.click }
137
- expect(browser.h1(text: 'User administration')).to exist
138
- end
139
-
140
- it 'finds an existing link by (index: Integer) and clicks it' do
141
- element = browser.link(index: 2)
142
- element.wait_until { |link| !link.exist? || link.click }
143
- expect(browser.h1(text: 'User administration')).to exist
144
- end
145
-
146
- it "raises an UnknownObjectException if the link doesn't exist" do
147
- expect { browser.link(index: 1337).click }.to raise_unknown_object_exception
148
- end
149
-
150
- it 'clicks a link with no text content but an img child' do
151
- browser.goto WatirSpec.url_for('images.html')
152
- browser.link(href: /definition_lists.html/).click
153
- browser.wait_while(title: /^(Images|)$/)
154
- expect(browser.title).to eq 'definition_lists'
155
- end
156
- end
157
-
158
- describe 'visible text' do
159
- it 'finds links by visible text' do
160
- browser.goto WatirSpec.url_for('non_control_elements.html')
161
-
162
- expect(browser.link(visible_text: 'all visible')).to exist
163
- expect(browser.link(visible_text: /all visible/)).to exist
164
- expect(browser.link(visible_text: /some visible/)).to exist
165
-
166
- expect(browser.link(visible_text: 'Link 2', class: 'external')).to exist
167
- expect(browser.link(visible_text: /Link 2/, class: 'external')).to exist
168
- end
169
-
170
- it 'finds links in spite of hidden text' do
171
- browser.goto WatirSpec.url_for('non_control_elements.html')
172
-
173
- expect(browser.link(visible_text: 'some visible')).to exist
174
- expect(browser.link(visible_text: 'none visible')).not_to exist
175
- expect(browser.link(visible_text: /none visible/)).not_to exist
176
- end
177
-
178
- it 'raises exception unless value is a String or a RegExp' do
179
- browser.goto WatirSpec.url_for('non_control_elements.html')
180
- msg = /expected one of \[String, Regexp\], got 7:Integer/
181
- expect { browser.link(visible_text: 7).exists? }.to raise_exception(TypeError, msg)
5
+ module Watir
6
+ describe Anchor do
7
+ before do
8
+ browser.goto(WatirSpec.url_for('non_control_elements.html'))
9
+ end
10
+
11
+ # Exists method
12
+ describe '#exist?' do
13
+ it 'returns true if the link exists' do
14
+ expect(browser.link(id: 'link_2')).to exist
15
+ expect(browser.link(id: /link_2/)).to exist
16
+ expect(browser.link(title: 'link_title_2')).to exist
17
+ expect(browser.link(title: /link_title_2/)).to exist
18
+ expect(browser.link(text: 'Link 2')).to exist
19
+ expect(browser.link(text: /Link 2/i)).to exist
20
+ expect(browser.link(href: 'non_control_elements.html')).to exist
21
+ expect(browser.link(href: /non_control_elements.html/)).to exist
22
+ expect(browser.link(index: 1)).to exist
23
+ expect(browser.link(xpath: "//a[@id='link_2']")).to exist
24
+ end
25
+
26
+ it 'returns the first link if given no args' do
27
+ expect(browser.link).to exist
28
+ end
29
+
30
+ it 'strips spaces from href attribute when locating elements' do
31
+ expect(browser.link(href: /strip_space$/)).to exist
32
+ end
33
+
34
+ it "returns false if the link doesn't exist" do
35
+ expect(browser.link(id: 'no_such_id')).not_to exist
36
+ expect(browser.link(id: /no_such_id/)).not_to exist
37
+ expect(browser.link(title: 'no_such_title')).not_to exist
38
+ expect(browser.link(title: /no_such_title/)).not_to exist
39
+ expect(browser.link(text: 'no_such_text')).not_to exist
40
+ expect(browser.link(text: /no_such_text/i)).not_to exist
41
+ expect(browser.link(href: 'no_such_href')).not_to exist
42
+ expect(browser.link(href: /no_such_href/)).not_to exist
43
+ expect(browser.link(index: 1337)).not_to exist
44
+ expect(browser.link(xpath: "//a[@id='no_such_id']")).not_to exist
45
+ end
46
+
47
+ it "raises TypeError when 'what' argument is invalid" do
48
+ expect { browser.link(id: 3.14).exists? }.to raise_error(TypeError)
49
+ end
50
+ end
51
+
52
+ # Attribute methods
53
+ describe '#href' do
54
+ it 'returns the href attribute if the link exists' do
55
+ expect(browser.link(index: 1).href).to match(/non_control_elements/)
56
+ end
57
+
58
+ it "returns an empty string if the link exists and the attribute doesn't" do
59
+ expect(browser.link(index: 0).href).to eq ''
60
+ end
61
+
62
+ it "raises an UnknownObjectException if the link doesn't exist" do
63
+ expect { browser.link(index: 1337).href }.to raise_unknown_object_exception
64
+ end
65
+ end
66
+
67
+ describe '#id' do
68
+ it 'returns the id attribute if the link exists' do
69
+ expect(browser.link(index: 1).id).to eq 'link_2'
70
+ end
71
+
72
+ it "returns an empty string if the link exists and the attribute doesn't" do
73
+ expect(browser.link(index: 0).id).to eq ''
74
+ end
75
+
76
+ it "raises an UnknownObjectException if the link doesn't exist" do
77
+ expect { browser.link(index: 1337).id }.to raise_unknown_object_exception
78
+ end
79
+ end
80
+
81
+ describe '#text' do
82
+ it 'returns the link text' do
83
+ expect(browser.link(index: 1).text).to eq 'Link 2'
84
+ end
85
+
86
+ it 'returns an empty string if the link exists and contains no text' do
87
+ expect(browser.link(index: 0).text).to eq ''
88
+ end
89
+
90
+ it "raises an UnknownObjectException if the link doesn't exist" do
91
+ expect { browser.link(index: 1337).text }.to raise_unknown_object_exception
92
+ end
93
+ end
94
+
95
+ describe '#title' do
96
+ it 'returns the type attribute if the link exists' do
97
+ expect(browser.link(index: 1).title).to eq 'link_title_2'
98
+ end
99
+
100
+ it "returns an empty string if the link exists and the attribute doesn't" do
101
+ expect(browser.link(index: 0).title).to eq ''
102
+ end
103
+
104
+ it "raises an UnknownObjectException if the link doesn't exist" do
105
+ expect { browser.link(index: 1337).title }.to raise_unknown_object_exception
106
+ end
107
+ end
108
+
109
+ describe '#respond_to?' do
110
+ it 'returns true for all attribute methods' do
111
+ expect(browser.link(index: 0)).to respond_to(:class_name)
112
+ expect(browser.link(index: 0)).to respond_to(:href)
113
+ expect(browser.link(index: 0)).to respond_to(:id)
114
+ expect(browser.link(index: 0)).to respond_to(:style)
115
+ expect(browser.link(index: 0)).to respond_to(:text)
116
+ expect(browser.link(index: 0)).to respond_to(:title)
117
+ end
118
+ end
119
+
120
+ # Manipulation methods
121
+ # Note: the #wait_until calls are hacks for Safari specifically
122
+ describe '#click' do
123
+ it 'finds an existing link by (text: String) and clicks it' do
124
+ element = browser.link(text: 'Link 3')
125
+ element.wait_until { |link| !link.exist? || link.click }
126
+ expect(browser.h1(text: 'User administration')).to exist
127
+ end
128
+
129
+ it 'finds an existing link by (text: Regexp) and clicks it' do
130
+ element = browser.link(href: /forms_with_input_elements/)
131
+ element.wait_until { |link| !link.exist? || link.click }
132
+ expect(browser.h1(text: 'User administration')).to exist
133
+ end
134
+
135
+ it 'finds an existing link by (index: Integer) and clicks it' do
136
+ element = browser.link(index: 2)
137
+ element.wait_until { |link| !link.exist? || link.click }
138
+ expect(browser.h1(text: 'User administration')).to exist
139
+ end
140
+
141
+ it "raises an UnknownObjectException if the link doesn't exist" do
142
+ expect { browser.link(index: 1337).click }.to raise_unknown_object_exception
143
+ end
144
+
145
+ it 'clicks a link with no text content but an img child' do
146
+ browser.goto WatirSpec.url_for('images.html')
147
+ browser.link(href: /definition_lists.html/).click
148
+ browser.wait_while(title: /^(Images|)$/)
149
+ expect(browser.title).to eq 'definition_lists'
150
+ end
151
+ end
152
+
153
+ describe 'visible text' do
154
+ it 'finds links by visible text' do
155
+ browser.goto WatirSpec.url_for('non_control_elements.html')
156
+
157
+ expect(browser.link(visible_text: 'all visible')).to exist
158
+ expect(browser.link(visible_text: /all visible/)).to exist
159
+ expect(browser.link(visible_text: /some visible/)).to exist
160
+
161
+ expect(browser.link(visible_text: 'Link 2', class: 'external')).to exist
162
+ expect(browser.link(visible_text: /Link 2/, class: 'external')).to exist
163
+ end
164
+
165
+ it 'finds links in spite of hidden text' do
166
+ browser.goto WatirSpec.url_for('non_control_elements.html')
167
+
168
+ expect(browser.link(visible_text: 'some visible')).to exist
169
+ expect(browser.link(visible_text: 'none visible')).not_to exist
170
+ expect(browser.link(visible_text: /none visible/)).not_to exist
171
+ end
172
+
173
+ it 'raises exception unless value is a String or a RegExp' do
174
+ browser.goto WatirSpec.url_for('non_control_elements.html')
175
+ msg = /expected one of \[String, Regexp\], got 7:Integer/
176
+ expect { browser.link(visible_text: 7).exists? }.to raise_exception(TypeError, msg)
177
+ end
182
178
  end
183
179
  end
184
180
  end
@@ -2,63 +2,65 @@
2
2
 
3
3
  require 'watirspec_helper'
4
4
 
5
- describe 'Links' do
6
- before :each do
7
- browser.goto(WatirSpec.url_for('non_control_elements.html'))
8
- end
9
-
10
- describe 'with selectors' do
11
- it 'returns the matching elements' do
12
- expect(browser.links(title: 'link_title_2').to_a).to eq [browser.link(title: 'link_title_2')]
5
+ module Watir
6
+ describe AnchorCollection do
7
+ before do
8
+ browser.goto(WatirSpec.url_for('non_control_elements.html'))
13
9
  end
14
- end
15
10
 
16
- describe '#length' do
17
- it 'returns the number of links' do
18
- expect(browser.links.length).to eq 7
11
+ describe 'with selectors' do
12
+ it 'returns the matching elements' do
13
+ expect(browser.links(title: 'link_title_2').to_a).to eq [browser.link(title: 'link_title_2')]
14
+ end
19
15
  end
20
- end
21
16
 
22
- describe '#[]' do
23
- it 'returns the link at the given index' do
24
- expect(browser.links[2].id).to eq 'link_3'
17
+ describe '#length' do
18
+ it 'returns the number of links' do
19
+ expect(browser.links.length).to eq 7
20
+ end
25
21
  end
26
22
 
27
- it 'returns a Link object also when the index is out of bounds' do
28
- expect(browser.links[2000]).to_not be_nil
23
+ describe '#[]' do
24
+ it 'returns the link at the given index' do
25
+ expect(browser.links[2].id).to eq 'link_3'
26
+ end
27
+
28
+ it 'returns a Link object also when the index is out of bounds' do
29
+ expect(browser.links[2000]).not_to be_nil
30
+ end
29
31
  end
30
- end
31
32
 
32
- describe '#each' do
33
- it 'iterates through links correctly' do
34
- count = 0
33
+ describe '#each' do
34
+ it 'iterates through links correctly' do
35
+ count = 0
35
36
 
36
- browser.links.each_with_index do |c, index|
37
- expect(c.id).to eq browser.link(index: index).id
38
- count += 1
39
- end
37
+ browser.links.each_with_index do |c, index|
38
+ expect(c.id).to eq browser.link(index: index).id
39
+ count += 1
40
+ end
40
41
 
41
- expect(count).to be > 0
42
+ expect(count).to be > 0
43
+ end
42
44
  end
43
- end
44
45
 
45
- describe 'visible text' do
46
- it 'finds links by visible text' do
47
- browser.goto WatirSpec.url_for('non_control_elements.html')
48
- container = browser.div(id: 'visible_link')
49
- expect(container.links(visible_text: 'all visible').count).to eq(1)
50
- expect(container.links(visible_text: /all visible/).count).to eq(1)
51
- expect(container.links(visible_text: /some visible/).count).to eq(1)
52
- end
46
+ describe 'visible text' do
47
+ it 'finds links by visible text' do
48
+ browser.goto WatirSpec.url_for('non_control_elements.html')
49
+ container = browser.div(id: 'visible_link')
50
+ expect(container.links(visible_text: 'all visible').count).to eq(1)
51
+ expect(container.links(visible_text: /all visible/).count).to eq(1)
52
+ expect(container.links(visible_text: /some visible/).count).to eq(1)
53
+ end
53
54
 
54
- it 'finds links in spite of hidden text',
55
- except: {browser: :safari, reason: 'Safari is not filtering out hidden text'} do
56
- browser.goto WatirSpec.url_for('non_control_elements.html')
57
- container = browser.div(id: 'visible_text')
55
+ it 'finds links in spite of hidden text',
56
+ except: {browser: :safari, reason: 'Safari is not filtering out hidden text'} do
57
+ browser.goto WatirSpec.url_for('non_control_elements.html')
58
+ container = browser.div(id: 'visible_text')
58
59
 
59
- expect(container.divs(visible_text: 'some visible').count).to eq(1)
60
- expect(container.divs(visible_text: 'none visible').count).to eq(0)
61
- expect(container.divs(visible_text: /none visible/).count).to eq(0)
60
+ expect(container.divs(visible_text: 'some visible').count).to eq(1)
61
+ expect(container.divs(visible_text: 'none visible').count).to eq(0)
62
+ expect(container.divs(visible_text: /none visible/).count).to eq(0)
63
+ end
62
64
  end
63
65
  end
64
66
  end
@@ -2,41 +2,43 @@
2
2
 
3
3
  require 'watirspec_helper'
4
4
 
5
- describe 'Lis' do
6
- before :each do
7
- browser.goto(WatirSpec.url_for('non_control_elements.html'))
8
- end
5
+ module Watir
6
+ describe LICollection do
7
+ before do
8
+ browser.goto(WatirSpec.url_for('non_control_elements.html'))
9
+ end
9
10
 
10
- describe 'with selectors' do
11
- it 'returns the matching elements' do
12
- expect(browser.lis(class: 'nonlink').to_a).to eq [browser.li(class: 'nonlink')]
11
+ describe 'with selectors' do
12
+ it 'returns the matching elements' do
13
+ expect(browser.lis(class: 'nonlink').to_a).to eq [browser.li(class: 'nonlink')]
14
+ end
13
15
  end
14
- end
15
16
 
16
- describe '#length' do
17
- it 'returns the number of lis' do
18
- expect(browser.lis.length).to eq 18
17
+ describe '#length' do
18
+ it 'returns the number of lis' do
19
+ expect(browser.lis.length).to eq 18
20
+ end
19
21
  end
20
- end
21
22
 
22
- describe '#[]' do
23
- it 'returns the li at the given index' do
24
- expect(browser.lis[4].id).to eq 'non_link_1'
23
+ describe '#[]' do
24
+ it 'returns the li at the given index' do
25
+ expect(browser.lis[4].id).to eq 'non_link_1'
26
+ end
25
27
  end
26
- end
27
28
 
28
- describe '#each' do
29
- it 'iterates through lis correctly' do
30
- count = 0
29
+ describe '#each' do
30
+ it 'iterates through lis correctly' do
31
+ count = 0
31
32
 
32
- browser.lis.each_with_index do |l, index|
33
- expect(l.id).to eq browser.li(index: index).id
34
- expect(l.value).to eq browser.li(index: index).value
33
+ browser.lis.each_with_index do |l, index|
34
+ expect(l.id).to eq browser.li(index: index).id
35
+ expect(l.value).to eq browser.li(index: index).value
35
36
 
36
- count += 1
37
- end
37
+ count += 1
38
+ end
38
39
 
39
- expect(count).to be > 0
40
+ expect(count).to be > 0
41
+ end
40
42
  end
41
43
  end
42
44
  end
@@ -2,47 +2,49 @@
2
2
 
3
3
  require 'watirspec_helper'
4
4
 
5
- describe 'List' do
6
- before :each do
7
- browser.goto(WatirSpec.url_for('non_control_elements.html'))
8
- end
9
-
10
- it 'returns the list items assocaited with an Ol' do
11
- items = browser.ol(id: 'favorite_compounds').list_items
12
- expect(items).to be_a Watir::LICollection
13
- expect(items).to all(be_a Watir::LI)
14
- end
15
-
16
- it 'returns the list items assocaited with an Ul' do
17
- items = browser.ul(id: 'navbar').list_items
18
- expect(items).to be_a Watir::LICollection
19
- expect(items).to all(be_a Watir::LI)
20
- end
21
-
22
- it 'gets the size of a list' do
23
- ul = browser.ul(id: 'navbar')
24
- expect(ul.size).to eq 7
25
- end
26
-
27
- it 'iterates over a list' do
28
- ul = browser.ul(id: 'navbar')
29
- expect(ul.map(&:tag_name)).to eq Array.new(7, 'li')
30
- end
31
-
32
- it 'gets a list item at the specified index' do
33
- ul = browser.ul(id: 'navbar')
34
- expect(ul[4].text).to eq 'Non-link 1'
35
- end
36
-
37
- it 'returns the list item size' do
38
- items = browser.ol(id: 'favorite_compounds').list_items
39
- expect(items.size).to eq 5
40
- end
41
-
42
- it 'returns list item at an index' do
43
- items = browser.ol(id: 'favorite_compounds').list_items
44
- third = browser.ol(id: 'favorite_compounds').li(index: 2)
45
-
46
- expect(items[2]).to eq third
5
+ module Watir
6
+ describe List do
7
+ before do
8
+ browser.goto(WatirSpec.url_for('non_control_elements.html'))
9
+ end
10
+
11
+ it 'returns the list items assocaited with an Ol' do
12
+ items = browser.ol(id: 'favorite_compounds').list_items
13
+ expect(items).to be_a Watir::LICollection
14
+ expect(items).to all(be_a Watir::LI)
15
+ end
16
+
17
+ it 'returns the list items assocaited with an Ul' do
18
+ items = browser.ul(id: 'navbar').list_items
19
+ expect(items).to be_a Watir::LICollection
20
+ expect(items).to all(be_a Watir::LI)
21
+ end
22
+
23
+ it 'gets the size of a list' do
24
+ ul = browser.ul(id: 'navbar')
25
+ expect(ul.size).to eq 7
26
+ end
27
+
28
+ it 'iterates over a list' do
29
+ ul = browser.ul(id: 'navbar')
30
+ expect(ul.map(&:tag_name)).to eq Array.new(7, 'li')
31
+ end
32
+
33
+ it 'gets a list item at the specified index' do
34
+ ul = browser.ul(id: 'navbar')
35
+ expect(ul[4].text).to eq 'Non-link 1'
36
+ end
37
+
38
+ it 'returns the list item size' do
39
+ items = browser.ol(id: 'favorite_compounds').list_items
40
+ expect(items.size).to eq 5
41
+ end
42
+
43
+ it 'returns list item at an index' do
44
+ items = browser.ol(id: 'favorite_compounds').list_items
45
+ third = browser.ol(id: 'favorite_compounds').li(index: 2)
46
+
47
+ expect(items[2]).to eq third
48
+ end
47
49
  end
48
50
  end