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,86 +2,88 @@
2
2
 
3
3
  require 'watirspec_helper'
4
4
 
5
- describe 'TableFooter' do
6
- before :each do
7
- browser.goto(WatirSpec.url_for('tables.html'))
8
- end
9
-
10
- describe '#exists?' do
11
- it 'returns true if the table tfoot exists (page context)' do
12
- expect(browser.tfoot(id: 'tax_totals')).to exist
13
- expect(browser.tfoot(id: /tax_totals/)).to exist
14
- expect(browser.tfoot(index: 0)).to exist
15
- expect(browser.tfoot(xpath: "//tfoot[@id='tax_totals']")).to exist
5
+ module Watir
6
+ describe 'TableFooter' do
7
+ before do
8
+ browser.goto(WatirSpec.url_for('tables.html'))
16
9
  end
17
10
 
18
- it 'returns true if the table tfoot exists (table context)' do
19
- expect(browser.table(index: 0).tfoot(id: 'tax_totals')).to exist
20
- expect(browser.table(index: 0).tfoot(id: /tax_totals/)).to exist
21
- expect(browser.table(index: 0).tfoot(index: 0)).to exist
22
- expect(browser.table(index: 0).tfoot(xpath: "//tfoot[@id='tax_totals']")).to exist
23
- end
11
+ describe '#exists?' do
12
+ it 'returns true if the table tfoot exists (page context)' do
13
+ expect(browser.tfoot(id: 'tax_totals')).to exist
14
+ expect(browser.tfoot(id: /tax_totals/)).to exist
15
+ expect(browser.tfoot(index: 0)).to exist
16
+ expect(browser.tfoot(xpath: "//tfoot[@id='tax_totals']")).to exist
17
+ end
24
18
 
25
- it 'returns the first tfoot if given no args' do
26
- expect(browser.tfoot).to exist
27
- end
19
+ it 'returns true if the table tfoot exists (table context)' do
20
+ expect(browser.table(index: 0).tfoot(id: 'tax_totals')).to exist
21
+ expect(browser.table(index: 0).tfoot(id: /tax_totals/)).to exist
22
+ expect(browser.table(index: 0).tfoot(index: 0)).to exist
23
+ expect(browser.table(index: 0).tfoot(xpath: "//tfoot[@id='tax_totals']")).to exist
24
+ end
28
25
 
29
- it "returns false if the table tfoot doesn't exist (page context)" do
30
- expect(browser.tfoot(id: 'no_such_id')).to_not exist
31
- expect(browser.tfoot(id: /no_such_id/)).to_not exist
32
- expect(browser.tfoot(index: 1337)).to_not exist
33
- expect(browser.tfoot(xpath: "//tfoot[@id='no_such_id']")).to_not exist
34
- end
26
+ it 'returns the first tfoot if given no args' do
27
+ expect(browser.tfoot).to exist
28
+ end
35
29
 
36
- it "returns false if the table tfoot doesn't exist (table context)" do
37
- expect(browser.table(index: 0).tfoot(id: 'no_such_id')).to_not exist
38
- expect(browser.table(index: 0).tfoot(id: /no_such_id/)).to_not exist
39
- expect(browser.table(index: 0).tfoot(index: 1337)).to_not exist
40
- expect(browser.table(index: 0).tfoot(xpath: "//tfoot[@id='no_such_id']")).to_not exist
41
- end
30
+ it "returns false if the table tfoot doesn't exist (page context)" do
31
+ expect(browser.tfoot(id: 'no_such_id')).not_to exist
32
+ expect(browser.tfoot(id: /no_such_id/)).not_to exist
33
+ expect(browser.tfoot(index: 1337)).not_to exist
34
+ expect(browser.tfoot(xpath: "//tfoot[@id='no_such_id']")).not_to exist
35
+ end
42
36
 
