watir 7.2.0 → 7.3.0

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 (149) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/chrome.yml +9 -1
  3. data/.github/workflows/edge.yml +10 -2
  4. data/.github/workflows/firefox.yml +10 -2
  5. data/.github/workflows/ie.yml +1 -1
  6. data/.github/workflows/safari.yml +1 -1
  7. data/.github/workflows/unit.yml +3 -3
  8. data/.rubocop.yml +36 -14
  9. data/.rubocop_todo.yml +8 -1
  10. data/CHANGES.md +17 -1
  11. data/LICENSE +2 -2
  12. data/lib/watir/capabilities.rb +2 -12
  13. data/lib/watir/cookies.rb +7 -2
  14. data/lib/watir/elements/date_field.rb +2 -2
  15. data/lib/watir/elements/date_time_field.rb +2 -2
  16. data/lib/watir/elements/select.rb +3 -3
  17. data/lib/watir/locators/anchor/selector_builder.rb +3 -0
  18. data/lib/watir/locators/element/matcher.rb +2 -1
  19. data/lib/watir/locators/element/selector_builder/regexp_disassembler.rb +2 -1
  20. data/lib/watir/locators/element/selector_builder.rb +1 -1
  21. data/lib/watir/locators/text_field/matcher.rb +1 -5
  22. data/lib/watir/version.rb +1 -1
  23. data/lib/watir.rb +1 -0
  24. data/lib/watirspec/implementation.rb +1 -1
  25. data/lib/watirspec.rb +1 -1
  26. data/spec/locator_spec_helper.rb +3 -15
  27. data/spec/unit/capabilities_spec.rb +552 -561
  28. data/spec/unit/element_locator_spec.rb +89 -78
  29. data/spec/unit/match_elements/button_spec.rb +69 -62
  30. data/spec/unit/match_elements/element_spec.rb +303 -309
  31. data/spec/unit/match_elements/text_field_spec.rb +76 -73
  32. data/spec/unit/selector_builder/anchor_spec.rb +39 -33
  33. data/spec/unit/selector_builder/button_spec.rb +209 -202
  34. data/spec/unit/selector_builder/cell_spec.rb +48 -42
  35. data/spec/unit/selector_builder/element_spec.rb +632 -627
  36. data/spec/unit/selector_builder/row_spec.rb +119 -113
  37. data/spec/unit/selector_builder/text_field_spec.rb +195 -188
  38. data/spec/unit/selector_builder/textarea_spec.rb +22 -14
  39. data/spec/unit/wait_spec.rb +85 -81
  40. data/spec/watirspec/adjacent_spec.rb +249 -247
  41. data/spec/watirspec/after_hooks_spec.rb +161 -159
  42. data/spec/watirspec/alert_spec.rb +61 -58
  43. data/spec/watirspec/browser_spec.rb +411 -409
  44. data/spec/watirspec/capabilities_spec.rb +99 -112
  45. data/spec/watirspec/cookies_spec.rb +144 -115
  46. data/spec/watirspec/drag_and_drop_spec.rb +26 -24
  47. data/spec/watirspec/element_hidden_spec.rb +66 -60
  48. data/spec/watirspec/elements/area_spec.rb +49 -47
  49. data/spec/watirspec/elements/areas_spec.rb +27 -25
  50. data/spec/watirspec/elements/button_spec.rb +253 -251
  51. data/spec/watirspec/elements/buttons_spec.rb +36 -34
  52. data/spec/watirspec/elements/checkbox_spec.rb +48 -36
  53. data/spec/watirspec/elements/checkboxes_spec.rb +29 -27
  54. data/spec/watirspec/elements/collections_spec.rb +126 -119
  55. data/spec/watirspec/elements/date_field_spec.rb +202 -183
  56. data/spec/watirspec/elements/date_fields_spec.rb +29 -27
  57. data/spec/watirspec/elements/date_time_field_spec.rb +216 -195
  58. data/spec/watirspec/elements/date_time_fields_spec.rb +30 -28
  59. data/spec/watirspec/elements/dd_spec.rb +87 -85
  60. data/spec/watirspec/elements/dds_spec.rb +27 -25
  61. data/spec/watirspec/elements/del_spec.rb +106 -104
  62. data/spec/watirspec/elements/dels_spec.rb +26 -24
  63. data/spec/watirspec/elements/div_spec.rb +225 -221
  64. data/spec/watirspec/elements/divs_spec.rb +37 -35
  65. data/spec/watirspec/elements/dl_spec.rb +110 -108
  66. data/spec/watirspec/elements/dls_spec.rb +28 -26
  67. data/spec/watirspec/elements/dt_spec.rb +86 -84
  68. data/spec/watirspec/elements/dts_spec.rb +27 -25
  69. data/spec/watirspec/elements/element_spec.rb +794 -775
  70. data/spec/watirspec/elements/elements_spec.rb +40 -38
  71. data/spec/watirspec/elements/em_spec.rb +62 -60
  72. data/spec/watirspec/elements/ems_spec.rb +28 -26
  73. data/spec/watirspec/elements/filefield_spec.rb +116 -114
  74. data/spec/watirspec/elements/filefields_spec.rb +28 -26
  75. data/spec/watirspec/elements/font_spec.rb +20 -18
  76. data/spec/watirspec/elements/form_spec.rb +51 -49
  77. data/spec/watirspec/elements/forms_spec.rb +29 -27
  78. data/spec/watirspec/elements/frame_spec.rb +89 -87
  79. data/spec/watirspec/elements/frames_spec.rb +27 -25
  80. data/spec/watirspec/elements/hidden_spec.rb +81 -79
  81. data/spec/watirspec/elements/hiddens_spec.rb +28 -26
  82. data/spec/watirspec/elements/hn_spec.rb +59 -57
  83. data/spec/watirspec/elements/hns_spec.rb +26 -24
  84. data/spec/watirspec/elements/iframe_spec.rb +195 -191
  85. data/spec/watirspec/elements/iframes_spec.rb +31 -29
  86. data/spec/watirspec/elements/image_spec.rb +148 -146
  87. data/spec/watirspec/elements/images_spec.rb +26 -24
  88. data/spec/watirspec/elements/input_spec.rb +9 -7
  89. data/spec/watirspec/elements/ins_spec.rb +106 -104
  90. data/spec/watirspec/elements/inses_spec.rb +26 -24
  91. data/spec/watirspec/elements/label_spec.rb +56 -54
  92. data/spec/watirspec/elements/labels_spec.rb +26 -24
  93. data/spec/watirspec/elements/li_spec.rb +76 -74
  94. data/spec/watirspec/elements/link_spec.rb +173 -177
  95. data/spec/watirspec/elements/links_spec.rb +45 -43
  96. data/spec/watirspec/elements/lis_spec.rb +27 -25
  97. data/spec/watirspec/elements/list_spec.rb +44 -42
  98. data/spec/watirspec/elements/map_spec.rb +57 -55
  99. data/spec/watirspec/elements/maps_spec.rb +27 -25
  100. data/spec/watirspec/elements/meta_spec.rb +16 -14
  101. data/spec/watirspec/elements/metas_spec.rb +26 -24
  102. data/spec/watirspec/elements/ol_spec.rb +56 -65
  103. data/spec/watirspec/elements/ols_spec.rb +26 -24
  104. data/spec/watirspec/elements/option_spec.rb +91 -89
  105. data/spec/watirspec/elements/p_spec.rb +81 -79
  106. data/spec/watirspec/elements/pre_spec.rb +77 -75
  107. data/spec/watirspec/elements/pres_spec.rb +26 -24
  108. data/spec/watirspec/elements/ps_spec.rb +26 -24
  109. data/spec/watirspec/elements/radio_spec.rb +251 -249
  110. data/spec/watirspec/elements/radios_spec.rb +28 -26
  111. data/spec/watirspec/elements/select_list_spec.rb +537 -526
  112. data/spec/watirspec/elements/select_lists_spec.rb +32 -30
  113. data/spec/watirspec/elements/span_spec.rb +112 -110
  114. data/spec/watirspec/elements/spans_spec.rb +26 -24
  115. data/spec/watirspec/elements/strong_spec.rb +58 -58
  116. data/spec/watirspec/elements/strongs_spec.rb +28 -26
  117. data/spec/watirspec/elements/table_spec.rb +192 -139
  118. data/spec/watirspec/elements/tables_spec.rb +28 -26
  119. data/spec/watirspec/elements/tbody_spec.rb +74 -72
  120. data/spec/watirspec/elements/tbodys_spec.rb +40 -38
  121. data/spec/watirspec/elements/td_spec.rb +66 -64
  122. data/spec/watirspec/elements/tds_spec.rb +41 -39
  123. data/spec/watirspec/elements/text_field_spec.rb +206 -204
  124. data/spec/watirspec/elements/text_fields_spec.rb +30 -28
  125. data/spec/watirspec/elements/textarea_spec.rb +20 -18
  126. data/spec/watirspec/elements/textareas_spec.rb +18 -16
  127. data/spec/watirspec/elements/tfoot_spec.rb +65 -63
  128. data/spec/watirspec/elements/tfoots_spec.rb +42 -40
  129. data/spec/watirspec/elements/thead_spec.rb +65 -63
  130. data/spec/watirspec/elements/theads_spec.rb +42 -40
  131. data/spec/watirspec/elements/tr_spec.rb +48 -46
  132. data/spec/watirspec/elements/trs_spec.rb +42 -40
  133. data/spec/watirspec/elements/ul_spec.rb +56 -54
  134. data/spec/watirspec/elements/uls_spec.rb +26 -24
  135. data/spec/watirspec/radio_set_spec.rb +269 -267
  136. data/spec/watirspec/screenshot_spec.rb +20 -18
  137. data/spec/watirspec/scroll_spec.rb +152 -148
  138. data/spec/watirspec/shadow_root_spec.rb +88 -83
  139. data/spec/watirspec/support/rspec_matchers.rb +34 -25
  140. data/spec/watirspec/user_editable_spec.rb +200 -198
  141. data/spec/watirspec/wait_spec.rb +289 -295
  142. data/spec/watirspec/window_switching_spec.rb +423 -434
  143. data/spec/watirspec_helper.rb +1 -23
  144. data/watir.gemspec +6 -5
  145. metadata +47 -37
  146. data/spec/watirspec/attributes_spec.rb +0 -18
  147. data/spec/watirspec/elements/table_nesting_spec.rb +0 -51
  148. data/spec/watirspec/special_chars_spec.rb +0 -23
  149. data/support/travis.sh +0 -15
