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,110 +2,112 @@
2
2
 
3
3
  require 'watirspec_helper'
4
4
 
5
- describe 'Option' do
6
- before :each do
7
- browser.goto(WatirSpec.url_for('forms_with_input_elements.html'))
8
- end
9
-
10
- describe '#exists?' do
11
- it 'returns true if the element exists (page context)' do
12
- expect(browser.option(id: 'nor')).to exist
13
- expect(browser.option(id: /nor/)).to exist
14
- expect(browser.option(value: '2')).to exist
15
- expect(browser.option(value: /2/)).to exist
16
- expect(browser.option(text: 'Norway')).to exist
17
- expect(browser.option(text: /Norway/)).to exist
18
- expect(browser.option(class: 'scandinavia')).to exist
19
- expect(browser.option(index: 1)).to exist
20
- expect(browser.option(xpath: "//option[@id='nor']")).to exist
5
+ module Watir
6
+ describe Option do
7
+ before do
8
+ browser.goto(WatirSpec.url_for('forms_with_input_elements.html'))
21
9
  end
22
10
 
23
- it 'returns the first option if given no args' do
24
- expect(browser.option).to exist
25
- end
11
+ describe '#exists?' do
12
+ it 'returns true if the element exists (page context)' do
13
+ expect(browser.option(id: 'nor')).to exist
14
+ expect(browser.option(id: /nor/)).to exist
15
+ expect(browser.option(value: '2')).to exist
16
+ expect(browser.option(value: /2/)).to exist
17
+ expect(browser.option(text: 'Norway')).to exist
18
+ expect(browser.option(text: /Norway/)).to exist
19
+ expect(browser.option(class: 'scandinavia')).to exist
20
+ expect(browser.option(index: 1)).to exist
21
+ expect(browser.option(xpath: "//option[@id='nor']")).to exist
22
+ end
26
23
 
27
- it 'returns true if the element exists (select_list context)' do
28
- expect(browser.select_list(name: 'new_user_country').option(id: 'nor')).to exist
29
- expect(browser.select_list(name: 'new_user_country').option(id: /nor/)).to exist
30
- expect(browser.select_list(name: 'new_user_country').option(value: '2')).to exist
31
- expect(browser.select_list(name: 'new_user_country').option(value: /2/)).to exist
32
- expect(browser.select_list(name: 'new_user_country').option(text: 'Norway')).to exist
33
- expect(browser.select_list(name: 'new_user_country').option(text: /Norway/)).to exist
34
- expect(browser.select_list(name: 'new_user_country').option(class: 'scandinavia')).to exist
35
- expect(browser.select_list(name: 'new_user_country').option(index: 1)).to exist
36
- expect(browser.select_list(name: 'new_user_country').option(xpath: "//option[@id='nor']")).to exist
37
- expect(browser.select_list(name: 'new_user_country').option(label: 'Germany')).to exist
38
- end
24
+ it 'returns the first option if given no args' do
25
+ expect(browser.option).to exist
26
+ end
39
27
 
40
- it 'returns false if the element does not exist (page context)' do
41
- expect(browser.option(id: 'no_such_id')).to_not exist
42
- expect(browser.option(id: /no_such_id/)).to_not exist
43
- expect(browser.option(value: 'no_such_value')).to_not exist
44
- expect(browser.option(value: /no_such_value/)).to_not exist
45
- expect(browser.option(text: 'no_such_text')).to_not exist
46
- expect(browser.option(text: /no_such_text/)).to_not exist
47
- expect(browser.option(class: 'no_such_class')).to_not exist
48
- expect(browser.option(index: 1337)).to_not exist
49
- expect(browser.option(xpath: "//option[@id='no_such_id']")).to_not exist
50
- end
28
+ it 'returns true if the element exists (select_list context)' do
29
+ expect(browser.select_list(name: 'new_user_country').option(id: 'nor')).to exist
30
+ expect(browser.select_list(name: 'new_user_country').option(id: /nor/)).to exist
31
+ expect(browser.select_list(name: 'new_user_country').option(value: '2')).to exist
32
+ expect(browser.select_list(name: 'new_user_country').option(value: /2/)).to exist
33
+ expect(browser.select_list(name: 'new_user_country').option(text: 'Norway')).to exist
34
+ expect(browser.select_list(name: 'new_user_country').option(text: /Norway/)).to exist
35
+ expect(browser.select_list(name: 'new_user_country').option(class: 'scandinavia')).to exist
36
+ expect(browser.select_list(name: 'new_user_country').option(index: 1)).to exist
37
+ expect(browser.select_list(name: 'new_user_country').option(xpath: "//option[@id='nor']")).to exist
38
+ expect(browser.select_list(name: 'new_user_country').option(label: 'Germany')).to exist
39
+ end
51
40
 