43
- it "raises TypeError when 'what' argument is invalid" do
44
- expect { browser.tfoot(id: 3.14).exists? }.to raise_error(TypeError)
45
- expect { browser.table(index: 0).tfoot(id: 3.14).exists? }.to raise_error(TypeError)
46
- end
47
- end
37
+ it "returns false if the table tfoot doesn't exist (table context)" do
38
+ expect(browser.table(index: 0).tfoot(id: 'no_such_id')).not_to exist
39
+ expect(browser.table(index: 0).tfoot(id: /no_such_id/)).not_to exist
40
+ expect(browser.table(index: 0).tfoot(index: 1337)).not_to exist
41
+ expect(browser.table(index: 0).tfoot(xpath: "//tfoot[@id='no_such_id']")).not_to exist
42
+ end
48
43
 
49
- describe '#[]' do
50
- it 'returns the row at the given index (page context)' do
51
- expect(browser.tfoot(id: 'tax_totals')[0].id).to eq 'tfoot_row_1'
52
- expect(browser.tfoot(id: 'tax_totals')[0][1].text).to eq '24 349'
53
- expect(browser.tfoot(id: 'tax_totals')[0][2].text).to eq '5 577'
44
+ it "raises TypeError when 'what' argument is invalid" do
45
+ expect { browser.tfoot(id: 3.14).exists? }.to raise_error(TypeError)
46
+ expect { browser.table(index: 0).tfoot(id: 3.14).exists? }.to raise_error(TypeError)
47
+ end
54
48
  end
55
49
 
56
- it 'returns the row at the given index (table context)' do
57
- expect(browser.table(index: 0).tfoot(id: 'tax_totals')[0].id).to eq 'tfoot_row_1'
58
- expect(browser.table(index: 0).tfoot(id: 'tax_totals')[0][1].text).to eq '24 349'
59
- expect(browser.table(index: 0).tfoot(id: 'tax_totals')[0][2].text).to eq '5 577'
50
+ describe '#[]' do
51
+ it 'returns the row at the given index (page context)' do
52
+ expect(browser.tfoot(id: 'tax_totals')[0].id).to eq 'tfoot_row_1'
53
+ expect(browser.tfoot(id: 'tax_totals')[0][1].text).to eq '24 349'
54
+ expect(browser.tfoot(id: 'tax_totals')[0][2].text).to eq '5 577'
55
+ end
56
+
57
+ it 'returns the row at the given index (table context)' do
58
+ expect(browser.table(index: 0).tfoot(id: 'tax_totals')[0].id).to eq 'tfoot_row_1'
59
+ expect(browser.table(index: 0).tfoot(id: 'tax_totals')[0][1].text).to eq '24 349'
60
+ expect(browser.table(index: 0).tfoot(id: 'tax_totals')[0][2].text).to eq '5 577'
61
+ end
60
62
  end
61
- end
62
63
 
63
- describe '#row' do
64
- it 'finds the first row matching the selector' do
65
- row = browser.tfoot(id: 'tax_totals').row(id: 'tfoot_row_1')
64
+ describe '#row' do
65
+ it 'finds the first row matching the selector' do
66
+ row = browser.tfoot(id: 'tax_totals').row(id: 'tfoot_row_1')
66
67
 
67
- expect(row.id).to eq 'tfoot_row_1'
68
+ expect(row.id).to eq 'tfoot_row_1'
69
+ end
68
70
  end
69
- end
70
71
 
71
- describe '#rows' do
72
- it 'finds rows matching the selector' do
73
- rows = browser.tfoot(id: 'tax_totals').rows(id: 'tfoot_row_1')
72
+ describe '#rows' do
73
+ it 'finds rows matching the selector' do
74
+ rows = browser.tfoot(id: 'tax_totals').rows(id: 'tfoot_row_1')
74
75
 
75
- expect(rows.size).to eq 1
76
- expect(rows.first.id).to eq 'tfoot_row_1'
76
+ expect(rows.size).to eq 1
77
+ expect(rows.first.id).to eq 'tfoot_row_1'
78
+ end
77
79
  end
78
- end
79
80
 
80
- describe '#strings' do
81
- it 'returns the text of child cells' do
82
- expect(browser.tfoot(id: 'tax_totals').strings).to eq [
83
- ['Sum', '24 349', '5 577', '18 722']
84
- ]
81
+ describe '#strings' do
82
+ it 'returns the text of child cells' do
83
+ expect(browser.tfoot(id: 'tax_totals').strings).to eq [
84
+ ['Sum', '24 349', '5 577', '18 722']
85
+ ]
86
+ end
85
87
  end
