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,114 +2,116 @@
2
2
 
3
3
  require 'watirspec_helper'
4
4
 
5
- describe 'Dl' do
6
- before :each do
7
- browser.goto(WatirSpec.url_for('definition_lists.html'))
8
- end
9
-
10
- # Exists method
11
- describe '#exists?' do
12
- it 'returns true if the element exists' do
13
- expect(browser.dl(id: 'experience-list')).to exist
14
- expect(browser.dl(class: 'list')).to exist
15
- expect(browser.dl(xpath: "//dl[@id='experience-list']")).to exist
16
- expect(browser.dl(index: 0)).to exist
17
- end
18
-
19
- it 'returns the first dl if given no args' do
20
- expect(browser.dl).to exist
21
- end
22
-
23
- it 'returns false if the element does not exist' do
24
- expect(browser.dl(id: 'no_such_id')).to_not exist
25
- end
26
-
27
- it "raises TypeError when 'what' argument is invalid" do
28
- expect { browser.dl(id: 3.14).exists? }.to raise_error(TypeError)
29
- end
30
- end
31
-
32
- # Attribute methods
33
- describe '#id' do
34
- it 'returns the id attribute if the element exists' do
35
- expect(browser.dl(class: 'list').id).to eq 'experience-list'
36
- end
37
-
38
- it "returns an empty string if the element exists, but the attribute doesn't" do
39
- expect(browser.dl(class: 'personalia').id).to eq ''
40
- end
41
-
42
- it 'raises UnknownObjectException if the element does not exist' do
43
- expect { browser.dl(id: 'no_such_id').id }.to raise_unknown_object_exception
44
- expect { browser.dl(title: 'no_such_id').id }.to raise_unknown_object_exception
45
- expect { browser.dl(index: 1337).id }.to raise_unknown_object_exception
46
- end
47
- end
48
-
49
- describe '#title' do
50
- it 'returns the id attribute if the element exists' do
51
- expect(browser.dl(class: 'list').title).to eq 'experience'
52
- end
53
- end
54
-
55
- describe '#text' do
56
- it 'returns the text of the element' do
57
- expect(browser.dl(id: 'experience-list').text).to include('11 years')
58
- end
59
-
60
- it 'returns an empty string if the element exists but contains no text',
61
- except: {browser: :safari, reason: 'Safari does not strip text'} do
62
- expect(browser.dl(id: 'noop').text).to eq ''
63
- end
64
-
65
- it 'raises UnknownObjectException if the element does not exist' do
66
- expect { browser.dl(id: 'no_such_id').text }.to raise_unknown_object_exception
67
- expect { browser.dl(title: 'no_such_title').text }.to raise_unknown_object_exception
68
- expect { browser.dl(index: 1337).text }.to raise_unknown_object_exception
69
- expect { browser.dl(xpath: "//dl[@id='no_such_id']").text }.to raise_unknown_object_exception
70
- end
71
- end
72
-
73
- describe '#respond_to?' do
74
- it 'returns true for all attribute methods' do
75
- expect(browser.dl(index: 0)).to respond_to(:id)
76
- expect(browser.dl(index: 0)).to respond_to(:class_name)
77
- expect(browser.dl(index: 0)).to respond_to(:style)
78
- expect(browser.dl(index: 0)).to respond_to(:text)
79
- expect(browser.dl(index: 0)).to respond_to(:title)
80
- end
81
- end
82
-
83
- # Manipulation methods
84
- describe '#click' do
85
- it 'fires events when clicked' do
86
- expect(browser.dt(id: 'name').text).to_not eq 'changed!'
87
- browser.dt(id: 'name').click
88
- expect(browser.dt(id: 'name').text).to eq 'changed!'
89
- end
90
-
91
- it 'raises UnknownObjectException if the element does not exist' do
92
- expect { browser.dl(id: 'no_such_id').click }.to raise_unknown_object_exception
93
- expect { browser.dl(title: 'no_such_title').click }.to raise_unknown_object_exception
94
- expect { browser.dl(index: 1337).click }.to raise_unknown_object_exception
95
- expect { browser.dl(xpath: "//dl[@id='no_such_id']").click }.to raise_unknown_object_exception
96
- end
97
- end
98
-
99
- describe '#html' do
100
- it 'returns the HTML of the element' do
101
- html = browser.dl(id: 'experience-list').html.downcase
102
- expect(html).to match(/<dt class=?"current-industry?">/)
103
- expect(html).to_not include('</body>')
104
- end
105
- end
106
-
107
- describe '#to_hash' do
108
- it 'converts the dl to a Hash' do
109
- expect(browser.dl(id: 'experience-list').to_hash).to eq({'Experience' => '11 years',
110
- 'Education' => 'Master',
111
- 'Current industry' => 'Architecture',
112
- 'Previous industry experience' => 'Architecture'})
5
+ module Watir
6
+ describe DList do
7
+ before do
8
+ browser.goto(WatirSpec.url_for('definition_lists.html'))
9
+ end
10
+
11
+ # Exists method
12
+ describe '#exists?' do
13
+ it 'returns true if the element exists' do
14
+ expect(browser.dl(id: 'experience-list')).to exist
15
+ expect(browser.dl(class: 'list')).to exist
16
+ expect(browser.dl(xpath: "//dl[@id='experience-list']")).to exist
17
+ expect(browser.dl(index: 0)).to exist
18
+ end
19
+
20
+ it 'returns the first dl if given no args' do
21
+ expect(browser.dl).to exist
22
+ end
23
+
24
+ it 'returns false if the element does not exist' do
25
+ expect(browser.dl(id: 'no_such_id')).not_to exist
26
+ end
27
+
28
+ it "raises TypeError when 'what' argument is invalid" do
29
+ expect { browser.dl(id: 3.14).exists? }.to raise_error(TypeError)
30
+ end
31
+ end
32
+
33
+ # Attribute methods
34
+ describe '#id' do
35
+ it 'returns the id attribute if the element exists' do
36
+ expect(browser.dl(class: 'list').id).to eq 'experience-list'
37
+ end
38
+
39
+ it "returns an empty string if the element exists, but the attribute doesn't" do
40
+ expect(browser.dl(class: 'personalia').id).to eq ''
41
+ end
42
+
43
+ it 'raises UnknownObjectException if the element does not exist' do
44
+ expect { browser.dl(id: 'no_such_id').id }.to raise_unknown_object_exception
45
+ expect { browser.dl(title: 'no_such_id').id }.to raise_unknown_object_exception
46
+ expect { browser.dl(index: 1337).id }.to raise_unknown_object_exception
47
+ end
48
+ end
49
+
50
+ describe '#title' do
51
+ it 'returns the id attribute if the element exists' do
52
+ expect(browser.dl(class: 'list').title).to eq 'experience'
53
+ end
54
+ end
55
+
56
+ describe '#text' do
57
+ it 'returns the text of the element' do
58
+ expect(browser.dl(id: 'experience-list').text).to include('11 years')
59
+ end
60
+
61
+ it 'returns an empty string if the element exists but contains no text',
62
+ except: {browser: :safari, reason: 'Safari does not strip text'} do
63
+ expect(browser.dl(id: 'noop').text).to eq ''
64
+ end
65
+
66
+ it 'raises UnknownObjectException if the element does not exist' do
67
+ expect { browser.dl(id: 'no_such_id').text }.to raise_unknown_object_exception
68
+ expect { browser.dl(title: 'no_such_title').text }.to raise_unknown_object_exception
69
+ expect { browser.dl(index: 1337).text }.to raise_unknown_object_exception
70
+ expect { browser.dl(xpath: "//dl[@id='no_such_id']").text }.to raise_unknown_object_exception
71
+ end
72
+ end
73
+
74
+ describe '#respond_to?' do
75
+ it 'returns true for all attribute methods' do
76
+ expect(browser.dl(index: 0)).to respond_to(:id)
77
+ expect(browser.dl(index: 0)).to respond_to(:class_name)
78
+ expect(browser.dl(index: 0)).to respond_to(:style)
79
+ expect(browser.dl(index: 0)).to respond_to(:text)
80
+ expect(browser.dl(index: 0)).to respond_to(:title)
81
+ end
82
+ end
83
+
84
+ # Manipulation methods
85
+ describe '#click' do
86
+ it 'fires events when clicked' do
87
+ expect(browser.dt(id: 'name').text).not_to eq 'changed!'
88
+ browser.dt(id: 'name').click
89
+ expect(browser.dt(id: 'name').text).to eq 'changed!'
90
+ end
91
+
92
+ it 'raises UnknownObjectException if the element does not exist' do
93
+ expect { browser.dl(id: 'no_such_id').click }.to raise_unknown_object_exception
94
+ expect { browser.dl(title: 'no_such_title').click }.to raise_unknown_object_exception
95
+ expect { browser.dl(index: 1337).click }.to raise_unknown_object_exception
96
+ expect { browser.dl(xpath: "//dl[@id='no_such_id']").click }.to raise_unknown_object_exception
97
+ end
98
+ end
99
+
100
+ describe '#html' do
101
+ it 'returns the HTML of the element' do
102
+ html = browser.dl(id: 'experience-list').html.downcase
103
+ expect(html).to match(/<dt class=?"current-industry?">/)
104
+ expect(html).not_to include('</body>')
105
+ end
106
+ end
107
+
108
+ describe '#to_hash' do
109
+ it 'converts the dl to a Hash' do
110
+ expect(browser.dl(id: 'experience-list').to_hash).to eq({'Experience' => '11 years',
111
+ 'Education' => 'Master',
112
+ 'Current industry' => 'Architecture',
113
+ 'Previous industry experience' => 'Architecture'})
114
+ end
113
115
  end