52
- it 'returns false if the element does not exist (select_list context)' do
53
- expect(browser.select_list(name: 'new_user_country').option(id: 'no_such_id')).to_not exist
54
- expect(browser.select_list(name: 'new_user_country').option(id: /no_such_id/)).to_not exist
55
- expect(browser.select_list(name: 'new_user_country').option(value: 'no_such_value')).to_not exist
56
- expect(browser.select_list(name: 'new_user_country').option(value: /no_such_value/)).to_not exist
57
- expect(browser.select_list(name: 'new_user_country').option(text: 'no_such_text')).to_not exist
58
- expect(browser.select_list(name: 'new_user_country').option(text: /no_such_text/)).to_not exist
59
- expect(browser.select_list(name: 'new_user_country').option(class: 'no_such_class')).to_not exist
60
- expect(browser.select_list(name: 'new_user_country').option(index: 1337)).to_not exist
61
- expect(browser.select_list(name: 'new_user_country').option(xpath: "//option[@id='no_such_id']")).to_not exist
62
- end
41
+ it 'returns false if the element does not exist (page context)' do
42
+ expect(browser.option(id: 'no_such_id')).not_to exist
43
+ expect(browser.option(id: /no_such_id/)).not_to exist
44
+ expect(browser.option(value: 'no_such_value')).not_to exist
45
+ expect(browser.option(value: /no_such_value/)).not_to exist
46
+ expect(browser.option(text: 'no_such_text')).not_to exist
47
+ expect(browser.option(text: /no_such_text/)).not_to exist
48
+ expect(browser.option(class: 'no_such_class')).not_to exist
49
+ expect(browser.option(index: 1337)).not_to exist
50
+ expect(browser.option(xpath: "//option[@id='no_such_id']")).not_to exist
51
+ end
63
52
 
64
- it "raises TypeError when 'what' argument is invalid" do
65
- expect { browser.option(id: 3.14).exists? }.to raise_error(TypeError)
66
- expect { browser.select_list(name: 'new_user_country').option(id: 3.14).exists? }.to raise_error(TypeError)
67
- end
68
- end
53
+ it 'returns false if the element does not exist (select_list context)' do
54
+ expect(browser.select_list(name: 'new_user_country').option(id: 'no_such_id')).not_to exist
55
+ expect(browser.select_list(name: 'new_user_country').option(id: /no_such_id/)).not_to exist
56
+ expect(browser.select_list(name: 'new_user_country').option(value: 'no_such_value')).not_to exist
57
+ expect(browser.select_list(name: 'new_user_country').option(value: /no_such_value/)).not_to exist
58
+ expect(browser.select_list(name: 'new_user_country').option(text: 'no_such_text')).not_to exist
59
+ expect(browser.select_list(name: 'new_user_country').option(text: /no_such_text/)).not_to exist
60
+ expect(browser.select_list(name: 'new_user_country').option(class: 'no_such_class')).not_to exist
61
+ expect(browser.select_list(name: 'new_user_country').option(index: 1337)).not_to exist
62
+ expect(browser.select_list(name: 'new_user_country').option(xpath: "//option[@id='no_such_id']")).not_to exist
63
+ end
69
64
 