86
88
  end
87
89
  end
@@ -2,68 +2,70 @@
2
2
 
3
3
  require 'watirspec_helper'
4
4
 
5
- describe 'TableFooters' 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.tfoots(id: 'tax_totals').to_a).to eq [browser.tfoot(id: 'tax_totals')]
5
+ module Watir
6
+ describe 'TableFooters' do
7
+ before do
8
+ browser.goto(WatirSpec.url_for('tables.html'))
13
9
  end
14
- end
15
10
 
16
- describe '#length' do
17
- it 'returns the correct number of table tfoots (page context)' do
18
- expect(browser.tfoots.length).to eq 1
11
+ describe 'with selectors' do
12
+ it 'returns the matching elements' do
13
+ expect(browser.tfoots(id: 'tax_totals').to_a).to eq [browser.tfoot(id: 'tax_totals')]
14
+ end
19
15
  end
20
16
 
21
- it 'returns the correct number of table tfoots (table context)' do
22
- expect(browser.table(index: 0).tfoots.length).to eq 1
23
- end
24
- end
17
+ describe '#length' do
18
+ it 'returns the correct number of table tfoots (page context)' do
19
+ expect(browser.tfoots.length).to eq 1
20
+ end
25
21
 
26
- describe '#[]' do
27
- it 'returns the row at the given index (page context)' do
28
- expect(browser.tfoots[0].id).to eq 'tax_totals'
22
+ it 'returns the correct number of table tfoots (table context)' do
23
+ expect(browser.table(index: 0).tfoots.length).to eq 1
24
+ end
29
25
  end
30
26
 
31
- it 'returns the row at the given index (table context)' do
32
- expect(browser.table(index: 0).tfoots[0].id).to eq 'tax_totals'
33
- end
34
- end
27
+ describe '#[]' do
28
+ it 'returns the row at the given index (page context)' do
29
+ expect(browser.tfoots[0].id).to eq 'tax_totals'
30
+ end
35
31
 
36
- describe '#each' do
37
- it 'iterates through table tfoots correctly (page context)' do
38
- browser.tfoots.each_with_index do |tfoot, index|
39
- expect(tfoot.id).to eq browser.tfoot(index: index).id
32
+ it 'returns the row at the given index (table context)' do
33
+ expect(browser.table(index: 0).tfoots[0].id).to eq 'tax_totals'
40
34
  end
41
35
  end
42
36
 
43
37
  describe '#each' do
44
38
  it 'iterates through table tfoots correctly (page context)' do
45
- count = 0
46
-
47
39
  browser.tfoots.each_with_index do |tfoot, index|
48
40
  expect(tfoot.id).to eq browser.tfoot(index: index).id
49
-
50
- count += 1
51
41
  end
52
-
53
- expect(count).to be > 0
54
42
  end
55
43
 
56
- it 'iterates through table tfoots correctly (table context)' do
57
- table = browser.table(index: 0)
58
- count = 0
44
+ describe '#each' do
45
+ it 'iterates through table tfoots correctly (page context)' do
46
+ count = 0
47
+
48
+ browser.tfoots.each_with_index do |tfoot, index|
49
+ expect(tfoot.id).to eq browser.tfoot(index: index).id
59
50
 
60
- table.tfoots.each_with_index do |tfoot, index|
61
- expect(tfoot.id).to eq table.tfoot(index: index).id
51
+ count += 1
52
+ end
62
53
 
63
- count += 1
54
+ expect(count).to be > 0
64
55
  end
65
56
 
66
- expect(count).to be > 0
57
+ it 'iterates through table tfoots correctly (table context)' do
58
+ table = browser.table(index: 0)
59
+ count = 0
60
+
61
+ table.tfoots.each_with_index do |tfoot, index|
62
+ expect(tfoot.id).to eq table.tfoot(index: index).id
63
+
64
+ count += 1
65
+ end
66
+
67
+ expect(count).to be > 0
68
+ end
67
69
  end
68
70
  end
69
71
  end
@@ -2,85 +2,87 @@
2
2
 
3
3
  require 'watirspec_helper'
4
4
 