114
116
  end
115
117
  end
@@ -2,42 +2,44 @@
2
2
 
3
3
  require 'watirspec_helper'
4
4
 
5
- describe 'Dls' do
6
- before :each do
7
- browser.goto(WatirSpec.url_for('definition_lists.html'))
8
- end
5
+ module Watir
6
+ describe DListCollection do
7
+ before do
8
+ browser.goto(WatirSpec.url_for('definition_lists.html'))
9
+ end
9
10
 
10
- describe 'with selectors' do
11
- it 'returns the matching elements' do
12
- expect(browser.dls(title: 'experience').to_a).to eq [browser.dl(title: 'experience')]
11
+ describe 'with selectors' do
12
+ it 'returns the matching elements' do
13
+ expect(browser.dls(title: 'experience').to_a).to eq [browser.dl(title: 'experience')]
14
+ end
13
15
  end
14
- end
15
16
 
16
- describe '#length' do
17
- it 'returns the number of dls' do
18
- expect(browser.dls.length).to eq 3
17
+ describe '#length' do
18
+ it 'returns the number of dls' do
19
+ expect(browser.dls.length).to eq 3
20
+ end
19
21
  end
20
- end
21
22
 
22
- describe '#[]' do
23
- it 'returns the dl at the given index' do
24
- expect(browser.dls[0].id).to eq 'experience-list'
23
+ describe '#[]' do
24
+ it 'returns the dl at the given index' do
25
+ expect(browser.dls[0].id).to eq 'experience-list'
26
+ end
25
27
  end