@@ -2,75 +2,77 @@
2
2
 
3
3
  require 'watirspec_helper'
4
4
 
5
- describe 'Map' do
6
- before :each do
7
- browser.goto(WatirSpec.url_for('images.html'))
8
- end
9
-
10
- # Exists method
11
- describe '#exist?' do
12
- it "returns true if the 'map' exists" do
13
- expect(browser.map(id: 'triangle_map')).to exist
14
- expect(browser.map(id: /triangle_map/)).to exist
15
- expect(browser.map(name: 'triangle_map')).to exist
16
- expect(browser.map(name: /triangle_map/)).to exist
17
- expect(browser.map(index: 0)).to exist
18
- expect(browser.map(xpath: "//map[@id='triangle_map']")).to exist
5
+ module Watir
6
+ describe Map do
7
+ before do
8
+ browser.goto(WatirSpec.url_for('images.html'))
19
9
  end
20
10
 
21
- it 'returns the first map if given no args' do
22
- expect(browser.map).to exist
23
- end
11
+ # Exists method
12
+ describe '#exist?' do
13
+ it "returns true if the 'map' exists" do
14
+ expect(browser.map(id: 'triangle_map')).to exist
15
+ expect(browser.map(id: /triangle_map/)).to exist
16
+ expect(browser.map(name: 'triangle_map')).to exist
17
+ expect(browser.map(name: /triangle_map/)).to exist
18
+ expect(browser.map(index: 0)).to exist
19
+ expect(browser.map(xpath: "//map[@id='triangle_map']")).to exist
20
+ end
24
21
 
