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,103 +2,105 @@
2
2
 
3
3
  require 'watirspec_helper'
4
4
 
5
- describe 'Hidden' do
6
- before :each do
7
- browser.goto(WatirSpec.url_for('forms_with_input_elements.html'))
8
- end
9
-
10
- # Exist method
11
- describe '#exists?' do
12
- it 'returns true if the element exists' do
13
- expect(browser.hidden(id: 'new_user_interests_dolls')).to exist
14
- expect(browser.hidden(id: /new_user_interests_dolls/)).to exist
15
- expect(browser.hidden(name: 'new_user_interests')).to exist
16
- expect(browser.hidden(name: /new_user_interests/)).to exist
17
- expect(browser.hidden(value: 'dolls')).to exist
18
- expect(browser.hidden(value: /dolls/)).to exist
19
- expect(browser.hidden(class: 'fun')).to exist
20
- expect(browser.hidden(class: /fun/)).to exist
21
- expect(browser.hidden(index: 0)).to exist
22
- expect(browser.hidden(xpath: "//input[@id='new_user_interests_dolls']")).to exist
23
- end
24
-
25
- it 'returns the first hidden if given no args' do
26
- expect(browser.hidden).to exist
5
+ module Watir
6
+ describe Hidden do
7
+ before do
8
+ browser.goto(WatirSpec.url_for('forms_with_input_elements.html'))
27
9
  end
28
10
 
29
- it 'returns false if the element does not exist' do
30
- expect(browser.hidden(id: 'no_such_id')).to_not exist
31
- expect(browser.hidden(id: /no_such_id/)).to_not exist
32
- expect(browser.hidden(name: 'no_such_name')).to_not exist
33
- expect(browser.hidden(name: /no_such_name/)).to_not exist
34
- expect(browser.hidden(value: 'no_such_value')).to_not exist
35
- expect(browser.hidden(value: /no_such_value/)).to_not exist
36
- expect(browser.hidden(text: 'no_such_text')).to_not exist
37
- expect(browser.hidden(text: /no_such_text/)).to_not exist
38
- expect(browser.hidden(class: 'no_such_class')).to_not exist
39
- expect(browser.hidden(class: /no_such_class/)).to_not exist
40
- expect(browser.hidden(index: 1337)).to_not exist
41
- expect(browser.hidden(xpath: "//input[@id='no_such_id']")).to_not exist
11
+ # Exist method
12
+ describe '#exists?' do
13
+ it 'returns true if the element exists' do
14
+ expect(browser.hidden(id: 'new_user_interests_dolls')).to exist
15
+ expect(browser.hidden(id: /new_user_interests_dolls/)).to exist
16
+ expect(browser.hidden(name: 'new_user_interests')).to exist
17
+ expect(browser.hidden(name: /new_user_interests/)).to exist
18
+ expect(browser.hidden(value: 'dolls')).to exist
19
+ expect(browser.hidden(value: /dolls/)).to exist
20
+ expect(browser.hidden(class: 'fun')).to exist
21
+ expect(browser.hidden(class: /fun/)).to exist
22
+ expect(browser.hidden(index: 0)).to exist
23
+ expect(browser.hidden(xpath: "//input[@id='new_user_interests_dolls']")).to exist
24
+ end
25
+
26
+ it 'returns the first hidden if given no args' do
27
+ expect(browser.hidden).to exist
28
+ end
29
+
30
+ it 'returns false if the element does not exist' do
31
+ expect(browser.hidden(id: 'no_such_id')).not_to exist
32
+ expect(browser.hidden(id: /no_such_id/)).not_to exist
33
+ expect(browser.hidden(name: 'no_such_name')).not_to exist
34
+ expect(browser.hidden(name: /no_such_name/)).not_to exist
35
+ expect(browser.hidden(value: 'no_such_value')).not_to exist
36
+ expect(browser.hidden(value: /no_such_value/)).not_to exist
37
+ expect(browser.hidden(text: 'no_such_text')).not_to exist
38
+ expect(browser.hidden(text: /no_such_text/)).not_to exist
39
+ expect(browser.hidden(class: 'no_such_class')).not_to exist
40
+ expect(browser.hidden(class: /no_such_class/)).not_to exist
41
+ expect(browser.hidden(index: 1337)).not_to exist
42
+ expect(browser.hidden(xpath: "//input[@id='no_such_id']")).not_to exist
43
+ end
44
+
45
+ it "raises TypeError when 'what' argument is invalid" do
46
+ expect { browser.hidden(id: 3.14).exists? }.to raise_error(TypeError)
47
+ end
42
48
  end