26
- end
27
28
 
28
- describe '#each' do
29
- it 'iterates through dls correctly' do
30
- count = 0
29
+ describe '#each' do
30
+ it 'iterates through dls correctly' do
31
+ count = 0
31
32
 
32
- browser.dls.each_with_index do |d, index|
33
- expect(d.text).to eq browser.dl(index: index).text
34
- expect(d.id).to eq browser.dl(index: index).id
35
- expect(d.class_name).to eq browser.dl(index: index).class_name
33
+ browser.dls.each_with_index do |d, index|
34
+ expect(d.text).to eq browser.dl(index: index).text
35
+ expect(d.id).to eq browser.dl(index: index).id
36
+ expect(d.class_name).to eq browser.dl(index: index).class_name
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,104 +2,106 @@
2
2
 
3
3
  require 'watirspec_helper'
4
4
 
5
- describe 'Dt' do
6
- before :each do
7
- browser.goto(WatirSpec.url_for('definition_lists.html'))
8
- end
9
-
10
- # Exists method
11
- describe '#exists?' do
12
- it 'returns true if the element exists' do
13
- expect(browser.dt(id: 'experience')).to exist
14
- expect(browser.dt(class: 'current-industry')).to exist
15
- expect(browser.dt(xpath: "//dt[@id='experience']")).to exist
16
- expect(browser.dt(index: 0)).to exist
17
- end
18
-
19
- it 'returns the first dt if given no args' do
20
- expect(browser.dt).to exist
21
- end
22
-
23
- it 'returns false if the element does not exist' do
24
- expect(browser.dt(id: 'no_such_id')).to_not exist
25
- end
26
-
27
- it "raises TypeError when 'what' argument is invalid" do
28
- expect { browser.dt(id: 3.14).exists? }.to raise_error(TypeError)
29
- end
30
- end
31
-
32
- # Attribute methods
33
- describe '#id' do
34
- it 'returns the id attribute if the element exists' do
35
- expect(browser.dt(class: 'industry').id).to eq 'experience'
5
+ module Watir
6
+ describe 'Dt' do
7
+ before do
8
+ browser.goto(WatirSpec.url_for('definition_lists.html'))
36
9
  end
37
10
 