25
- it "returns false if the 'map' doesn't exist" do
26
- expect(browser.map(id: 'no_such_id')).to_not exist
27
- expect(browser.map(id: /no_such_id/)).to_not exist
28
- expect(browser.map(name: 'no_such_id')).to_not exist
29
- expect(browser.map(name: /no_such_id/)).to_not exist
30
- expect(browser.map(index: 1337)).to_not exist
31
- expect(browser.map(xpath: "//map[@id='no_such_id']")).to_not exist
32
- end
22
+ it 'returns the first map if given no args' do
23
+ expect(browser.map).to exist
24
+ end
33
25
 
34
- it "raises TypeError when 'what' argument is invalid" do
35
- expect { browser.map(id: 3.14).exists? }.to raise_error(TypeError)
36
- end
37
- end
26
+ it "returns false if the 'map' doesn't exist" do
27
+ expect(browser.map(id: 'no_such_id')).not_to exist
28
+ expect(browser.map(id: /no_such_id/)).not_to exist
29
+ expect(browser.map(name: 'no_such_id')).not_to exist
30
+ expect(browser.map(name: /no_such_id/)).not_to exist
31
+ expect(browser.map(index: 1337)).not_to exist
32
+ expect(browser.map(xpath: "//map[@id='no_such_id']")).not_to exist
33
+ end
38
34
 