43
49
 
44
- it "raises TypeError when 'what' argument is invalid" do
45
- expect { browser.hidden(id: 3.14).exists? }.to raise_error(TypeError)
46
- end
47
- end
48
-
49
- # Attribute methods
50
- describe '#id' do
51
- it 'returns the id attribute if the text field exists' do
52
- expect(browser.hidden(index: 1).id).to eq 'new_user_interests_dolls'
53
- end
50
+ # Attribute methods
51
+ describe '#id' do
52
+ it 'returns the id attribute if the text field exists' do
53
+ expect(browser.hidden(index: 1).id).to eq 'new_user_interests_dolls'
54
+ end
54
55
 
55
- it "raises UnknownObjectException if the text field doesn't exist" do
56
- expect { browser.hidden(index: 1337).id }.to raise_unknown_object_exception
56
+ it "raises UnknownObjectException if the text field doesn't exist" do
57
+ expect { browser.hidden(index: 1337).id }.to raise_unknown_object_exception
58
+ end
57
59
  end
58
- end
59
60
 
60
- describe '#name' do
61
- it 'returns the name attribute if the text field exists' do
62
- expect(browser.hidden(index: 1).name).to eq 'new_user_interests'
63
- end
61
+ describe '#name' do
62
+ it 'returns the name attribute if the text field exists' do
63
+ expect(browser.hidden(index: 1).name).to eq 'new_user_interests'
64
+ end
64
65
 
65
- it "raises UnknownObjectException if the text field doesn't exist" do
66
- expect { browser.hidden(index: 1337).name }.to raise_unknown_object_exception
66
+ it "raises UnknownObjectException if the text field doesn't exist" do
67
+ expect { browser.hidden(index: 1337).name }.to raise_unknown_object_exception
68
+ end
67
69
  end
68
- end
69
70
 
70
- describe '#type' do
71
- it 'returns the type attribute if the text field exists' do
72
- expect(browser.hidden(index: 1).type).to eq 'hidden'
73
- end
71
+ describe '#type' do
72
+ it 'returns the type attribute if the text field exists' do
73
+ expect(browser.hidden(index: 1).type).to eq 'hidden'
74
+ end
74
75
 
75
- it "raises UnknownObjectException if the text field doesn't exist" do
76
- expect { browser.hidden(index: 1337).type }.to raise_unknown_object_exception
76
+ it "raises UnknownObjectException if the text field doesn't exist" do
77
+ expect { browser.hidden(index: 1337).type }.to raise_unknown_object_exception
78
+ end
77
79
  end
78
- end
79
80
 
80
- describe '#value' do
81
- it 'returns the value attribute if the text field exists' do
82
- expect(browser.hidden(index: 1).value).to eq 'dolls'
83
- end
81
+ describe '#value' do
82
+ it 'returns the value attribute if the text field exists' do
83
+ expect(browser.hidden(index: 1).value).to eq 'dolls'
84
+ end
84
85
 
85
- it "raises UnknownObjectException if the text field doesn't exist" do
86
- expect { browser.hidden(index: 1337).value }.to raise_unknown_object_exception
86
+ it "raises UnknownObjectException if the text field doesn't exist" do
87
+ expect { browser.hidden(index: 1337).value }.to raise_unknown_object_exception
88
+ end
87
89
  end
88
- end
89
90
 
