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,60 +2,62 @@
2
2
 
3
3
  require 'watirspec_helper'
4
4
 
5
- describe 'TableRows' do
6
- before :each do
7
- browser.goto(WatirSpec.url_for('tables.html'))
8
- end
9
-
10
- describe 'with selectors' do
11
- it 'returns the matching elements' do
12
- expect(browser.trs(id: 'outer_second').to_a).to eq [browser.tr(id: 'outer_second')]
13
- end
14
- end
15
-
16
- describe '#length' do
17
- it 'returns the correct number of cells (table context)' do
18
- expect(browser.table(id: 'inner').trs.length).to eq 1
19
- expect(browser.table(id: 'outer').trs.length).to eq 4
5
+ module Watir
6
+ describe TableRowCollection do
7
+ before do
8
+ browser.goto(WatirSpec.url_for('tables.html'))
20
9
  end
21
10
 
22
- it 'returns the correct number of cells (page context)' do
23
- expect(browser.trs.length).to eq 14
11
+ describe 'with selectors' do
12
+ it 'returns the matching elements' do
13
+ expect(browser.trs(id: 'outer_second').to_a).to eq [browser.tr(id: 'outer_second')]
14
+ end
24
15
  end
25
- end
26
16
 
27
- describe '#[]' do
28
- it 'returns the row at the given index (table context)' do
29
- expect(browser.table(id: 'outer').trs[0].id).to eq 'outer_first'
30
- end
17
+ describe '#length' do
18
+ it 'returns the correct number of cells (table context)' do
19
+ expect(browser.table(id: 'inner').trs.length).to eq 1
20
+ expect(browser.table(id: 'outer').trs.length).to eq 4
21
+ end
31
22
 
32
- it 'returns the row at the given index (page context)' do
33
- expect(browser.trs[0].id).to eq 'thead_row_1'
23
+ it 'returns the correct number of cells (page context)' do
24
+ expect(browser.trs.length).to eq 14
25
+ end
34
26
  end
35
- end
36
27
 
37
- describe '#each' do
38
- it 'iterates through rows correctly' do
39
- inner_table = browser.table(id: 'inner')
40
- count = 0
28
+ describe '#[]' do
29
+ it 'returns the row at the given index (table context)' do
30
+ expect(browser.table(id: 'outer').trs[0].id).to eq 'outer_first'
31
+ end
41
32
 
42
- inner_table.trs.each_with_index do |r, index|
43
- expect(r.id).to eq inner_table.tr(index: index).id
44
- count += 1
33
+ it 'returns the row at the given index (page context)' do
34
+ expect(browser.trs[0].id).to eq 'thead_row_1'
45
35
  end
46
- expect(count).to be > 0
47
36
  end
48
37
 
49
- it 'iterates through the outer table correctly' do
50
- outer_table = browser.table(id: 'outer')
51
- count = 0
38
+ describe '#each' do
39
+ it 'iterates through rows correctly' do
40
+ inner_table = browser.table(id: 'inner')
41
+ count = 0
52
42
 
53
- outer_table.trs.each_with_index do |r, index|
54
- expect(r.id).to eq outer_table.tr(index: index).id
55
- count += 1
43
+ inner_table.trs.each_with_index do |r, index|
44
+ expect(r.id).to eq inner_table.tr(index: index).id
45
+ count += 1
46
+ end
47
+ expect(count).to be > 0
56
48
  end
57
49
 
58
- expect(count).to be > 0
50
+ it 'iterates through the outer table correctly' do
51
+ outer_table = browser.table(id: 'outer')
52
+ count = 0
53
+
54
+ outer_table.trs.each_with_index do |r, index|
55
+ expect(r.id).to eq outer_table.tr(index: index).id
56
+ count += 1
57
+ end
58
+
59
+ expect(count).to be > 0
60
+ end
59
61
  end
60
62
  end
61
63
  end
@@ -2,60 +2,62 @@
2
2
 
3
3
  require 'watirspec_helper'
4
4
 