39
- # Attribute methods
40
- describe '#id' do
41
- it 'returns the id attribute' do
42
- expect(browser.map(index: 0).id).to eq 'triangle_map'
35
+ it "raises TypeError when 'what' argument is invalid" do
36
+ expect { browser.map(id: 3.14).exists? }.to raise_error(TypeError)
37
+ end
43
38
  end
44
39
 
45
- it "returns an empty string if the element exists and the attribute doesn't" do
46
- expect(browser.map(index: 1).id).to eq ''
47
- end
40
+ # Attribute methods
41
+ describe '#id' do
42
+ it 'returns the id attribute' do
43
+ expect(browser.map(index: 0).id).to eq 'triangle_map'
44
+ end
48
45
 
49
- it "raises UnknownObjectException if the p doesn't exist" do
50
- expect { browser.map(id: 'no_such_id').id }.to raise_unknown_object_exception
51
- expect { browser.map(index: 1337).id }.to raise_unknown_object_exception
52
- end
53
- end
46
+ it "returns an empty string if the element exists and the attribute doesn't" do
47
+ expect(browser.map(index: 1).id).to eq ''
48
+ end
54
49
 
55
- describe '#name' do
56
- it 'returns the name attribute' do
57
- expect(browser.map(index: 0).name).to eq 'triangle_map'
50
+ it "raises UnknownObjectException if the p doesn't exist" do
51
+ expect { browser.map(id: 'no_such_id').id }.to raise_unknown_object_exception
52
+ expect { browser.map(index: 1337).id }.to raise_unknown_object_exception
53
+ end
58
54
  end
59
55
 
60
- it "returns an empty string if the element exists and the attribute doesn't" do
61
- expect(browser.map(index: 1).name).to eq ''
62
- end
56
+ describe '#name' do
57
+ it 'returns the name attribute' do
58
+ expect(browser.map(index: 0).name).to eq 'triangle_map'
59
+ end
60
+
61
+ it "returns an empty string if the element exists and the attribute doesn't" do
62
+ expect(browser.map(index: 1).name).to eq ''
63
+ end
63
64
 
64
- it "raises UnknownObjectException if the map doesn't exist" do
65
- expect { browser.map(id: 'no_such_id').name }.to raise_unknown_object_exception
66
- expect { browser.map(index: 1337).name }.to raise_unknown_object_exception
65
+ it "raises UnknownObjectException if the map doesn't exist" do
66
+ expect { browser.map(id: 'no_such_id').name }.to raise_unknown_object_exception
67
+ expect { browser.map(index: 1337).name }.to raise_unknown_object_exception
68
+ end
67
69
  end
68
- end
69
70
 
70
- describe '#respond_to?' do
71
- it 'returns true for all attribute methods' do
72
- expect(browser.map(index: 0)).to respond_to(:id)
73
- expect(browser.map(index: 0)).to respond_to(:name)
71
+ describe '#respond_to?' do
72
+ it 'returns true for all attribute methods' do
73
+ expect(browser.map(index: 0)).to respond_to(:id)
74
+ expect(browser.map(index: 0)).to respond_to(:name)
75
+ end
74
76
  end
75
77
  end
76
78
  end
@@ -2,40 +2,42 @@
2
2
 
3
3
  require 'watirspec_helper'
4
4
 
5
- describe 'Maps' do
6
- before :each do
7
- browser.goto(WatirSpec.url_for('images.html'))
8
- end
5
+ module Watir
6
+ describe MapCollection do
7
+ before do
8
+ browser.goto(WatirSpec.url_for('images.html'))
9
+ end
9
10
 
