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,105 +2,107 @@
2
2
 
3
3
  require 'watirspec_helper'
4
4
 
5
- describe 'Dd' 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.dd(id: 'someone')).to exist
14
- expect(browser.dd(class: 'name')).to exist
15
- expect(browser.dd(xpath: "//dd[@id='someone']")).to exist
16
- expect(browser.dd(index: 0)).to exist
17
- end
18
-
19
- it 'returns the first dd if given no args' do
20
- expect(browser.dd).to exist
21
- end
22
-
23
- it 'returns false if the element does not exist' do
24
- expect(browser.dd(id: 'no_such_id')).to_not exist
25
- end
26
-
27
- it "raises TypeError when 'what' argument is invalid" do
28
- expect { browser.dd(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.dd(class: 'name').id).to eq 'someone'
5
+ module Watir
6
+ describe 'Dd' 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.dd(class: 'address').id).to eq ''
11
+ # Exists method
12
+ describe '#exists?' do
13
+ it 'returns true if the element exists' do
14
+ expect(browser.dd(id: 'someone')).to exist
15
+ expect(browser.dd(class: 'name')).to exist
16
+ expect(browser.dd(xpath: "//dd[@id='someone']")).to exist
17
+ expect(browser.dd(index: 0)).to exist
18
+ end
19
+
20
+ it 'returns the first dd if given no args' do
21
+ expect(browser.dd).to exist
22
+ end
23
+
24
+ it 'returns false if the element does not exist' do
25
+ expect(browser.dd(id: 'no_such_id')).not_to exist
26
+ end
27
+
28
+ it "raises TypeError when 'what' argument is invalid" do
29
+ expect { browser.dd(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.dd(id: 'no_such_id').id }.to raise_unknown_object_exception
44
- expect { browser.dd(title: 'no_such_id').id }.to raise_unknown_object_exception
45
- expect { browser.dd(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.dd(class: 'name').id).to eq 'someone'
37
+ end
38
+
39
+ it "returns an empty string if the element exists, but the attribute doesn't" do
40
+ expect(browser.dd(class: 'address').id).to eq ''
41
+ end
42
+
43
+ it 'raises UnknownObjectException if the element does not exist' do
44
+ expect { browser.dd(id: 'no_such_id').id }.to raise_unknown_object_exception
45
+ expect { browser.dd(title: 'no_such_id').id }.to raise_unknown_object_exception
46
+ expect { browser.dd(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.dd(class: 'name').title).to eq 'someone'
52
- end
53
- end
54
49
 
55
- describe '#text' do
56
- it 'returns the text of the element' do
57
- expect(browser.dd(id: 'someone').text).to eq 'John Doe'
50
+ describe '#title' do
51
+ it 'returns the title of the element' do
52
+ expect(browser.dd(class: 'name').title).to eq 'someone'
53
+ end
58
54
  end
59
55
 
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.dd(class: 'noop').text).to eq ''
56
+ describe '#text' do
57
+ it 'returns the text of the element' do
58
+ expect(browser.dd(id: 'someone').text).to eq 'John Doe'
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.dd(class: 'noop').text).to eq ''
64
+ end
65
+
66
+ it 'raises UnknownObjectException if the element does not exist' do
67
+ expect { browser.dd(id: 'no_such_id').text }.to raise_unknown_object_exception
68
+ expect { browser.dd(title: 'no_such_title').text }.to raise_unknown_object_exception
69
+ expect { browser.dd(index: 1337).text }.to raise_unknown_object_exception
70
+ expect { browser.dd(xpath: "//dd[@id='no_such_id']").text }.to raise_unknown_object_exception
71
+ end
63
72
  end
64
73
 
65
- it 'raises UnknownObjectException if the element does not exist' do
66
- expect { browser.dd(id: 'no_such_id').text }.to raise_unknown_object_exception
67
- expect { browser.dd(title: 'no_such_title').text }.to raise_unknown_object_exception
68
- expect { browser.dd(index: 1337).text }.to raise_unknown_object_exception
69
- expect { browser.dd(xpath: "//dd[@id='no_such_id']").text }.to raise_unknown_object_exception
74
+ describe '#respond_to?' do
75
+ it 'returns true for all attribute methods' do
76
+ expect(browser.dd(index: 0)).to respond_to(:id)
77
+ expect(browser.dd(index: 0)).to respond_to(:class_name)
78
+ expect(browser.dd(index: 0)).to respond_to(:style)
79
+ expect(browser.dd(index: 0)).to respond_to(:text)
80
+ expect(browser.dd(index: 0)).to respond_to(:title)
81
+ end
70
82
  end
71
- end
72
83
 
73
- describe '#respond_to?' do
74
- it 'returns true for all attribute methods' do
75
- expect(browser.dd(index: 0)).to respond_to(:id)
76
- expect(browser.dd(index: 0)).to respond_to(:class_name)
77
- expect(browser.dd(index: 0)).to respond_to(:style)
78
- expect(browser.dd(index: 0)).to respond_to(:text)
79
- expect(browser.dd(index: 0)).to respond_to(:title)
84
+ # Manipulation methods
85
+ describe '#click' do
86
+ it 'fires events when clicked' do
87
+ expect(browser.dd(title: 'education').text).not_to eq 'changed'
88
+ browser.dd(title: 'education').click
89
+ expect(browser.dd(title: 'education').text).to eq 'changed'
90
+ end
91
+
92
+ it 'raises UnknownObjectException if the element does not exist' do
93
+ expect { browser.dd(id: 'no_such_id').click }.to raise_unknown_object_exception
94
+ expect { browser.dd(title: 'no_such_title').click }.to raise_unknown_object_exception
95
+ expect { browser.dd(index: 1337).click }.to raise_unknown_object_exception
96
+ expect { browser.dd(xpath: "//dd[@id='no_such_id']").click }.to raise_unknown_object_exception
97
+ end
80
98
  end
81
- end
82
-
83
- # Manipulation methods
84
- describe '#click' do
85
- it 'fires events when clicked' do
86
- expect(browser.dd(title: 'education').text).to_not eq 'changed'
87
- browser.dd(title: 'education').click
88
- expect(browser.dd(title: 'education').text).to eq 'changed'
89
- end
90
-
91
- it 'raises UnknownObjectException if the element does not exist' do
92
- expect { browser.dd(id: 'no_such_id').click }.to raise_unknown_object_exception
93
- expect { browser.dd(title: 'no_such_title').click }.to raise_unknown_object_exception
94
- expect { browser.dd(index: 1337).click }.to raise_unknown_object_exception
95
- expect { browser.dd(xpath: "//dd[@id='no_such_id']").click }.to raise_unknown_object_exception
96
- end
97
- end
98
99
 
99
- describe '#html' do
100
- it 'returns the HTML of the element' do
101
- html = browser.dd(id: 'someone').html
102
- expect(html).to match(/John Doe/m)
103
- expect(html).to_not include('</body>')
100
+ describe '#html' do
101
+ it 'returns the HTML of the element' do
102
+ html = browser.dd(id: 'someone').html
103
+ expect(html).to match(/John Doe/m)
104
+ expect(html).not_to include('</body>')
105
+ end
104
106
  end
105
107
  end
106
108
  end
@@ -2,41 +2,43 @@
2
2
 
3
3
  require 'watirspec_helper'
4
4
 
5
- describe 'Dds' do
6
- before :each do
7
- browser.goto(WatirSpec.url_for('definition_lists.html'))
8
- end
5
+ module Watir
6
+ describe 'Dds' 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.dds(text: '11 years').to_a).to eq [browser.dd(text: '11 years')]
11
+ describe 'with selectors' do
12
+ it 'returns the matching elements' do
13
+ expect(browser.dds(text: '11 years').to_a).to eq [browser.dd(text: '11 years')]
14
+ end
13
15
  end