5
- describe 'TableHeader' do
6
- before :each do
7
- browser.goto(WatirSpec.url_for('tables.html'))
8
- end
9
-
10
- describe '#exists?' do
11
- it 'returns true if the table theader exists (page context)' do
12
- expect(browser.thead(id: 'tax_headers')).to exist
13
- expect(browser.thead(id: /tax_headers/)).to exist
14
- expect(browser.thead(index: 0)).to exist
15
- expect(browser.thead(xpath: "//thead[@id='tax_headers']")).to exist
5
+ module Watir
6
+ describe 'TableHeader' do
7
+ before do
8
+ browser.goto(WatirSpec.url_for('tables.html'))
16
9
  end
17
10
 
18
- it 'returns the first thead if given no args' do
19
- expect(browser.thead).to exist
20
- end
11
+ describe '#exists?' do
12
+ it 'returns true if the table theader exists (page context)' do
13
+ expect(browser.thead(id: 'tax_headers')).to exist
14
+ expect(browser.thead(id: /tax_headers/)).to exist
15
+ expect(browser.thead(index: 0)).to exist
16
+ expect(browser.thead(xpath: "//thead[@id='tax_headers']")).to exist
17
+ end
21
18
 
22
- it 'returns true if the table theader exists (table context)' do
23
- expect(browser.table(index: 0).thead(id: 'tax_headers')).to exist
24
- expect(browser.table(index: 0).thead(id: /tax_headers/)).to exist
25
- expect(browser.table(index: 0).thead(index: 0)).to exist
26
- expect(browser.table(index: 0).thead(xpath: "//thead[@id='tax_headers']")).to exist
27
- end
19
+ it 'returns the first thead if given no args' do
20
+ expect(browser.thead).to exist
21
+ end
28
22
 
29
- it "returns false if the table theader doesn't exist (page context)" do
30
- expect(browser.thead(id: 'no_such_id')).to_not exist
31
- expect(browser.thead(id: /no_such_id/)).to_not exist
32
- expect(browser.thead(index: 1337)).to_not exist
33
- expect(browser.thead(xpath: "//thead[@id='no_such_id']")).to_not exist
34
- end
23
+ it 'returns true if the table theader exists (table context)' do
24
+ expect(browser.table(index: 0).thead(id: 'tax_headers')).to exist
25
+ expect(browser.table(index: 0).thead(id: /tax_headers/)).to exist
26
+ expect(browser.table(index: 0).thead(index: 0)).to exist
27
+ expect(browser.table(index: 0).thead(xpath: "//thead[@id='tax_headers']")).to exist
28
+ end
35
29
 
36
- it "returns false if the table theader doesn't exist (table context)" do
37
- expect(browser.table(index: 0).thead(id: 'no_such_id')).to_not exist
38
- expect(browser.table(index: 0).thead(id: /no_such_id/)).to_not exist
39
- expect(browser.table(index: 0).thead(index: 1337)).to_not exist
40
- expect(browser.table(index: 0).thead(xpath: "//thead[@id='no_such_id']")).to_not exist
41
- end
30
+ it "returns false if the table theader doesn't exist (page context)" do
31
+ expect(browser.thead(id: 'no_such_id')).not_to exist
32
+ expect(browser.thead(id: /no_such_id/)).not_to exist
33
+ expect(browser.thead(index: 1337)).not_to exist
34
+ expect(browser.thead(xpath: "//thead[@id='no_such_id']")).not_to exist
35
+ end
42
36
 
43
- it "raises TypeError when 'what' argument is invalid" do
44
- expect { browser.thead(id: 3.14).exists? }.to raise_error(TypeError)
45
- expect { browser.table(index: 0).thead(id: 3.14).exists? }.to raise_error(TypeError)
46
- end
47
- end
37
+ it "returns false if the table theader doesn't exist (table context)" do
38
+ expect(browser.table(index: 0).thead(id: 'no_such_id')).not_to exist
39
+ expect(browser.table(index: 0).thead(id: /no_such_id/)).not_to exist
40
+ expect(browser.table(index: 0).thead(index: 1337)).not_to exist
41
+ expect(browser.table(index: 0).thead(xpath: "//thead[@id='no_such_id']")).not_to exist
42
+ end
48
43
 