10
- describe 'with selectors' do
11
- it 'returns the matching elements' do
12
- expect(browser.maps(name: 'triangle_map').to_a).to eq [browser.map(name: 'triangle_map')]
11
+ describe 'with selectors' do
12
+ it 'returns the matching elements' do
13
+ expect(browser.maps(name: 'triangle_map').to_a).to eq [browser.map(name: 'triangle_map')]
14
+ end
13
15
  end
14
- end
15
16
 
16
- describe '#length' do
17
- it 'returns the number of maps' do
18
- expect(browser.maps.length).to eq 2
17
+ describe '#length' do
18
+ it 'returns the number of maps' do
19
+ expect(browser.maps.length).to eq 2
20
+ end
19
21
  end
20
- end
21
22
 
22
- describe '#[]' do
23
- it 'returns the p at the given index' do
24
- expect(browser.maps[0].id).to eq 'triangle_map'
23
+ describe '#[]' do
24
+ it 'returns the p at the given index' do
25
+ expect(browser.maps[0].id).to eq 'triangle_map'
26
+ end
25
27
  end
26
- end
27
28
 
28
- describe '#each' do
29
- it 'iterates through maps correctly' do
30
- count = 0
29
+ describe '#each' do
30
+ it 'iterates through maps correctly' do
31
+ count = 0
31
32
 
32
- browser.maps.each_with_index do |m, index|
33
- expect(m.name).to eq browser.map(index: index).name
34
- expect(m.id).to eq browser.map(index: index).id
35
- count += 1
36
- end
33
+ browser.maps.each_with_index do |m, index|
34
+ expect(m.name).to eq browser.map(index: index).name
35
+ expect(m.id).to eq browser.map(index: index).id
36
+ count += 1
37
+ end
37
38
 
38
- expect(count).to be > 0
39
+ expect(count).to be > 0
40
+ end
39
41
  end
40
42
  end
41
43
  end
@@ -2,24 +2,26 @@
2
2
 
3
3
  require 'watirspec_helper'
4
4
 
5
- describe 'Meta' do
6
- before :each do
7
- browser.goto(WatirSpec.url_for('forms_with_input_elements.html'))
8
- end
9
-
10
- describe '#exist?' do
11
- it 'returns true if the meta tag exists' do
12
- expect(browser.meta(http_equiv: 'Content-Type')).to exist
5
+ module Watir
6
+ describe Meta do
7
+ before do
8
+ browser.goto(WatirSpec.url_for('forms_with_input_elements.html'))
13
9
  end
14
10
 
15
- it 'returns the first meta if given no args' do
16
- expect(browser.meta).to exist
11
+ describe '#exist?' do
12
+ it 'returns true if the meta tag exists' do
13
+ expect(browser.meta(http_equiv: 'Content-Type')).to exist
14
+ end
15
+
16
+ it 'returns the first meta if given no args' do
17
+ expect(browser.meta).to exist
18
+ end
17
19
  end
18
- end
19
20
 
20
- describe 'content' do
21
- it 'returns the content attribute of the tag' do
22
- expect(browser.meta(http_equiv: 'Content-Type').content).to eq 'text/html; charset=utf-8'
21
+ describe 'content' do
22
+ it 'returns the content attribute of the tag' do
23
+ expect(browser.meta(http_equiv: 'Content-Type').content).to eq 'text/html; charset=utf-8'
24
+ end
23
25
  end
24
26
  end
25
27
  end
@@ -2,39 +2,41 @@
2
2
 
3
3
  require 'watirspec_helper'
4
4
 
5
- describe 'Metas' do
6
- before :each do
7
- browser.goto(WatirSpec.url_for('forms_with_input_elements.html'))
8
- end
5
+ module Watir
6
+ describe MetaCollection 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.metas(name: 'description').to_a).to eq [browser.meta(name: 'description')]
11
+ describe 'with selectors' do
12
+ it 'returns the matching elements' do
13
+ expect(browser.metas(name: 'description').to_a).to eq [browser.meta(name: 'description')]
14
+ end
13
15
  end
14
- end
15
16
 
16
- describe '#length' do
17
- it 'returns the number of meta elements' do
18
- expect(browser.metas.length).to eq 2
17
+ describe '#length' do
18
+ it 'returns the number of meta elements' do
19
+ expect(browser.metas.length).to eq 2
20
+ end
19
21
  end