38
- it "returns an empty string if the element exists, but the attribute doesn't" do
39
- expect(browser.dt(class: 'current-industry').id).to eq ''
11
+ # Exists method
12
+ describe '#exists?' do
13
+ it 'returns true if the element exists' do
14
+ expect(browser.dt(id: 'experience')).to exist
15
+ expect(browser.dt(class: 'current-industry')).to exist
16
+ expect(browser.dt(xpath: "//dt[@id='experience']")).to exist
17
+ expect(browser.dt(index: 0)).to exist
18
+ end
19
+
20
+ it 'returns the first dt if given no args' do
21
+ expect(browser.dt).to exist
22
+ end
23
+
24
+ it 'returns false if the element does not exist' do
25
+ expect(browser.dt(id: 'no_such_id')).not_to exist
26
+ end
27
+
28
+ it "raises TypeError when 'what' argument is invalid" do
29
+ expect { browser.dt(id: 3.14).exists? }.to raise_error(TypeError)
30
+ end
40
31
  end
41
32
 
42
- it 'raises UnknownObjectException if the element does not exist' do
43
- expect { browser.dt(id: 'no_such_id').id }.to raise_unknown_object_exception
44
- expect { browser.dt(title: 'no_such_id').id }.to raise_unknown_object_exception
45
- expect { browser.dt(index: 1337).id }.to raise_unknown_object_exception
33
+ # Attribute methods
34
+ describe '#id' do
35
+ it 'returns the id attribute if the element exists' do
36
+ expect(browser.dt(class: 'industry').id).to eq 'experience'
37
+ end
38
+
39
+ it "returns an empty string if the element exists, but the attribute doesn't" do
40
+ expect(browser.dt(class: 'current-industry').id).to eq ''
41
+ end
42
+
43
+ it 'raises UnknownObjectException if the element does not exist' do
44
+ expect { browser.dt(id: 'no_such_id').id }.to raise_unknown_object_exception
45
+ expect { browser.dt(title: 'no_such_id').id }.to raise_unknown_object_exception
46
+ expect { browser.dt(index: 1337).id }.to raise_unknown_object_exception
47
+ end
46
48
  end
47
- end
48
-
49
- describe '#title' do
50
- it 'returns the title of the element' do
51
- expect(browser.dt(id: 'experience').title).to eq 'experience'
52
- end
53
- end
54
49
 
55
- describe '#text' do
56
- it 'returns the text of the element' do
57
- expect(browser.dt(id: 'experience').text).to eq 'Experience'
50
+ describe '#title' do
51
+ it 'returns the title of the element' do
52
+ expect(browser.dt(id: 'experience').title).to eq 'experience'
53
+ end
58
54
  end
59
55
 
60
- it 'returns an empty string if the element exists but contains no text' do
61
- expect(browser.dt(class: 'noop').text).to eq ''
56
+ describe '#text' do
57
+ it 'returns the text of the element' do
58
+ expect(browser.dt(id: 'experience').text).to eq 'Experience'
59
+ end
60
+
61
+ it 'returns an empty string if the element exists but contains no text' do
62
+ expect(browser.dt(class: 'noop').text).to eq ''
63
+ end
64
+
65
+ it 'raises UnknownObjectException if the element does not exist' do
66
+ expect { browser.dt(id: 'no_such_id').text }.to raise_unknown_object_exception
67
+ expect { browser.dt(title: 'no_such_title').text }.to raise_unknown_object_exception
68
+ expect { browser.dt(index: 1337).text }.to raise_unknown_object_exception
69
+ expect { browser.dt(xpath: "//dt[@id='no_such_id']").text }.to raise_unknown_object_exception
70
+ end
62
71
  end
63
72
 
64
- it 'raises UnknownObjectException if the element does not exist' do
65
- expect { browser.dt(id: 'no_such_id').text }.to raise_unknown_object_exception
66
- expect { browser.dt(title: 'no_such_title').text }.to raise_unknown_object_exception
67
- expect { browser.dt(index: 1337).text }.to raise_unknown_object_exception
68
- expect { browser.dt(xpath: "//dt[@id='no_such_id']").text }.to raise_unknown_object_exception
73
+ describe '#respond_to?' do
74
+ it 'returns true for all attribute methods' do
75
+ expect(browser.dt(index: 0)).to respond_to(:id)
76
+ expect(browser.dt(index: 0)).to respond_to(:class_name)
77
+ expect(browser.dt(index: 0)).to respond_to(:style)
78
+ expect(browser.dt(index: 0)).to respond_to(:text)
79
+ expect(browser.dt(index: 0)).to respond_to(:title)
80
+ end
69
81
  end
70
- end
71
82
 