49
- describe '#[]' do
50
- it 'returns the row at the given index (page context)' do
51
- expect(browser.thead(id: 'tax_headers')[0].id).to eq 'thead_row_1'
52
- expect(browser.thead(id: 'tax_headers')[0][1].text).to eq 'Before income tax'
53
- expect(browser.thead(id: 'tax_headers')[0][2].text).to eq 'Income tax'
44
+ it "raises TypeError when 'what' argument is invalid" do
45
+ expect { browser.thead(id: 3.14).exists? }.to raise_error(TypeError)
46
+ expect { browser.table(index: 0).thead(id: 3.14).exists? }.to raise_error(TypeError)
47
+ end
54
48
  end
55
49
 
56
- it 'returns the row at the given index (table context)' do
57
- expect(browser.table(index: 0).thead(id: 'tax_headers')[0].id).to eq 'thead_row_1'
58
- expect(browser.table(index: 0).thead(id: 'tax_headers')[0][1].text).to eq 'Before income tax'
59
- expect(browser.table(index: 0).thead(id: 'tax_headers')[0][2].text).to eq 'Income tax'
50
+ describe '#[]' do
51
+ it 'returns the row at the given index (page context)' do
52
+ expect(browser.thead(id: 'tax_headers')[0].id).to eq 'thead_row_1'
53
+ expect(browser.thead(id: 'tax_headers')[0][1].text).to eq 'Before income tax'
54
+ expect(browser.thead(id: 'tax_headers')[0][2].text).to eq 'Income tax'
55
+ end
56
+
57
+ it 'returns the row at the given index (table context)' do
58
+ expect(browser.table(index: 0).thead(id: 'tax_headers')[0].id).to eq 'thead_row_1'
59
+ expect(browser.table(index: 0).thead(id: 'tax_headers')[0][1].text).to eq 'Before income tax'
60
+ expect(browser.table(index: 0).thead(id: 'tax_headers')[0][2].text).to eq 'Income tax'
61
+ end
60
62
  end
61
- end
62
63
 
63
- describe '#row' do
64
- it 'finds the first row matching the selector' do
65
- row = browser.thead(id: 'tax_headers').row(class: 'dark')
66
- expect(row.id).to eq 'thead_row_1'
64
+ describe '#row' do
65
+ it 'finds the first row matching the selector' do
66
+ row = browser.thead(id: 'tax_headers').row(class: 'dark')
67
+ expect(row.id).to eq 'thead_row_1'
68
+ end
67
69
  end
68
- end
69
70
 
70
- describe '#rows' do
71
- it 'finds rows matching the selector' do
72
- rows = browser.thead(id: 'tax_headers').rows(class: 'dark')
71
+ describe '#rows' do
72
+ it 'finds rows matching the selector' do
73
+ rows = browser.thead(id: 'tax_headers').rows(class: 'dark')
73
74
 
74
- expect(rows.size).to eq 1
75
- expect(rows.first.id).to eq 'thead_row_1'
75
+ expect(rows.size).to eq 1
76
+ expect(rows.first.id).to eq 'thead_row_1'
77
+ end
76
78
  end
77
- end
78
79
 
79
- describe '#strings' do
80
- it 'returns the text of child cells' do
81
- expect(browser.thead(id: 'tax_headers').strings).to eq [
82
- ['', 'Before income tax', 'Income tax', 'After income tax']
83
- ]
80
+ describe '#strings' do
81
+ it 'returns the text of child cells' do
82
+ expect(browser.thead(id: 'tax_headers').strings).to eq [
83
+ ['', 'Before income tax', 'Income tax', 'After income tax']
84
+ ]
85
+ end
84
86
  end
85
87
  end
86
88
  end
@@ -2,68 +2,70 @@
2
2
 
3
3
  require 'watirspec_helper'
4
4
 
5
- describe 'TableHeaders' 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.theads(id: 'tax_headers').to_a).to eq [browser.thead(id: 'tax_headers')]
5
+ module Watir
6
+ describe 'TableHeaders' do
7
+ before do
8
+ browser.goto(WatirSpec.url_for('tables.html'))
13
9
  end
14
- end
15
10
 