90
- describe '#click' do
91
- it 'raises ObjectDisabledException when attempting to click' do
92
- expect { browser.hidden(index: 1337).click }.to raise_object_disabled_exception
91
+ describe '#click' do
92
+ it 'raises ObjectDisabledException when attempting to click' do
93
+ expect { browser.hidden(index: 1337).click }.to raise_object_disabled_exception
94
+ end
93
95
  end
94
- end
95
96
 
96
- describe '#respond_to?' do
97
- it 'returns true for all attribute methods' do
98
- expect(browser.hidden(index: 1)).to respond_to(:id)
99
- expect(browser.hidden(index: 1)).to respond_to(:name)
100
- expect(browser.hidden(index: 1)).to respond_to(:type)
101
- expect(browser.hidden(index: 1)).to respond_to(:value)
97
+ describe '#respond_to?' do
98
+ it 'returns true for all attribute methods' do
99
+ expect(browser.hidden(index: 1)).to respond_to(:id)
100
+ expect(browser.hidden(index: 1)).to respond_to(:name)
101
+ expect(browser.hidden(index: 1)).to respond_to(:type)
102
+ expect(browser.hidden(index: 1)).to respond_to(:value)
103
+ end
102
104
  end
103
105
  end
104
106
  end
@@ -2,42 +2,44 @@
2
2
 
3
3
  require 'watirspec_helper'
4
4
 
5
- describe 'Hiddens' do
6
- before :each do
7
- browser.goto(WatirSpec.url_for('forms_with_input_elements.html'))
8
- end
5
+ module Watir
6
+ describe HiddenCollection 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.hiddens(value: 'dolls').to_a).to eq [browser.hidden(value: 'dolls')]
11
+ describe 'with selectors' do
12
+ it 'returns the matching elements' do
13
+ expect(browser.hiddens(value: 'dolls').to_a).to eq [browser.hidden(value: 'dolls')]
14
+ end
13
15
  end
14
- end
15
16
 
16
- describe '#length' do
17
- it 'returns the number of hiddens' do
18
- expect(browser.hiddens.length).to eq 2
17
+ describe '#length' do
18
+ it 'returns the number of hiddens' do
19
+ expect(browser.hiddens.length).to eq 2
20
+ end
19
21
  end
20
- end
21
22
 
22
- describe '#[]' do
23
- it 'returns the Hidden at the given index' do
24
- expect(browser.hiddens[1].id).to eq 'new_user_interests_dolls'
23
+ describe '#[]' do
24
+ it 'returns the Hidden at the given index' do
25
+ expect(browser.hiddens[1].id).to eq 'new_user_interests_dolls'
26
+ end
25
27
  end
26
- end
27
28
 
28
- describe '#each' do
29
- it 'iterates through hiddens correctly' do
30
- count = 0
29
+ describe '#each' do
30
+ it 'iterates through hiddens correctly' do
31
+ count = 0
31
32
 
32
- browser.hiddens.each_with_index do |h, index|
33
- expect(h.name).to eq browser.hidden(index: index).name
34
- expect(h.id).to eq browser.hidden(index: index).id
35
- expect(h.value).to eq browser.hidden(index: index).value
33
+ browser.hiddens.each_with_index do |h, index|
34
+ expect(h.name).to eq browser.hidden(index: index).name
35
+ expect(h.id).to eq browser.hidden(index: index).id
36
+ expect(h.value).to eq browser.hidden(index: index).value
36
37
 
37
- count += 1
38
- end
38
+ count += 1
39
+ end
39
40
 
40
- expect(count).to be > 0
41
+ expect(count).to be > 0
42
+ end
41
43
  end
42
44
  end
43
45
  end
@@ -2,77 +2,79 @@
2
2
 
3
3
  require 'watirspec_helper'
4
4
 
5
- describe ['H1', 'H2', 'H3', 'H4', 'H5', 'H6'] 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 element exists' do
13
- expect(browser.h1(id: 'header1')).to exist
14
- expect(browser.h2(id: /header2/)).to exist
15
- expect(browser.h3(text: 'Header 3')).to exist
16
- expect(browser.h4(text: /Header 4/)).to exist
17
- expect(browser.h5(index: 0)).to exist
18
- expect(browser.h6(index: 0)).to exist
19
- expect(browser.h1(xpath: "//h1[@id='first_header']")).to exist
5
+ module Watir
6
+ describe Heading do
7
+ before do
8
+ browser.goto(WatirSpec.url_for('non_control_elements.html'))
20
9
  end