72
- describe '#respond_to?' do
73
- it 'returns true for all attribute methods' do
74
- expect(browser.dt(index: 0)).to respond_to(:id)
75
- expect(browser.dt(index: 0)).to respond_to(:class_name)
76
- expect(browser.dt(index: 0)).to respond_to(:style)
77
- expect(browser.dt(index: 0)).to respond_to(:text)
78
- expect(browser.dt(index: 0)).to respond_to(:title)
83
+ # Manipulation methods
84
+ describe '#click' do
85
+ it 'fires events when clicked' do
86
+ expect(browser.dt(id: 'education').text).not_to eq 'changed'
87
+ browser.dt(id: 'education').click
88
+ expect(browser.dt(id: 'education').text).to eq 'changed'
89
+ end
90
+
91
+ it 'raises UnknownObjectException if the element does not exist' do
92
+ expect { browser.dt(id: 'no_such_id').click }.to raise_unknown_object_exception
93
+ expect { browser.dt(title: 'no_such_title').click }.to raise_unknown_object_exception
94
+ expect { browser.dt(index: 1337).click }.to raise_unknown_object_exception
95
+ expect { browser.dt(xpath: "//dt[@id='no_such_id']").click }.to raise_unknown_object_exception
96
+ end
79
97
  end
80
- end
81
-
82
- # Manipulation methods
83
- describe '#click' do
84
- it 'fires events when clicked' do
85
- expect(browser.dt(id: 'education').text).to_not eq 'changed'
86
- browser.dt(id: 'education').click
87
- expect(browser.dt(id: 'education').text).to eq 'changed'
88
- end
89
-
90
- it 'raises UnknownObjectException if the element does not exist' do
91
- expect { browser.dt(id: 'no_such_id').click }.to raise_unknown_object_exception
92
- expect { browser.dt(title: 'no_such_title').click }.to raise_unknown_object_exception
93
- expect { browser.dt(index: 1337).click }.to raise_unknown_object_exception
94
- expect { browser.dt(xpath: "//dt[@id='no_such_id']").click }.to raise_unknown_object_exception
95
- end
96
- end
97
98
 
98
- describe '#html' do
99
- it 'returns the HTML of the element' do
100
- html = browser.dt(id: 'name').html
101
- expect(html).to match(%r{<div>.*Name.*</div>}mi)
102
- expect(html).to_not include('</body>')
99
+ describe '#html' do
100
+ it 'returns the HTML of the element' do
101
+ html = browser.dt(id: 'name').html
102
+ expect(html).to match(%r{<div>.*Name.*</div>}mi)
103
+ expect(html).not_to include('</body>')
104
+ end
103
105
  end
104
106
  end
105
107
  end
@@ -2,41 +2,43 @@
2
2
 
3
3
  require 'watirspec_helper'
4
4
 
5
- describe 'Dts' do
6
- before :each do
7
- browser.goto(WatirSpec.url_for('definition_lists.html'))
8
- end
5
+ module Watir
6
+ describe 'Dts' do
7
+ before do
8
+ browser.goto(WatirSpec.url_for('definition_lists.html'))
9
+ end
9
10
 
10
- describe 'with selectors' do
11
- it 'returns the matching elements' do
12
- expect(browser.dts(class: 'current-industry').to_a).to eq [browser.dt(class: 'current-industry')]
11
+ describe 'with selectors' do
12
+ it 'returns the matching elements' do
13
+ expect(browser.dts(class: 'current-industry').to_a).to eq [browser.dt(class: 'current-industry')]
14
+ end
13
15
  end
14
- end
15
16
 
16
- describe '#length' do
17
- it 'returns the number of dts' do
18
- expect(browser.dts.length).to eq 11
17
+ describe '#length' do
18
+ it 'returns the number of dts' do
19
+ expect(browser.dts.length).to eq 11
20
+ end
19
21
  end
20
- end
21
22
 
22
- describe '#[]' do
23
- it 'returns the dt at the given index' do
24
- expect(browser.dts[0].id).to eq 'experience'
23
+ describe '#[]' do
24
+ it 'returns the dt at the given index' do
25
+ expect(browser.dts[0].id).to eq 'experience'
26
+ end
25
27
  end
26
- end
27
28
 
28
- describe '#each' do
29
- it 'iterates through dts correctly' do
30
- count = 0
29
+ describe '#each' do
30
+ it 'iterates through dts correctly' do
31
+ count = 0
31
32
 
32
- browser.dts.each_with_index do |d, index|
33
- expect(d.id).to eq browser.dt(index: index).id
34
- expect(d.class_name).to eq browser.dt(index: index).class_name
33
+ browser.dts.each_with_index do |d, index|
34
+ expect(d.id).to eq browser.dt(index: index).id
35
+ expect(d.class_name).to eq browser.dt(index: index).class_name
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