16
- describe '#length' do
17
- it 'returns the correct number of table theads (page context)' do
18
- expect(browser.theads.length).to eq 1
11
+ describe 'with selectors' do
12
+ it 'returns the matching elements' do
13
+ expect(browser.theads(id: 'tax_headers').to_a).to eq [browser.thead(id: 'tax_headers')]
14
+ end
19
15
  end
20
16
 
21
- it 'returns the correct number of table theads (table context)' do
22
- expect(browser.table(index: 0).theads.length).to eq 1
23
- end
24
- end
17
+ describe '#length' do
18
+ it 'returns the correct number of table theads (page context)' do
19
+ expect(browser.theads.length).to eq 1
20
+ end
25
21
 
26
- describe '#[]' do
27
- it 'returns the row at the given index (page context)' do
28
- expect(browser.theads[0].id).to eq 'tax_headers'
22
+ it 'returns the correct number of table theads (table context)' do
23
+ expect(browser.table(index: 0).theads.length).to eq 1
24
+ end
29
25
  end
30
26
 
31
- it 'returns the row at the given index (table context)' do
32
- expect(browser.table(index: 0).theads[0].id).to eq 'tax_headers'
33
- end
34
- end
27
+ describe '#[]' do
28
+ it 'returns the row at the given index (page context)' do
29
+ expect(browser.theads[0].id).to eq 'tax_headers'
30
+ end
35
31
 
36
- describe '#each' do
37
- it 'iterates through table theads correctly (page context)' do
38
- browser.theads.each_with_index do |thead, index|
39
- expect(thead.id).to eq browser.thead(index: index).id
32
+ it 'returns the row at the given index (table context)' do
33
+ expect(browser.table(index: 0).theads[0].id).to eq 'tax_headers'
40
34
  end
41
35
  end
42
36
 
43
37
  describe '#each' do
44
38
  it 'iterates through table theads correctly (page context)' do
45
- count = 0
46
-
47
39
  browser.theads.each_with_index do |thead, index|
48
40
  expect(thead.id).to eq browser.thead(index: index).id
49
-
50
- count += 1
51
41
  end
52
-
53
- expect(count).to be > 0
54
42
  end
55
43
 
56
- it 'iterates through table theads correctly (table context)' do
57
- table = browser.table(index: 0)
58
- count = 0
44
+ describe '#each' do
45
+ it 'iterates through table theads correctly (page context)' do
46
+ count = 0
47
+
48
+ browser.theads.each_with_index do |thead, index|
49
+ expect(thead.id).to eq browser.thead(index: index).id
59
50
 
60
- table.theads.each_with_index do |thead, index|
61
- expect(thead.id).to eq table.thead(index: index).id
51
+ count += 1
52
+ end
62
53
 
63
- count += 1
54
+ expect(count).to be > 0
64
55
  end
65
56
 
66
- expect(count).to be > 0
57
+ it 'iterates through table theads correctly (table context)' do
58
+ table = browser.table(index: 0)
59
+ count = 0
60
+
61
+ table.theads.each_with_index do |thead, index|
62
+ expect(thead.id).to eq table.thead(index: index).id
63
+
64
+ count += 1
65
+ end
66
+
67
+ expect(count).to be > 0
68
+ end
67
69
  end
68
70
  end
69
71
  end
@@ -2,65 +2,67 @@
2
2
 
3
3
  require 'watirspec_helper'
4
4
 
5
- describe 'TableRow' do
6
- before :each do
7
- browser.goto(WatirSpec.url_for('tables.html'))
8
- end
9
-
10
- describe '#exists?' do
11
- it 'returns true if the table row exists' do
12
- expect(browser.tr(id: 'outer_first')).to exist
13
- expect(browser.tr(id: /outer_first/)).to exist
14
- expect(browser.tr(index: 0)).to exist
15
- browser.tr(xpath: "//tr[@id='outer_first']")
5
+ module Watir
6
+ describe TableRow do
7
+ before do
8
+ browser.goto(WatirSpec.url_for('tables.html'))
16
9
  end
17
10
 
18
- it 'returns the first row if given no args' do
19
- expect(browser.tr).to exist
20
- end
11
+ describe '#exists?' do
12
+ it 'returns true if the table row exists' do
13
+ expect(browser.tr(id: 'outer_first')).to exist
14
+ expect(browser.tr(id: /outer_first/)).to exist
15
+ expect(browser.tr(index: 0)).to exist
16
+ browser.tr(xpath: "//tr[@id='outer_first']")
17
+ end
21
18
 