21
10
 
22
- it 'returns the first h1 if given no args' do
23
- expect(browser.h1).to exist
24
- end
11
+ # Exists method
12
+ describe '#exist?' do
13
+ it 'returns true if the element exists' do
14
+ expect(browser.h1(id: 'header1')).to exist
15
+ expect(browser.h2(id: /header2/)).to exist
16
+ expect(browser.h3(text: 'Header 3')).to exist
17
+ expect(browser.h4(text: /Header 4/)).to exist
18
+ expect(browser.h5(index: 0)).to exist
19
+ expect(browser.h6(index: 0)).to exist
20
+ expect(browser.h1(xpath: "//h1[@id='first_header']")).to exist
21
+ end
25
22
 
26
- it 'returns true if the element exists' do
27
- expect(browser.h1(id: 'no_such_id')).to_not exist
28
- expect(browser.h1(id: /no_such_id/)).to_not exist
29
- expect(browser.h1(text: 'no_such_text')).to_not exist
30
- expect(browser.h1(text: /no_such_text 1/)).to_not exist
31
- expect(browser.h1(index: 1337)).to_not exist
32
- expect(browser.h1(xpath: "//p[@id='no_such_id']")).to_not exist
33
- end
23
+ it 'returns the first h1 if given no args' do
24
+ expect(browser.h1).to exist
25
+ end
34
26
 
35
- it "raises TypeError when 'what' argument is invalid" do
36
- expect { browser.h1(id: 3.14).exists? }.to raise_error(TypeError)
37
- end
38
- end
27
+ it 'returns false if the element does not exist' do
28
+ expect(browser.h1(id: 'no_such_id')).not_to exist
29
+ expect(browser.h1(id: /no_such_id/)).not_to exist
30
+ expect(browser.h1(text: 'no_such_text')).not_to exist
31
+ expect(browser.h1(text: /no_such_text 1/)).not_to exist
32
+ expect(browser.h1(index: 1337)).not_to exist
33
+ expect(browser.h1(xpath: "//p[@id='no_such_id']")).not_to exist
34
+ end
39
35
 
40
- # Attribute methods
41
- describe '#id' do
42
- it 'returns the id attribute' do
43
- expect(browser.h1(index: 0).id).to eq 'first_header'
36
+ it "raises TypeError when 'what' argument is invalid" do
37
+ expect { browser.h1(id: 3.14).exists? }.to raise_error(TypeError)
38
+ end
44
39
  end
45
40
 
46
- it "returns an empty string if the element exists and the attribute doesn't" do
47
- expect(browser.h3(index: 0).id).to eq ''
48
- end
41
+ # Attribute methods
42
+ describe '#id' do
43
+ it 'returns the id attribute' do
44
+ expect(browser.h1(index: 0).id).to eq 'first_header'
45
+ end
49
46
 
50
- it "raises UnknownObjectException if the p doesn't exist" do
51
- expect { browser.h1(id: 'no_such_id').id }.to raise_unknown_object_exception
52
- expect { browser.h1(index: 1337).id }.to raise_unknown_object_exception
53
- end
54
- end
47
+ it "returns an empty string if the element exists and the attribute doesn't" do
48
+ expect(browser.h3(index: 0).id).to eq ''
49
+ end
55
50
 
56
- describe '#text' do
57
- it 'returns the text of the element' do
58
- expect(browser.h1(index: 0).text).to eq 'Header 1'
51
+ it "raises UnknownObjectException if the p doesn't exist" do
52
+ expect { browser.h1(id: 'no_such_id').id }.to raise_unknown_object_exception
53
+ expect { browser.h1(index: 1337).id }.to raise_unknown_object_exception
54
+ end
59
55
  end
60
56
 