14
- end
15
16
 
16
- describe '#length' do
17
- it 'returns the number of dds' do
18
- expect(browser.dds.length).to eq 11
17
+ describe '#length' do
18
+ it 'returns the number of dds' do
19
+ expect(browser.dds.length).to eq 11
20
+ end
19
21
  end
20
- end
21
22
 
22
- describe '#[]' do
23
- it 'returns the dd at the given index' do
24
- expect(browser.dds[1].title).to eq 'education'
23
+ describe '#[]' do
24
+ it 'returns the dd at the given index' do
25
+ expect(browser.dds[1].title).to eq 'education'
26
+ end
25
27
  end
26
- end
27
28
 
28
- describe '#each' do
29
- it 'iterates through dds correctly' do
30
- count = 0
29
+ describe '#each' do
30
+ it 'iterates through dds correctly' do
31
+ count = 0
31
32
 
32
- browser.dds.each_with_index do |d, index|
33
- expect(d.id).to eq browser.dd(index: index).id
34
- expect(d.class_name).to eq browser.dd(index: index).class_name
33
+ browser.dds.each_with_index do |d, index|
34
+ expect(d.id).to eq browser.dd(index: index).id
35
+ expect(d.class_name).to eq browser.dd(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
@@ -2,110 +2,112 @@
2
2
 
3
3
  require 'watirspec_helper'
4
4
 
5
- describe 'Del' 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 'del' exists" do
13
- expect(browser.del(id: 'lead')).to exist
14
- expect(browser.del(id: /lead/)).to exist
15
- expect(browser.del(text: 'This is a deleted text tag 1')).to exist
16
- expect(browser.del(text: /This is a deleted text tag 1/)).to exist
17
- expect(browser.del(class: 'lead')).to exist
18
- expect(browser.del(class: /lead/)).to exist
19
- expect(browser.del(index: 0)).to exist
20
- expect(browser.del(xpath: "//del[@id='lead']")).to exist
21
- end
22
-
23
- it 'returns the first del if given no args' do
24
- expect(browser.del).to exist
25
- end
26
-
27
- it "returns false if the element doesn't exist" do
28
- expect(browser.del(id: 'no_such_id')).to_not exist
29
- expect(browser.del(id: /no_such_id/)).to_not exist
30
- expect(browser.del(text: 'no_such_text')).to_not exist
31
- expect(browser.del(text: /no_such_text/)).to_not exist
32
- expect(browser.del(class: 'no_such_class')).to_not exist
33
- expect(browser.del(class: /no_such_class/)).to_not exist
34
- expect(browser.del(index: 1337)).to_not exist
35
- expect(browser.del(xpath: "//del[@id='no_such_id']")).to_not exist
36
- end
37
-
38
- it "raises TypeError when 'what' argument is invalid" do
39
- expect { browser.del(id: 3.14).exists? }.to raise_error(TypeError)
40
- end
41
- end
42
-
43
- # Attribute methods
44
- describe '#id' do
45
- it 'returns the id attribute' do
46
- expect(browser.del(index: 0).id).to eq 'lead'
47
- end
48
-
49
- it "returns an empty string if the element exists and the attribute doesn't" do
50
- expect(browser.del(index: 2).id).to eq ''
51
- end
52
-
53
- it "raises UnknownObjectException if the del doesn't exist" do
54
- expect { browser.del(id: 'no_such_id').id }.to raise_unknown_object_exception
55
- expect { browser.del(index: 1337).id }.to raise_unknown_object_exception
56
- end
57
- end
58
-
59
- describe '#title' do
60
- it 'returns the title attribute' do
61
- expect(browser.del(index: 0).title).to eq 'Lorem ipsum'
62
- end
63
-
64
- it "returns an empty string if the element exists and the attribute doesn't" do
65
- expect(browser.del(index: 2).title).to eq ''
66
- end
67
-
68
- it "raises UnknownObjectException if the del doesn't exist" do
69
- expect { browser.del(id: 'no_such_id').title }.to raise_unknown_object_exception
70
- expect { browser.del(xpath: "//del[@id='no_such_id']").title }.to raise_unknown_object_exception
71
- end
72
- end
73
-
74
- describe '#text' do
75
- it 'returns the text of the del' do
76
- expect(browser.del(index: 1).text).to eq 'This is a deleted text tag 2'
77
- end
78
-
79
- it "returns an empty string if the element doesn't contain any text" do
80
- expect(browser.del(index: 3).text).to eq ''
81
- end
82
-
83
- it "raises UnknownObjectException if the del doesn't exist" do
84
- expect { browser.del(id: 'no_such_id').text }.to raise_unknown_object_exception
85
- expect { browser.del(xpath: "//del[@id='no_such_id']").text }.to raise_unknown_object_exception
86
- end
87
- end
88
-
89
- describe '#respond_to?' do
90
- it 'returns true for all attribute methods' do
91
- expect(browser.del(index: 0)).to respond_to(:class_name)
92
- expect(browser.del(index: 0)).to respond_to(:id)
93
- expect(browser.del(index: 0)).to respond_to(:title)
94
- expect(browser.del(index: 0)).to respond_to(:text)
95
- end
96
- end
97
-
98
- # Other
99
- describe '#click', except: {headless: true} do
100
- it 'fires events' do
101
- expect(browser.del(class: 'footer').text).to_not include('Javascript')
102
- browser.del(class: 'footer').click
103
- expect(browser.del(class: 'footer').text).to include('Javascript')
104
- end
105
-
106
- it "raises UnknownObjectException if the del doesn't exist" do
107
- expect { browser.del(id: 'no_such_id').click }.to raise_unknown_object_exception
108
- expect { browser.del(title: 'no_such_title').click }.to raise_unknown_object_exception
5
+ module Watir
6
+ describe 'Del' 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 'del' exists" do
14
+ expect(browser.del(id: 'lead')).to exist
15
+ expect(browser.del(id: /lead/)).to exist
16
+ expect(browser.del(text: 'This is a deleted text tag 1')).to exist
17
+ expect(browser.del(text: /This is a deleted text tag 1/)).to exist
18
+ expect(browser.del(class: 'lead')).to exist
19
+ expect(browser.del(class: /lead/)).to exist
20
+ expect(browser.del(index: 0)).to exist
21
+ expect(browser.del(xpath: "//del[@id='lead']")).to exist
22
+ end
23
+
24
+ it 'returns the first del if given no args' do
25
+ expect(browser.del).to exist
26
+ end
27
+
28
+ it "returns false if the element doesn't exist" do
29
+ expect(browser.del(id: 'no_such_id')).not_to exist
30
+ expect(browser.del(id: /no_such_id/)).not_to exist
31
+ expect(browser.del(text: 'no_such_text')).not_to exist
32
+ expect(browser.del(text: /no_such_text/)).not_to exist
33
+ expect(browser.del(class: 'no_such_class')).not_to exist
34
+ expect(browser.del(class: /no_such_class/)).not_to exist
35
+ expect(browser.del(index: 1337)).not_to exist
36
+ expect(browser.del(xpath: "//del[@id='no_such_id']")).not_to exist
37
+ end
38
+
39
+ it "raises TypeError when 'what' argument is invalid" do
40
+ expect { browser.del(id: 3.14).exists? }.to raise_error(TypeError)
41
+ end
42
+ end
43
+
44
+ # Attribute methods
45
+ describe '#id' do
46
+ it 'returns the id attribute' do
47
+ expect(browser.del(index: 0).id).to eq 'lead'
48
+ end
49
+
50
+ it "returns an empty string if the element exists and the attribute doesn't" do
51
+ expect(browser.del(index: 2).id).to eq ''
52
+ end
53
+
54
+ it "raises UnknownObjectException if the del doesn't exist" do
55
+ expect { browser.del(id: 'no_such_id').id }.to raise_unknown_object_exception
56
+ expect { browser.del(index: 1337).id }.to raise_unknown_object_exception
57
+ end
58
+ end
59
+
60
+ describe '#title' do
61
+ it 'returns the title attribute' do
62
+ expect(browser.del(index: 0).title).to eq 'Lorem ipsum'
63
+ end
64
+
65
+ it "returns an empty string if the element exists and the attribute doesn't" do
66
+ expect(browser.del(index: 2).title).to eq ''
67
+ end
68
+
69
+ it "raises UnknownObjectException if the del doesn't exist" do
70
+ expect { browser.del(id: 'no_such_id').title }.to raise_unknown_object_exception
71
+ expect { browser.del(xpath: "//del[@id='no_such_id']").title }.to raise_unknown_object_exception
72
+ end
73
+ end
74
+
75
+ describe '#text' do
76
+ it 'returns the text of the del' do
77
+ expect(browser.del(index: 1).text).to eq 'This is a deleted text tag 2'
78
+ end
79
+
80
+ it "returns an empty string if the element doesn't contain any text" do
81
+ expect(browser.del(index: 3).text).to eq ''
82
+ end
83
+
84
+ it "raises UnknownObjectException if the del doesn't exist" do
85
+ expect { browser.del(id: 'no_such_id').text }.to raise_unknown_object_exception
86
+ expect { browser.del(xpath: "//del[@id='no_such_id']").text }.to raise_unknown_object_exception
87
+ end
88
+ end
89
+
90
+ describe '#respond_to?' do
91
+ it 'returns true for all attribute methods' do
92
+ expect(browser.del(index: 0)).to respond_to(:class_name)
93
+ expect(browser.del(index: 0)).to respond_to(:id)
94
+ expect(browser.del(index: 0)).to respond_to(:title)
95
+ expect(browser.del(index: 0)).to respond_to(:text)
96
+ end
97
+ end
98
+
99
+ # Other
100
+ describe '#click', except: {headless: true} do
101
+ it 'fires events' do
102
+ expect(browser.del(class: 'footer').text).not_to include('Javascript')
103
+ browser.del(class: 'footer').click
104
+ expect(browser.del(class: 'footer').text).to include('Javascript')
105
+ end
106
+
107
+ it "raises UnknownObjectException if the del doesn't exist" do
108
+ expect { browser.del(id: 'no_such_id').click }.to raise_unknown_object_exception
109
+ expect { browser.del(title: 'no_such_title').click }.to raise_unknown_object_exception
110
+ end
109
111
  end
110
112
  end
111
113
  end
@@ -2,39 +2,41 @@
2
2
 
3
3
  require 'watirspec_helper'
4
4
 
5
- describe 'Dels' do
6
- before :each do
7
- browser.goto(WatirSpec.url_for('non_control_elements.html'))
8
- end
5
+ module Watir
6
+ describe 'Dels' 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.dels(class: 'lead').to_a).to eq [browser.del(class: 'lead')]
11
+ describe 'with selectors' do
12
+ it 'returns the matching elements' do
13
+ expect(browser.dels(class: 'lead').to_a).to eq [browser.del(class: 'lead')]
14
+ end
13
15
  end
14
- end
15
16
 
16
- describe '#length' do
17
- it 'returns the number of dels' do
18
- expect(browser.dels.length).to eq 5
17
+ describe '#length' do
18
+ it 'returns the number of dels' do
19
+ expect(browser.dels.length).to eq 5
20
+ end
19
21
  end
20
- end
21
22
 
22
- describe '#[]' do
23
- it 'returns the del at the given index' do
24
- expect(browser.dels[0].id).to eq 'lead'
23
+ describe '#[]' do
24
+ it 'returns the del at the given index' do
25
+ expect(browser.dels[0].id).to eq 'lead'
26
+ end
25
27
  end
26
- end
27
28
 
28
- describe '#each' do
29
- it 'iterates through dels correctly' do
30
- count = 0
29
+ describe '#each' do
30
+ it 'iterates through dels correctly' do
31
+ count = 0
31
32
 
32
- browser.dels.each_with_index do |s, index|
33
- expect(s.id).to eq browser.del(index: index).id
34
- count += 1
35
- end
33
+ browser.dels.each_with_index do |s, index|
34
+ expect(s.id).to eq browser.del(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