70
- describe '#select' do
71
- it 'selects the chosen option (page context)' do
72
- browser.option(text: 'Denmark').select
73
- expect(browser.select_list(name: 'new_user_country').selected_options.map(&:text)).to eq ['Denmark']
65
+ it "raises TypeError when 'what' argument is invalid" do
66
+ expect { browser.option(id: 3.14).exists? }.to raise_error(TypeError)
67
+ expect { browser.select_list(name: 'new_user_country').option(id: 3.14).exists? }.to raise_error(TypeError)
68
+ end
74
69
  end
75
70
 
76
- it 'selects the chosen option (select_list context)' do
77
- browser.select_list(name: 'new_user_country').option(text: 'Denmark').select
78
- expect(browser.select_list(name: 'new_user_country').selected_options.map(&:text)).to eq ['Denmark']
79
- end
71
+ describe '#select' do
72
+ it 'selects the chosen option (page context)' do
73
+ browser.option(text: 'Denmark').select
74
+ expect(browser.select_list(name: 'new_user_country').selected_options.map(&:text)).to eq ['Denmark']
75
+ end
80
76
 
81
- it 'selects the option when found by text (page context)' do
82
- browser.option(text: 'Sweden').select
83
- expect(browser.option(text: 'Sweden')).to be_selected
84
- end
77
+ it 'selects the chosen option (select_list context)' do
78
+ browser.select_list(name: 'new_user_country').option(text: 'Denmark').select
79
+ expect(browser.select_list(name: 'new_user_country').selected_options.map(&:text)).to eq ['Denmark']
80
+ end
85
81
 
86
- it 'selects the option when found by text (select_list context)' do
87
- browser.select_list(name: 'new_user_country').option(text: 'Sweden').select
88
- expect(browser.select_list(name: 'new_user_country').option(text: 'Sweden')).to be_selected
89
- end
82
+ it 'selects the option when found by text (page context)' do
83
+ browser.option(text: 'Sweden').select
84
+ expect(browser.option(text: 'Sweden')).to be_selected
85
+ end
90
86
 
91
- it 'raises UnknownObjectException if the option does not exist (page context)' do
92
- expect { browser.option(text: 'no_such_text').select }.to raise_unknown_object_exception
93
- expect { browser.option(text: /missing/).select }.to raise_unknown_object_exception
94
- end
87
+ it 'selects the option when found by text (select_list context)' do
88
+ browser.select_list(name: 'new_user_country').option(text: 'Sweden').select
89
+ expect(browser.select_list(name: 'new_user_country').option(text: 'Sweden')).to be_selected
90
+ end
91
+
92
+ it 'raises UnknownObjectException if the option does not exist (page context)' do
93
+ expect { browser.option(text: 'no_such_text').select }.to raise_unknown_object_exception
94
+ expect { browser.option(text: /missing/).select }.to raise_unknown_object_exception
95
+ end
95
96
 
96
- it 'raises UnknownObjectException if the option does not exist (select_list context)' do
97
- expect { browser.select_list(name: 'new_user_country').option(text: 'no_such_text').select }
98
- .to raise_unknown_object_exception
99
- expect { browser.select_list(name: 'new_user_country').option(text: /missing/).select }
100
- .to raise_unknown_object_exception
97
+ it 'raises UnknownObjectException if the option does not exist (select_list context)' do
98
+ expect { browser.select_list(name: 'new_user_country').option(text: 'no_such_text').select }
99
+ .to raise_unknown_object_exception
100
+ expect { browser.select_list(name: 'new_user_country').option(text: /missing/).select }
101
+ .to raise_unknown_object_exception
102
+ end
101
103
  end
102
- end
103
104
 