61
- it "returns an empty string if the element doesn't contain any text" do
62
- expect(browser.h6(id: 'empty_header').text).to eq ''
63
- end
57
+ describe '#text' do
58
+ it 'returns the text of the element' do
59
+ expect(browser.h1(index: 0).text).to eq 'Header 1'
60
+ end
61
+
62
+ it "returns an empty string if the element doesn't contain any text" do
63
+ expect(browser.h6(id: 'empty_header').text).to eq ''
64
+ end
64
65
 
65
- it "raises UnknownObjectException if the p doesn't exist" do
66
- expect { browser.h1(id: 'no_such_id').text }.to raise_unknown_object_exception
67
- expect { browser.h1(xpath: "//h1[@id='no_such_id']").text }.to raise_unknown_object_exception
66
+ it "raises UnknownObjectException if the p doesn't exist" do
67
+ expect { browser.h1(id: 'no_such_id').text }.to raise_unknown_object_exception
68
+ expect { browser.h1(xpath: "//h1[@id='no_such_id']").text }.to raise_unknown_object_exception
69
+ end
68
70
  end
69
- end
70
71
 
71
- describe '#respond_to?' do
72
- it 'returns true for all attribute methods' do
73
- expect(browser.h1(index: 0)).to respond_to(:class_name)
74
- expect(browser.h1(index: 0)).to respond_to(:id)
75
- expect(browser.h1(index: 0)).to respond_to(:text)
72
+ describe '#respond_to?' do
73
+ it 'returns true for all attribute methods' do
74
+ expect(browser.h1(index: 0)).to respond_to(:class_name)
75
+ expect(browser.h1(index: 0)).to respond_to(:id)
76
+ expect(browser.h1(index: 0)).to respond_to(:text)
77
+ end
76
78
  end
77
79
  end
78
80
  end
@@ -2,39 +2,41 @@
2
2
 
3
3
  require 'watirspec_helper'
4
4
 
5
- describe ['H1s', 'H2s', 'H3s', 'H4s', 'H5s', 'H6s'] do
6
- before :each do
7
- browser.goto(WatirSpec.url_for('non_control_elements.html'))
8
- end
5
+ module Watir
6
+ describe HeadingCollection 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.h1s(class: 'primary').to_a).to eq [browser.h1(class: 'primary')]
11
+ describe 'with selectors' do
12
+ it 'returns the matching elements' do
13
+ expect(browser.h1s(class: 'primary').to_a).to eq [browser.h1(class: 'primary')]
14
+ end
13
15
  end
14
- end
15
16
 
16
- describe '#length' do
17
- it 'returns the number of h1s' do
18
- expect(browser.h2s.length).to eq 9
17
+ describe '#length' do
18
+ it 'returns the number of h1s' do
19
+ expect(browser.h2s.length).to eq 9
20
+ end
19
21
  end
20
- end
21
22
 
22
- describe '#[]' do
23
- it 'returns the h1 at the given index' do
24
- expect(browser.h1s[0].id).to eq 'first_header'
23
+ describe '#[]' do
24
+ it 'returns the h1 at the given index' do
25
+ expect(browser.h1s[0].id).to eq 'first_header'
26
+ end
25
27
  end
26
- end
27
28
 
28
- describe '#each' do
29
- it 'iterates through header collections correctly' do
30
- lengths = (1..6).collect do |i|
31
- collection = browser.send(:"h#{i}s")
32
- collection.each_with_index do |h, index|
33
- expect(h.id).to eq browser.send(:"h#{i}", index: index).id
29
+ describe '#each' do
30
+ it 'iterates through header collections correctly' do
31
+ lengths = (1..6).collect do |i|
32
+ collection = browser.send(:"h#{i}s")
33
+ collection.each_with_index do |h, index|
34
+ expect(h.id).to eq browser.send(:"h#{i}", index: index).id
35
+ end
36
+ collection.length
34
37
  end
35
- collection.length
38
+ expect(lengths).to eq [2, 9, 2, 1, 1, 2]
36
39
  end
37
- expect(lengths).to eq [2, 9, 2, 1, 1, 2]
38
40
  end
39
41
  end
40
42
  end