20
- end
21
22
 
22
- describe '#[]' do
23
- it 'returns the meta element at the given index' do
24
- expect(browser.metas[1].name).to eq 'description'
23
+ describe '#[]' do
24
+ it 'returns the meta element at the given index' do
25
+ expect(browser.metas[1].name).to eq 'description'
26
+ end
25
27
  end
26
- end
27
28
 
28
- describe '#each' do
29
- it 'iterates through meta elements correctly' do
30
- count = 0
29
+ describe '#each' do
30
+ it 'iterates through meta elements correctly' do
31
+ count = 0
31
32
 
32
- browser.metas.each_with_index do |m, index|
33
- expect(m.content).to eq browser.meta(index: index).content
34
- count += 1
35
- end
33
+ browser.metas.each_with_index do |m, index|
34
+ expect(m.content).to eq browser.meta(index: index).content
35
+ count += 1
36
+ end
36
37
 
37
- expect(count).to be > 0
38
+ expect(count).to be > 0
39
+ end
38
40
  end
39
41
  end
40
42
  end
@@ -2,71 +2,62 @@
2
2
 
3
3
  require 'watirspec_helper'
4
4
 
5
- describe 'Ol' 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 'ol' exists" do
13
- expect(browser.ol(id: 'favorite_compounds')).to exist
14
- expect(browser.ol(id: /favorite_compounds/)).to exist
15
- expect(browser.ol(index: 0)).to exist
16
- expect(browser.ol(xpath: "//ol[@id='favorite_compounds']")).to exist
17
- end
18
-
19
- it 'returns the first ol if given no args' do
20
- expect(browser.ol).to exist
21
- end
22
-
23
- it "returns false if the 'ol' doesn't exist" do
24
- expect(browser.ol(id: 'no_such_id')).to_not exist
25
- expect(browser.ol(id: /no_such_id/)).to_not exist
26
- expect(browser.ol(text: 'no_such_text')).to_not exist
27
- expect(browser.ol(text: /no_such_text/)).to_not exist
28
- expect(browser.ol(class: 'no_such_class')).to_not exist
29
- expect(browser.ol(class: /no_such_class/)).to_not exist
30
- expect(browser.ol(index: 1337)).to_not exist
31
- expect(browser.ol(xpath: "//ol[@id='no_such_id']")).to_not exist
32
- end
33
-
34
- it "returns false if the 'ol' doesn't exist" do
35
- expect(browser.ol(id: 'no_such_id')).to_not exist
36
- expect(browser.ol(id: /no_such_id/)).to_not exist
37
- expect(browser.ol(text: 'no_such_text')).to_not exist
38
- expect(browser.ol(text: /no_such_text/)).to_not exist
39
- expect(browser.ol(class: 'no_such_class')).to_not exist
40
- expect(browser.ol(class: /no_such_class/)).to_not exist
41
- expect(browser.ol(index: 1337)).to_not exist
42
- expect(browser.ol(xpath: "//ol[@id='no_such_id']")).to_not exist
43
- end
44
-
45
- it "raises TypeError when 'what' argument is invalid" do
46
- expect { browser.ol(id: 3.14).exists? }.to raise_error(TypeError)
47
- end
48
- end
49
-
50
- # Attribute methods
51
- describe '#id' do
52
- it 'returns the id attribute' do
53
- expect(browser.ol(class: 'chemistry').id).to eq 'favorite_compounds'
54
- end
55
-
56
- it "returns an empty string if the element exists and the attribute doesn't" do
57
- expect(browser.ol(index: 1).id).to eq ''
58
- end
59
-
60
- it "raises UnknownObjectException if the ol doesn't exist" do
61
- expect { browser.ol(id: 'no_such_id').id }.to raise_unknown_object_exception
62
- expect { browser.ol(index: 1337).id }.to raise_unknown_object_exception
63
- end
64
- end
65
-
66
- describe '#respond_to?' do
67
- it 'returns true for all attribute methods' do
68
- expect(browser.ol(index: 0)).to respond_to(:class_name)
69
- expect(browser.ol(index: 0)).to respond_to(:id)
5
+ module Watir
6
+ describe OList 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 'ol' exists" do
14
+ expect(browser.ol(id: 'favorite_compounds')).to exist
15
+ expect(browser.ol(id: /favorite_compounds/)).to exist
16
+ expect(browser.ol(index: 0)).to exist
17
+ expect(browser.ol(xpath: "//ol[@id='favorite_compounds']")).to exist
18
+ end
19
+
20
+ it 'returns the first ol if given no args' do
21
+ expect(browser.ol).to exist
22
+ end
23
+
24
+ it "returns false if the 'ol' doesn't exist" do
25
+ expect(browser.ol(id: 'no_such_id')).not_to exist
26
+ expect(browser.ol(id: /no_such_id/)).not_to exist
27
+ expect(browser.ol(text: 'no_such_text')).not_to exist
28
+ expect(browser.ol(text: /no_such_text/)).not_to exist
29
+ expect(browser.ol(class: 'no_such_class')).not_to exist
30
+ expect(browser.ol(class: /no_such_class/)).not_to exist
31
+ expect(browser.ol(index: 1337)).not_to exist
32
+ expect(browser.ol(xpath: "//ol[@id='no_such_id']")).not_to exist
33
+ end
34
+
35
+ it "raises TypeError when 'what' argument is invalid" do
36
+ expect { browser.ol(id: 3.14).exists? }.to raise_error(TypeError)
37
+ end
38
+ end
39
+
40
+ # Attribute methods
41
+ describe '#id' do
42
+ it 'returns the id attribute' do
43
+ expect(browser.ol(class: 'chemistry').id).to eq 'favorite_compounds'
44
+ end
45
+
46
+ it "returns an empty string if the element exists and the attribute doesn't" do
47
+ expect(browser.ol(index: 1).id).to eq ''
48
+ end
49
+
50
+ it "raises UnknownObjectException if the ol doesn't exist" do
51
+ expect { browser.ol(id: 'no_such_id').id }.to raise_unknown_object_exception
52
+ expect { browser.ol(index: 1337).id }.to raise_unknown_object_exception
53
+ end
54
+ end
55
+
56
+ describe '#respond_to?' do
57
+ it 'returns true for all attribute methods' do
58
+ expect(browser.ol(index: 0)).to respond_to(:class_name)
59
+ expect(browser.ol(index: 0)).to respond_to(:id)
60
+ end
70
61
  end