104
- describe '#respond_to?' do
105
- it 'returns true for all attribute methods' do
106
- expect(browser.select_list(name: 'new_user_country').option(text: 'Sweden')).to respond_to(:class_name)
107
- expect(browser.select_list(name: 'new_user_country').option(text: 'Sweden')).to respond_to(:id)
108
- expect(browser.select_list(name: 'new_user_country').option(text: 'Sweden')).to respond_to(:text)
105
+ describe '#respond_to?' do
106
+ it 'returns true for all attribute methods' do
107
+ expect(browser.select_list(name: 'new_user_country').option(text: 'Sweden')).to respond_to(:class_name)
108
+ expect(browser.select_list(name: 'new_user_country').option(text: 'Sweden')).to respond_to(:id)
109
+ expect(browser.select_list(name: 'new_user_country').option(text: 'Sweden')).to respond_to(:text)
110
+ end
109
111
  end
110
112
  end
111
113
  end
@@ -2,99 +2,101 @@
2
2
 
3
3
  require 'watirspec_helper'
4
4
 
5
- describe 'P' 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 'p' exists" do
13
- expect(browser.p(id: 'lead')).to exist
14
- expect(browser.p(id: /lead/)).to exist
15
- expect(browser.p(text: 'Dubito, ergo cogito, ergo sum.')).to exist
16
- expect(browser.p(text: /Dubito, ergo cogito, ergo sum/)).to exist
17
- expect(browser.p(class: 'lead')).to exist
18
- expect(browser.p(class: /lead/)).to exist
19
- expect(browser.p(index: 0)).to exist
20
- expect(browser.p(xpath: "//p[@id='lead']")).to exist
21
- end
22
-
23
- it 'returns the first p if given no args' do
24
- expect(browser.p).to exist
25
- end
26
-
27
- it "returns false if the 'p' doesn't exist" do
28
- expect(browser.p(id: 'no_such_id')).to_not exist
29
- expect(browser.p(id: /no_such_id/)).to_not exist
30
- expect(browser.p(text: 'no_such_text')).to_not exist
31
- expect(browser.p(text: /no_such_text/)).to_not exist
32
- expect(browser.p(class: 'no_such_class')).to_not exist
33
- expect(browser.p(class: /no_such_class/)).to_not exist
34
- expect(browser.p(index: 1337)).to_not exist
35
- expect(browser.p(xpath: "//p[@id='no_such_id']")).to_not exist
36
- end
37
-
38
- it "raises TypeError when 'what' argument is invalid" do
39
- expect { browser.p(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.p(index: 0).id).to eq 'lead'
5
+ module Watir
6
+ describe Paragraph do
7
+ before do
8
+ browser.goto(WatirSpec.url_for('non_control_elements.html'))
47
9
  end
48
10
 
49
- it "returns an empty string if the element exists and the attribute doesn't" do
50
- expect(browser.p(index: 2).id).to eq ''
11
+ # Exists method
12
+ describe '#exist?' do
13
+ it "returns true if the 'p' exists" do
14
+ expect(browser.p(id: 'lead')).to exist
15
+ expect(browser.p(id: /lead/)).to exist
16
+ expect(browser.p(text: 'Dubito, ergo cogito, ergo sum.')).to exist
17
+ expect(browser.p(text: /Dubito, ergo cogito, ergo sum/)).to exist
18
+ expect(browser.p(class: 'lead')).to exist
19
+ expect(browser.p(class: /lead/)).to exist
20
+ expect(browser.p(index: 0)).to exist
21
+ expect(browser.p(xpath: "//p[@id='lead']")).to exist
22
+ end
23
+
24
+ it 'returns the first p if given no args' do
25
+ expect(browser.p).to exist
26
+ end
27
+
28
+ it "returns false if the 'p' doesn't exist" do
29
+ expect(browser.p(id: 'no_such_id')).not_to exist
30
+ expect(browser.p(id: /no_such_id/)).not_to exist
31
+ expect(browser.p(text: 'no_such_text')).not_to exist
32
+ expect(browser.p(text: /no_such_text/)).not_to exist
33
+ expect(browser.p(class: 'no_such_class')).not_to exist
34
+ expect(browser.p(class: /no_such_class/)).not_to exist
35
+ expect(browser.p(index: 1337)).not_to exist
36
+ expect(browser.p(xpath: "//p[@id='no_such_id']")).not_to exist
37
+ end
38
+
39
+ it "raises TypeError when 'what' argument is invalid" do
40
+ expect { browser.p(id: 3.14).exists? }.to raise_error(TypeError)
41
+ end
51
42
  end
52
43
 
53
- it "raises UnknownObjectException if the p doesn't exist" do
54
- expect { browser.p(id: 'no_such_id').id }.to raise_unknown_object_exception
55
- expect { browser.p(index: 1337).id }.to raise_unknown_object_exception
56
- end
57
- end
44
+ # Attribute methods
45
+ describe '#id' do
46
+ it 'returns the id attribute' do
47
+ expect(browser.p(index: 0).id).to eq 'lead'
48
+ end
58
49
 
59
- describe '#title' do
60
- it 'returns the title attribute' do
61
- expect(browser.p(index: 0).title).to eq 'Lorem ipsum'
62
- end
50
+ it "returns an empty string if the element exists and the attribute doesn't" do
51
+ expect(browser.p(index: 2).id).to eq ''
52
+ end
63
53
 
64
- it "returns an empty string if the element exists and the attribute doesn't" do
65
- expect(browser.p(index: 2).title).to eq ''
54
+ it "raises UnknownObjectException if the p doesn't exist" do
55
+ expect { browser.p(id: 'no_such_id').id }.to raise_unknown_object_exception
56
+ expect { browser.p(index: 1337).id }.to raise_unknown_object_exception
57
+ end
66
58
  end
67
59
 
68
- it "raises UnknownObjectException if the p doesn't exist" do
69
- expect { browser.p(id: 'no_such_id').title }.to raise_unknown_object_exception
70
- expect { browser.p(xpath: "//p[@id='no_such_id']").title }.to raise_unknown_object_exception
71
- end
72
- end
60
+ describe '#title' do
61
+ it 'returns the title attribute' do
62
+ expect(browser.p(index: 0).title).to eq 'Lorem ipsum'
63
+ end
73
64
 
74
- describe '#text' do
75
- it 'returns the text of the p' do
76
- msg = 'Sed pretium metus et quam. Nullam odio dolor, vestibulum non, tempor ut, vehicula sed, sapien. ' \
77
- 'Vestibulum placerat ligula at quam. Pellentesque habitant morbi tristique senectus et netus et ' \
78
- 'malesuada fames ac turpis egestas.'
79
- expect(browser.p(index: 1).text).to eq msg
80
- end
65
+ it "returns an empty string if the element exists and the attribute doesn't" do
66
+ expect(browser.p(index: 2).title).to eq ''
67
+ end
81
68
 
82
- it "returns an empty string if the element doesn't contain any text" do
83
- expect(browser.p(index: 4).text).to eq ''
69
+ it "raises UnknownObjectException if the p doesn't exist" do
70
+ expect { browser.p(id: 'no_such_id').title }.to raise_unknown_object_exception
71
+ expect { browser.p(xpath: "//p[@id='no_such_id']").title }.to raise_unknown_object_exception
72
+ end
84
73
  end
85
74
 
86
- it "raises UnknownObjectException if the p doesn't exist" do
87
- expect { browser.p(id: 'no_such_id').text }.to raise_unknown_object_exception
88
- expect { browser.p(xpath: "//p[@id='no_such_id']").text }.to raise_unknown_object_exception
75
+ describe '#text' do
76
+ it 'returns the text of the p' do
77
+ msg = 'Sed pretium metus et quam. Nullam odio dolor, vestibulum non, tempor ut, vehicula sed, sapien. ' \
78
+ 'Vestibulum placerat ligula at quam. Pellentesque habitant morbi tristique senectus et netus et ' \
79
+ 'malesuada fames ac turpis egestas.'
80
+ expect(browser.p(index: 1).text).to eq msg
81
+ end
82
+
83
+ it "returns an empty string if the element doesn't contain any text" do
84
+ expect(browser.p(index: 4).text).to eq ''
85
+ end
86
+
87
+ it "raises UnknownObjectException if the p doesn't exist" do
88
+ expect { browser.p(id: 'no_such_id').text }.to raise_unknown_object_exception
89
+ expect { browser.p(xpath: "//p[@id='no_such_id']").text }.to raise_unknown_object_exception
90
+ end
89
91
  end
90
- end
91
92
 
92
- describe '#respond_to?' do
93
- it 'returns true for all attribute methods' do
94
- expect(browser.p(index: 0)).to respond_to(:class_name)
95
- expect(browser.p(index: 0)).to respond_to(:id)
96
- expect(browser.p(index: 0)).to respond_to(:title)
97
- expect(browser.p(index: 0)).to respond_to(:text)
93
+ describe '#respond_to?' do
94
+ it 'returns true for all attribute methods' do
95
+ expect(browser.p(index: 0)).to respond_to(:class_name)
96
+ expect(browser.p(index: 0)).to respond_to(:id)
97
+ expect(browser.p(index: 0)).to respond_to(:title)
98
+ expect(browser.p(index: 0)).to respond_to(:text)
99
+ end
98
100
  end
99
101
  end
100
102
  end
@@ -2,97 +2,99 @@
2
2
 
3
3
  require 'watirspec_helper'
4
4
 
5
- describe 'Pre' 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 'p' exists" do
13
- expect(browser.pre(id: 'rspec')).to exist
14
- expect(browser.pre(id: /rspec/)).to exist
15
- expect(browser.pre(text: 'browser.pre(id: "rspec").should exist')).to exist
16
- expect(browser.pre(text: /browser\.pre/)).to exist
17
- expect(browser.pre(class: 'ruby')).to exist
18
- expect(browser.pre(class: /ruby/)).to exist
19
- expect(browser.pre(index: 0)).to exist
20
- expect(browser.pre(xpath: "//pre[@id='rspec']")).to exist
21
- end
22
-
23
- it 'returns the first pre if given no args' do
24
- expect(browser.pre).to exist
5
+ module Watir
6
+ describe Pre do
7
+ before do
8
+ browser.goto(WatirSpec.url_for('non_control_elements.html'))
25
9
  end
26
10
 
27
- it "returns false if the 'p' doesn't exist" do
28
- expect(browser.pre(id: 'no_such_id')).to_not exist
29
- expect(browser.pre(id: /no_such_id/)).to_not exist
30
- expect(browser.pre(text: 'no_such_text')).to_not exist
31
- expect(browser.pre(text: /no_such_text/)).to_not exist
32
- expect(browser.pre(class: 'no_such_class')).to_not exist
33
- expect(browser.pre(class: /no_such_class/)).to_not exist
34
- expect(browser.pre(index: 1337)).to_not exist
35
- expect(browser.pre(xpath: "//pre[@id='no_such_id']")).to_not exist
11
+ # Exists method
12
+ describe '#exist?' do
13
+ it "returns true if the 'p' exists" do
14
+ expect(browser.pre(id: 'rspec')).to exist
15
+ expect(browser.pre(id: /rspec/)).to exist
16
+ expect(browser.pre(text: 'browser.pre(id: "rspec").should exist')).to exist
17
+ expect(browser.pre(text: /browser\.pre/)).to exist
18
+ expect(browser.pre(class: 'ruby')).to exist
19
+ expect(browser.pre(class: /ruby/)).to exist
20
+ expect(browser.pre(index: 0)).to exist
21
+ expect(browser.pre(xpath: "//pre[@id='rspec']")).to exist
22
+ end
23
+
24
+ it 'returns the first pre if given no args' do
25
+ expect(browser.pre).to exist
26
+ end
27
+
28
+ it "returns false if the 'p' doesn't exist" do
29
+ expect(browser.pre(id: 'no_such_id')).not_to exist
30
+ expect(browser.pre(id: /no_such_id/)).not_to exist
31
+ expect(browser.pre(text: 'no_such_text')).not_to exist
32
+ expect(browser.pre(text: /no_such_text/)).not_to exist
33
+ expect(browser.pre(class: 'no_such_class')).not_to exist
34
+ expect(browser.pre(class: /no_such_class/)).not_to exist
35
+ expect(browser.pre(index: 1337)).not_to exist
36
+ expect(browser.pre(xpath: "//pre[@id='no_such_id']")).not_to exist
37
+ end
38
+
39
+ it "raises TypeError when 'what' argument is invalid" do
40
+ expect { browser.pre(id: 3.14).exists? }.to raise_error(TypeError)
41
+ end
36
42
  end
37
43
 
38
- it "raises TypeError when 'what' argument is invalid" do
39
- expect { browser.pre(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.pre(class: 'ruby').id).to eq 'rspec'
47
- end
44
+ # Attribute methods
45
+ describe '#id' do
46
+ it 'returns the id attribute' do
47
+ expect(browser.pre(class: 'ruby').id).to eq 'rspec'
48
+ end
48
49
 
49
- it "returns an empty string if the element exists and the attribute doesn't" do
50
- expect(browser.pre(index: 0).id).to eq ''
51
- end
50
+ it "returns an empty string if the element exists and the attribute doesn't" do
51
+ expect(browser.pre(index: 0).id).to eq ''
52
+ end
52
53
 
53
- it "raises UnknownObjectException if the pre doesn't exist" do
54
- expect { browser.pre(id: 'no_such_id').id }.to raise_unknown_object_exception
55
- expect { browser.pre(index: 1337).id }.to raise_unknown_object_exception
54
+ it "raises UnknownObjectException if the pre doesn't exist" do
55
+ expect { browser.pre(id: 'no_such_id').id }.to raise_unknown_object_exception
56
+ expect { browser.pre(index: 1337).id }.to raise_unknown_object_exception
57
+ end
56
58
  end
57
- end
58
59
 
59
- describe '#title' do
60
- it 'returns the title attribute' do
61
- title = 'The brainfuck language is an esoteric programming language noted for its extreme minimalism'
62
- expect(browser.pre(class: 'brainfuck').title).to eq title
63
- end
60
+ describe '#title' do
61
+ it 'returns the title attribute' do
62
+ title = 'The brainfuck language is an esoteric programming language noted for its extreme minimalism'
63
+ expect(browser.pre(class: 'brainfuck').title).to eq title
64
+ end
64
65
 
65
- it "returns an empty string if the element exists and the attribute doesn't" do
66
- expect(browser.pre(index: 0).title).to eq ''
67
- end
66
+ it "returns an empty string if the element exists and the attribute doesn't" do
67
+ expect(browser.pre(index: 0).title).to eq ''
68
+ end
68
69
 
69
- it "raises UnknownObjectException if the pre doesn't exist" do
70
- expect { browser.pre(id: 'no_such_id').title }.to raise_unknown_object_exception
71
- expect { browser.pre(xpath: "//pre[@id='no_such_id']").title }.to raise_unknown_object_exception
70
+ it "raises UnknownObjectException if the pre doesn't exist" do
71
+ expect { browser.pre(id: 'no_such_id').title }.to raise_unknown_object_exception
72
+ expect { browser.pre(xpath: "//pre[@id='no_such_id']").title }.to raise_unknown_object_exception
73
+ end
72
74
  end
73
- end
74
75
 
75
- describe '#text' do
76
- it 'returns the text of the pre' do
77
- expect(browser.pre(class: 'haskell').text).to eq 'main = putStrLn "Hello World"'
78
- end
76
+ describe '#text' do
77
+ it 'returns the text of the pre' do
78
+ expect(browser.pre(class: 'haskell').text).to eq 'main = putStrLn "Hello World"'
79
+ end
79
80
 
80
- it "returns an empty string if the element doesn't contain any text" do
81
- expect(browser.pre(index: 0).text).to eq ''
82
- end
81
+ it "returns an empty string if the element doesn't contain any text" do
82
+ expect(browser.pre(index: 0).text).to eq ''
83
+ end
83
84
 
84
- it "raises UnknownObjectException if the pre doesn't exist" do
85
- expect { browser.pre(id: 'no_such_id').text }.to raise_unknown_object_exception
86
- expect { browser.pre(xpath: "//pre[@id='no_such_id']").text }.to raise_unknown_object_exception
85
+ it "raises UnknownObjectException if the pre doesn't exist" do
86
+ expect { browser.pre(id: 'no_such_id').text }.to raise_unknown_object_exception
87
+ expect { browser.pre(xpath: "//pre[@id='no_such_id']").text }.to raise_unknown_object_exception
88
+ end
87
89
  end
88
- end
89
90
 
90
- describe '#respond_to?' do
91
- it 'returns true for all attribute methods' do
92
- expect(browser.image(index: 0)).to respond_to(:class_name)
93
- expect(browser.image(index: 0)).to respond_to(:id)
94
- expect(browser.image(index: 0)).to respond_to(:title)
95
- expect(browser.image(index: 0)).to respond_to(:text)
91
+ describe '#respond_to?' do
92
+ it 'returns true for all attribute methods' do
93
+ expect(browser.image(index: 0)).to respond_to(:class_name)
94
+ expect(browser.image(index: 0)).to respond_to(:id)
95
+ expect(browser.image(index: 0)).to respond_to(:title)
96
+ expect(browser.image(index: 0)).to respond_to(:text)
97
+ end
96
98
  end
97
99
  end
98
100
  end
@@ -2,39 +2,41 @@
2
2
 
3
3
  require 'watirspec_helper'
4
4
 
5
- describe 'Pres' do
6
- before :each do
7
- browser.goto(WatirSpec.url_for('non_control_elements.html'))
8
- end
5
+ module Watir
6
+ describe PreCollection 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.pres(class: 'c-plus-plus').to_a).to eq [browser.pre(class: 'c-plus-plus')]
11
+ describe 'with selectors' do
12
+ it 'returns the matching elements' do
13
+ expect(browser.pres(class: 'c-plus-plus').to_a).to eq [browser.pre(class: 'c-plus-plus')]
14
+ end
13
15
  end
14
- end
15
16
 
16
- describe '#length' do
17
- it 'returns the number of pres' do
18
- expect(browser.pres.length).to eq 7
17
+ describe '#length' do
18
+ it 'returns the number of pres' do
19
+ expect(browser.pres.length).to eq 7
20
+ end
19
21
  end
20
- end
21
22
 
22
- describe '#[]' do
23
- it 'returns the pre at the given index' do
24
- expect(browser.pres[1].id).to eq 'rspec'
23
+ describe '#[]' do
24
+ it 'returns the pre at the given index' do
25
+ expect(browser.pres[1].id).to eq 'rspec'
26
+ end
25
27
  end
26
- end
27
28
 
28
- describe '#each' do
29
- it 'iterates through pres correctly' do
30
- count = 0
29
+ describe '#each' do
30
+ it 'iterates through pres correctly' do
31
+ count = 0
31
32
 
32
- browser.pres.each_with_index do |p, index|
33
- expect(p.id).to eq browser.pre(index: index).id
34
- count += 1
35
- end
33
+ browser.pres.each_with_index do |p, index|
34
+ expect(p.id).to eq browser.pre(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