5
- describe 'Ul' 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 'ul' exists" do
13
- expect(browser.ul(id: 'navbar')).to exist
14
- expect(browser.ul(id: /navbar/)).to exist
15
- expect(browser.ul(index: 0)).to exist
16
- expect(browser.ul(xpath: "//ul[@id='navbar']")).to exist
17
- end
18
-
19
- it 'returns the first ul if given no args' do
20
- expect(browser.ul).to exist
21
- end
22
-
23
- it "returns false if the 'ul' doesn't exist" do
24
- expect(browser.ul(id: 'no_such_id')).to_not exist
25
- expect(browser.ul(id: /no_such_id/)).to_not exist
26
- expect(browser.ul(text: 'no_such_text')).to_not exist
27
- expect(browser.ul(text: /no_such_text/)).to_not exist
28
- expect(browser.ul(class: 'no_such_class')).to_not exist
29
- expect(browser.ul(class: /no_such_class/)).to_not exist
30
- expect(browser.ul(index: 1337)).to_not exist
31
- expect(browser.ul(xpath: "//ul[@id='no_such_id']")).to_not exist
32
- end
33
-
34
- it "raises TypeError when 'what' argument is invalid" do
35
- expect { browser.ul(id: 3.14).exists? }.to raise_error(TypeError)
36
- end
37
- end
38
-
39
- # Attribute methods
40
- describe '#id' do
41
- it 'returns the id attribute' do
42
- expect(browser.ul(class: 'navigation').id).to eq 'navbar'
43
- end
44
-
45
- it "returns an empty string if the element exists and the attribute doesn't" do
46
- expect(browser.ul(index: 1).id).to eq ''
47
- end
48
-
49
- it "raises UnknownObjectException if the ul doesn't exist" do
50
- expect { browser.ul(id: 'no_such_id').id }.to raise_unknown_object_exception
51
- expect { browser.ul(index: 1337).id }.to raise_unknown_object_exception
52
- end
53
- end
54
-
55
- describe '#respond_to?' do
56
- it 'returns true for all attribute methods' do
57
- expect(browser.ul(index: 0)).to respond_to(:class_name)
58
- expect(browser.ul(index: 0)).to respond_to(:id)
5
+ module Watir
6
+ describe UList 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 'ul' exists" do
14
+ expect(browser.ul(id: 'navbar')).to exist
15
+ expect(browser.ul(id: /navbar/)).to exist
16
+ expect(browser.ul(index: 0)).to exist
17
+ expect(browser.ul(xpath: "//ul[@id='navbar']")).to exist
18
+ end
19
+
20
+ it 'returns the first ul if given no args' do
21
+ expect(browser.ul).to exist
22
+ end
23
+
24
+ it "returns false if the 'ul' doesn't exist" do
25
+ expect(browser.ul(id: 'no_such_id')).not_to exist
26
+ expect(browser.ul(id: /no_such_id/)).not_to exist
27
+ expect(browser.ul(text: 'no_such_text')).not_to exist
28
+ expect(browser.ul(text: /no_such_text/)).not_to exist
29
+ expect(browser.ul(class: 'no_such_class')).not_to exist
30
+ expect(browser.ul(class: /no_such_class/)).not_to exist
31
+ expect(browser.ul(index: 1337)).not_to exist
32
+ expect(browser.ul(xpath: "//ul[@id='no_such_id']")).not_to exist
33
+ end
34
+
35
+ it "raises TypeError when 'what' argument is invalid" do
36
+ expect { browser.ul(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.ul(class: 'navigation').id).to eq 'navbar'
44
+ end
45
+
46
+ it "returns an empty string if the element exists and the attribute doesn't" do
47
+ expect(browser.ul(index: 1).id).to eq ''
48
+ end
49
+
50
+ it "raises UnknownObjectException if the ul doesn't exist" do
51
+ expect { browser.ul(id: 'no_such_id').id }.to raise_unknown_object_exception
52
+ expect { browser.ul(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.ul(index: 0)).to respond_to(:class_name)
59
+ expect(browser.ul(index: 0)).to respond_to(:id)
60
+ end
59
61
  end
60
62
  end
61
63
  end
@@ -2,39 +2,41 @@
2
2
 
3
3
  require 'watirspec_helper'
4
4
 
5
- describe 'Uls' do
6
- before :each do
7
- browser.goto(WatirSpec.url_for('non_control_elements.html'))
8
- end
5
+ module Watir
6
+ describe UListCollection 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.uls(class: 'navigation').to_a).to eq [browser.ul(class: 'navigation')]
11
+ describe 'with selectors' do
12
+ it 'returns the matching elements' do
13
+ expect(browser.uls(class: 'navigation').to_a).to eq [browser.ul(class: 'navigation')]
14
+ end
13
15
  end
14
- end
15
16
 
16
- describe '#length' do
17
- it 'returns the number of uls' do
18
- expect(browser.uls.length).to eq 2
17
+ describe '#length' do
18
+ it 'returns the number of uls' do
19
+ expect(browser.uls.length).to eq 2
20
+ end
19
21
  end
20
- end
21
22
 
22
- describe '#[]' do
23
- it 'returns the ul at the given index' do
24
- expect(browser.uls[0].id).to eq 'navbar'
23
+ describe '#[]' do
24
+ it 'returns the ul at the given index' do
25
+ expect(browser.uls[0].id).to eq 'navbar'
26
+ end
25
27
  end
26
- end
27
28
 
28
- describe '#each' do
29
- it 'iterates through uls correctly' do
30
- count = 0
29
+ describe '#each' do
30
+ it 'iterates through uls correctly' do
31
+ count = 0
31
32
 
32
- browser.uls.each_with_index do |ul, index|
33
- expect(ul.id).to eq browser.ul(index: index).id
34
- count += 1
35
- end
33
+ browser.uls.each_with_index do |ul, index|
34
+ expect(ul.id).to eq browser.ul(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