71
62
  end
72
63
  end
@@ -2,39 +2,41 @@
2
2
 
3
3
  require 'watirspec_helper'
4
4
 
5
- describe 'Ols' do
6
- before :each do
7
- browser.goto(WatirSpec.url_for('non_control_elements.html'))
8
- end
5
+ module Watir
6
+ describe OListCollection 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.ols(class: 'chemistry').to_a).to eq [browser.ol(class: 'chemistry')]
11
+ describe 'with selectors' do
12
+ it 'returns the matching elements' do
13
+ expect(browser.ols(class: 'chemistry').to_a).to eq [browser.ol(class: 'chemistry')]
14
+ end
13
15
  end
14
- end
15
16
 
16
- describe '#length' do
17
- it 'returns the number of ols' do
18
- expect(browser.ols.length).to eq 2
17
+ describe '#length' do
18
+ it 'returns the number of ols' do
19
+ expect(browser.ols.length).to eq 2
20
+ end
19
21
  end
20
- end
21
22
 
22
- describe '#[]' do
23
- it 'returns the ol at the given index' do
24
- expect(browser.ols[0].id).to eq 'favorite_compounds'
23
+ describe '#[]' do
24
+ it 'returns the ol at the given index' do
25
+ expect(browser.ols[0].id).to eq 'favorite_compounds'
26
+ end
25
27
  end
26
- end
27
28
 
28
- describe '#each' do
29
- it 'iterates through ols correctly' do
30
- count = 0
29
+ describe '#each' do
30
+ it 'iterates through ols correctly' do
31
+ count = 0
31
32
 
32
- browser.ols.each_with_index do |ol, index|
33
- expect(ol.id).to eq browser.ol(index: index).id
34
- count += 1
35
- end
33
+ browser.ols.each_with_index do |ol, index|
34
+ expect(ol.id).to eq browser.ol(index: index).id
35
+ count += 1
36
+ end
36
37
 
37
- expect(count).to be > 0
38
+ expect(count).to be > 0
39
+ end
38
40
  end
39
41
  end
40
42
  end