22
- it "returns false if the table row doesn't exist" do
23
- expect(browser.tr(id: 'no_such_id')).to_not exist
24
- expect(browser.tr(id: /no_such_id/)).to_not exist
25
- expect(browser.tr(index: 1337)).to_not exist
26
- browser.tr(xpath: "//tr[@id='no_such_id']")
27
- end
19
+ it 'returns the first row if given no args' do
20
+ expect(browser.tr).to exist
21
+ end
22
+
23
+ it "returns false if the table row doesn't exist" do
24
+ expect(browser.tr(id: 'no_such_id')).not_to exist
25
+ expect(browser.tr(id: /no_such_id/)).not_to exist
26
+ expect(browser.tr(index: 1337)).not_to exist
27
+ browser.tr(xpath: "//tr[@id='no_such_id']")
28
+ end
28
29
 
29
- it "raises TypeError when 'what' argument is invalid" do
30
- expect { browser.tr(id: 3.14).exists? }.to raise_error(TypeError)
30
+ it "raises TypeError when 'what' argument is invalid" do
31
+ expect { browser.tr(id: 3.14).exists? }.to raise_error(TypeError)
32
+ end
31
33
  end
32
- end
33
34
 
34
- describe '#[]', except: {browser: :safari, reason: 'Safari does not strip text'} do
35
- let(:table) { browser.table(id: 'outer') }
35
+ describe '#[]', except: {browser: :safari, reason: 'Safari does not strip text'} do
36
+ let(:table) { browser.table(id: 'outer') }
36
37
 
37
- it 'returns the nth cell of the row' do
38
- expect(table[0][0].text).to eq 'Table 1, Row 1, Cell 1'
39
- expect(table[2][0].text).to eq 'Table 1, Row 3, Cell 1'
38
+ it 'returns the nth cell of the row' do
39
+ expect(table[0][0].text).to eq 'Table 1, Row 1, Cell 1'
40
+ expect(table[2][0].text).to eq 'Table 1, Row 3, Cell 1'
41
+ end
40
42
  end
41
- end
42
43
 
43
- describe '#cells' do
44
- let(:table) { browser.table(id: 'outer') }
44
+ describe '#cells' do
45
+ let(:table) { browser.table(id: 'outer') }
45
46
 
46
- it 'returns the correct number of cells' do
47
- expect(table[0].cells.length).to eq 2
48
- expect(table[1].cells.length).to eq 2
49
- expect(table[2].cells.length).to eq 2
50
- end
47
+ it 'returns the correct number of cells' do
48
+ expect(table[0].cells.length).to eq 2
49
+ expect(table[1].cells.length).to eq 2
50
+ expect(table[2].cells.length).to eq 2
51
+ end
51
52
 
52
- it 'finds cells in the table' do
53
- expect(table[0].cells(text: /Table 1/).size).to eq 2
54
- end
53
+ it 'finds cells in the table' do
54
+ expect(table[0].cells(text: /Table 1/).size).to eq 2
55
+ end
55
56
 
56
- it 'does not find cells from nested tables' do
57
- expect(table[1].cell(id: 't2_r1_c1')).to_not exist
58
- expect(table[1].cell(id: /t2_r1_c1/)).to_not exist
59
- end
57
+ it 'does not find cells from nested tables' do
58
+ expect(table[1].cell(id: 't2_r1_c1')).not_to exist
59
+ expect(table[1].cell(id: /t2_r1_c1/)).not_to exist
60
+ end
60
61
 
61
- it 'iterates correctly through the cells of the row' do
62
- browser.table(id: 'outer').tr(index: 1).each_with_index do |cell, idx|
63
- expect(cell.id).to eq "t1_r2_c#{idx + 1}"
62
+ it 'iterates correctly through the cells of the row' do
63
+ browser.table(id: 'outer').tr(index: 1).each_with_index do |cell, idx|
64
+ expect(cell.id).to eq "t1_r2_c#{idx + 1}"
65
+ end
64
66
  end
65
67
  end
66
68
  end