page-object 1.2.0 → 1.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 (196) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +22 -12
  3. data/ChangeLog +10 -0
  4. data/Gemfile +4 -2
  5. data/Guardfile +1 -1
  6. data/README.md +2 -2
  7. data/lib/page-object/accessors.rb +57 -35
  8. data/lib/page-object/elements/element.rb +26 -0
  9. data/lib/page-object/locator_generator.rb +46 -0
  10. data/lib/page-object/platforms/selenium_webdriver/element.rb +6 -6
  11. data/lib/page-object/platforms/selenium_webdriver/page_object.rb +14 -0
  12. data/lib/page-object/platforms/watir_webdriver/element.rb +0 -7
  13. data/lib/page-object/platforms/watir_webdriver/page_object.rb +16 -3
  14. data/lib/page-object/version.rb +1 -1
  15. data/page-object.gemspec +7 -10
  16. metadata +34 -375
  17. data/features/area.feature +0 -35
  18. data/features/async.feature +0 -21
  19. data/features/audio.feature +0 -64
  20. data/features/bold.feature +0 -21
  21. data/features/button.feature +0 -98
  22. data/features/canvas.feature +0 -37
  23. data/features/check_box.feature +0 -55
  24. data/features/div.feature +0 -45
  25. data/features/element.feature +0 -343
  26. data/features/file_field.feature +0 -40
  27. data/features/form.feature +0 -43
  28. data/features/frames.feature +0 -75
  29. data/features/generic_elements.feature +0 -29
  30. data/features/gxt_table_extension.feature +0 -23
  31. data/features/headings.feature +0 -97
  32. data/features/hidden_field.feature +0 -45
  33. data/features/html/04-Death_Becomes_Fur.mp4 +0 -0
  34. data/features/html/04-Death_Becomes_Fur.oga +0 -0
  35. data/features/html/async.html +0 -36
  36. data/features/html/double_click.html +0 -13
  37. data/features/html/failure.html +0 -8
  38. data/features/html/frame_1.html +0 -18
  39. data/features/html/frame_2.html +0 -16
  40. data/features/html/frame_3.html +0 -14
  41. data/features/html/frames.html +0 -12
  42. data/features/html/hover.html +0 -12
  43. data/features/html/iframes.html +0 -12
  44. data/features/html/images/circle.png +0 -0
  45. data/features/html/images/img_pulpit.jpg +0 -0
  46. data/features/html/images/submit.gif +0 -0
  47. data/features/html/indexed_property.html +0 -55
  48. data/features/html/modal.html +0 -17
  49. data/features/html/modal_1.html +0 -38
  50. data/features/html/modal_2.html +0 -27
  51. data/features/html/movie.mp4 +0 -0
  52. data/features/html/movie.ogg +0 -0
  53. data/features/html/multi_elements.html +0 -145
  54. data/features/html/nested_elements.html +0 -77
  55. data/features/html/nested_frame_1.html +0 -1
  56. data/features/html/nested_frame_2.html +0 -11
  57. data/features/html/nested_frame_3.html +0 -14
  58. data/features/html/nested_frames.html +0 -10
  59. data/features/html/planets.gif +0 -0
  60. data/features/html/static_elements.html +0 -194
  61. data/features/html/success.html +0 -8
  62. data/features/html/sun.gif +0 -0
  63. data/features/html/sun.html +0 -7
  64. data/features/html/widgets.html +0 -20
  65. data/features/image.feature +0 -50
  66. data/features/indexed_property.feature +0 -117
  67. data/features/italic.feature +0 -21
  68. data/features/javascript.feature +0 -28
  69. data/features/label.feature +0 -46
  70. data/features/link.feature +0 -52
  71. data/features/list_item.feature +0 -36
  72. data/features/modal_dialog.feature +0 -15
  73. data/features/multi_elements.feature +0 -498
  74. data/features/nested_elements.feature +0 -117
  75. data/features/ordered_list.feature +0 -56
  76. data/features/page_level_actions.feature +0 -90
  77. data/features/paragraph.feature +0 -35
  78. data/features/radio_button.feature +0 -58
  79. data/features/radio_button_group.feature +0 -29
  80. data/features/sample-app/public/audio_video.html +0 -23
  81. data/features/sample-app/public/jquery-1.3.2.js +0 -4376
  82. data/features/sample-app/public/jquery.html +0 -30
  83. data/features/sample-app/public/prototype-1.6.0.3.js +0 -4320
  84. data/features/sample-app/public/prototype.html +0 -35
  85. data/features/sample-app/sample_app.rb +0 -35
  86. data/features/section.feature +0 -136
  87. data/features/select_list.feature +0 -86
  88. data/features/span.feature +0 -37
  89. data/features/step_definitions/accessor_steps.rb +0 -64
  90. data/features/step_definitions/area_steps.rb +0 -19
  91. data/features/step_definitions/async_steps.rb +0 -83
  92. data/features/step_definitions/audio_steps.rb +0 -27
  93. data/features/step_definitions/bold_steps.rb +0 -12
  94. data/features/step_definitions/button_steps.rb +0 -48
  95. data/features/step_definitions/canvas_steps.rb +0 -15
  96. data/features/step_definitions/check_box_steps.rb +0 -35
  97. data/features/step_definitions/div_steps.rb +0 -19
  98. data/features/step_definitions/element_steps.rb +0 -294
  99. data/features/step_definitions/file_field_steps.rb +0 -19
  100. data/features/step_definitions/form_steps.rb +0 -19
  101. data/features/step_definitions/frames_steps.rb +0 -159
  102. data/features/step_definitions/generic_element_steps.rb +0 -31
  103. data/features/step_definitions/gxt_table_steps.rb +0 -53
  104. data/features/step_definitions/headings_steps.rb +0 -12
  105. data/features/step_definitions/hidden_field_steps.rb +0 -27
  106. data/features/step_definitions/image_steps.rb +0 -27
  107. data/features/step_definitions/indexed_property_steps.rb +0 -163
  108. data/features/step_definitions/italic_steps.rb +0 -12
  109. data/features/step_definitions/javascript_steps.rb +0 -53
  110. data/features/step_definitions/label_steps.rb +0 -19
  111. data/features/step_definitions/link_steps.rb +0 -40
  112. data/features/step_definitions/list_item_steps.rb +0 -19
  113. data/features/step_definitions/modal_dialog_steps.rb +0 -62
  114. data/features/step_definitions/multi_elements_steps.rb +0 -554
  115. data/features/step_definitions/nested_elements_steps.rb +0 -212
  116. data/features/step_definitions/ordered_list_steps.rb +0 -23
  117. data/features/step_definitions/page_level_actions_steps.rb +0 -135
  118. data/features/step_definitions/page_traversal_steps.rb +0 -8
  119. data/features/step_definitions/paragraph_steps.rb +0 -28
  120. data/features/step_definitions/radio_button_group_steps.rb +0 -36
  121. data/features/step_definitions/radio_button_steps.rb +0 -27
  122. data/features/step_definitions/section_steps.rb +0 -277
  123. data/features/step_definitions/select_list_steps.rb +0 -65
  124. data/features/step_definitions/span_steps.rb +0 -19
  125. data/features/step_definitions/table_cell_steps.rb +0 -15
  126. data/features/step_definitions/table_row_steps.rb +0 -23
  127. data/features/step_definitions/table_steps.rb +0 -70
  128. data/features/step_definitions/text_area_steps.rb +0 -35
  129. data/features/step_definitions/text_field_steps.rb +0 -35
  130. data/features/step_definitions/unordered_list_steps.rb +0 -23
  131. data/features/step_definitions/video_steps.rb +0 -45
  132. data/features/support/ajax_text_environment.rb +0 -26
  133. data/features/support/audio_video_page.rb +0 -24
  134. data/features/support/env.rb +0 -8
  135. data/features/support/hooks.rb +0 -8
  136. data/features/support/page.rb +0 -373
  137. data/features/support/persistent_browser.rb +0 -70
  138. data/features/support/targets/firefox14_osx.rb +0 -6
  139. data/features/support/targets/firefox14_windows7.rb +0 -6
  140. data/features/support/url_helper.rb +0 -61
  141. data/features/table.feature +0 -122
  142. data/features/table_cell.feature +0 -45
  143. data/features/table_row.feature +0 -43
  144. data/features/text_area.feature +0 -51
  145. data/features/text_field.feature +0 -70
  146. data/features/unordered_list.feature +0 -56
  147. data/features/video.feature +0 -69
  148. data/spec/page-object/accessors_spec.rb +0 -40
  149. data/spec/page-object/element_locators_spec.rb +0 -1144
  150. data/spec/page-object/elements/area_spec.rb +0 -45
  151. data/spec/page-object/elements/bold_spec.rb +0 -29
  152. data/spec/page-object/elements/button_spec.rb +0 -64
  153. data/spec/page-object/elements/canvas_spec.rb +0 -41
  154. data/spec/page-object/elements/check_box_spec.rb +0 -49
  155. data/spec/page-object/elements/div_spec.rb +0 -28
  156. data/spec/page-object/elements/element_spec.rb +0 -196
  157. data/spec/page-object/elements/file_field_spec.rb +0 -39
  158. data/spec/page-object/elements/form_spec.rb +0 -28
  159. data/spec/page-object/elements/heading_spec.rb +0 -48
  160. data/spec/page-object/elements/hidden_field_spec.rb +0 -28
  161. data/spec/page-object/elements/image_spec.rb +0 -66
  162. data/spec/page-object/elements/italic_spec.rb +0 -29
  163. data/spec/page-object/elements/label_spec.rb +0 -29
  164. data/spec/page-object/elements/link_spec.rb +0 -49
  165. data/spec/page-object/elements/list_item_spec.rb +0 -29
  166. data/spec/page-object/elements/media_spec.rb +0 -63
  167. data/spec/page-object/elements/nested_element_spec.rb +0 -254
  168. data/spec/page-object/elements/option_spec.rb +0 -11
  169. data/spec/page-object/elements/ordered_list_spec.rb +0 -78
  170. data/spec/page-object/elements/paragraph_spec.rb +0 -27
  171. data/spec/page-object/elements/select_list_spec.rb +0 -142
  172. data/spec/page-object/elements/selenium/radio_button_spec.rb +0 -44
  173. data/spec/page-object/elements/selenium/text_field_spec.rb +0 -49
  174. data/spec/page-object/elements/selenium_element_spec.rb +0 -218
  175. data/spec/page-object/elements/span_spec.rb +0 -26
  176. data/spec/page-object/elements/table_cell_spec.rb +0 -21
  177. data/spec/page-object/elements/table_row_spec.rb +0 -70
  178. data/spec/page-object/elements/table_spec.rb +0 -98
  179. data/spec/page-object/elements/text_area_spec.rb +0 -39
  180. data/spec/page-object/elements/unordered_list_spec.rb +0 -77
  181. data/spec/page-object/elements/video_spec.rb +0 -33
  182. data/spec/page-object/elements/watir_element_spec.rb +0 -193
  183. data/spec/page-object/javascript_framework_facade_spec.rb +0 -61
  184. data/spec/page-object/loads_platform_spec.rb +0 -53
  185. data/spec/page-object/page-object_spec.rb +0 -435
  186. data/spec/page-object/page_factory_spec.rb +0 -238
  187. data/spec/page-object/page_populator_spec.rb +0 -122
  188. data/spec/page-object/page_section_spec.rb +0 -80
  189. data/spec/page-object/platforms/selenium_webdriver/selenium_page_object_spec.rb +0 -68
  190. data/spec/page-object/platforms/selenium_webdriver_spec.rb +0 -29
  191. data/spec/page-object/platforms/watir_webdriver/watir_page_object_spec.rb +0 -29
  192. data/spec/page-object/platforms/watir_webdriver_spec.rb +0 -9
  193. data/spec/page-object/selenium_accessors_spec.rb +0 -628
  194. data/spec/page-object/watir_accessors_spec.rb +0 -1191
  195. data/spec/page-object/widget_spec.rb +0 -226
  196. data/spec/spec_helper.rb +0 -43
@@ -1,11 +0,0 @@
1
- require 'spec_helper'
2
- require 'page-object/elements'
3
-
4
- describe PageObject::Elements::Option do
5
-
6
- describe "interface" do
7
- it "should register as tag_name :option" do
8
- expect(::PageObject::Elements.element_class_for(:option)).to eql ::PageObject::Elements::Option
9
- end
10
- end
11
- end
@@ -1,78 +0,0 @@
1
- require 'spec_helper'
2
- require 'page-object/elements'
3
-
4
- describe PageObject::Elements::OrderedList do
5
- let(:ol) { PageObject::Elements::OrderedList }
6
-
7
- describe "when mapping how to find an element" do
8
- it "should map watir types to same" do
9
- [:class, :id, :index, :xpath].each do |t|
10
- identifier = ol.watir_identifier_for t => 'value'
11
- expect(identifier.keys.first).to eql t
12
- end
13
- end
14
-
15
- it "should map selenium types to same" do
16
- [:class, :id, :index, :name, :xpath].each do |t|
17
- key, value = ol.selenium_identifier_for t => 'value'
18
- expect(key).to eql t
19
- end
20
- end
21
- end
22
-
23
- describe "interface" do
24
- let(:ol_element) { double('ol_element') }
25
-
26
- it "should register as tag_name :ol" do
27
- expect(::PageObject::Elements.element_class_for(:ol)).to eql ::PageObject::Elements::OrderedList
28
- end
29
-
30
- context "for watir" do
31
- it "should return a list item when indexed" do
32
- ol = PageObject::Elements::OrderedList.new(ol_element, :platform => :watir_webdriver)
33
- expect(ol_element).to receive(:ols).
34
- and_return([ol_element, ol_element])
35
- ol[1]
36
- end
37
-
38
- it "should know how many list items it contains" do
39
- ol = PageObject::Elements::OrderedList.new(ol_element, :platform => :watir_webdriver)
40
- expect(ol_element).to receive(:ols).and_return([ol_element])
41
- expect(ol.items).to eql 1
42
- end
43
-
44
- it "should iterate over the list items" do
45
- ol = PageObject::Elements::OrderedList.new(ol_element, :platform => :watir_webdriver)
46
- expect(ol).to receive(:items).and_return(5)
47
- allow(ol).to receive(:[])
48
- count = 0
49
- ol.each { |item| count += 1 }
50
- expect(count).to eql 5
51
- end
52
- end
53
-
54
- context "for selenium" do
55
- it "should return a list item when indexed" do
56
- ol = PageObject::Elements::OrderedList.new(ol_element, :platform => :selenium_webdriver)
57
- expect(ol_element).to receive(:find_elements).
58
- and_return([ol_element, ol_element])
59
- ol[1]
60
- end
61
-
62
- it "should know how many list items it contains" do
63
- ol = PageObject::Elements::OrderedList.new(ol_element, :platform => :selenium_webdriver)
64
- expect(ol_element).to receive(:find_elements).and_return([ol_element])
65
- expect(ol.items).to eql 1
66
- end
67
-
68
- it "should iterate over the list items" do
69
- ol = PageObject::Elements::OrderedList.new(ol_element, :platform => :selenium_webdriver)
70
- expect(ol).to receive(:items).and_return(5)
71
- allow(ol).to receive(:[])
72
- count = 0
73
- ol.each { |item| count += 1 }
74
- expect(count).to eql 5
75
- end
76
- end
77
- end
78
- end
@@ -1,27 +0,0 @@
1
- require 'spec_helper'
2
- require 'page-object/elements'
3
-
4
- describe PageObject::Elements::Paragraph do
5
- let(:paragraph) { PageObject::Elements::Paragraph }
6
-
7
- describe "when mapping how to find an element" do
8
- it "should map watir types to same" do
9
- [:class, :id, :index, :name, :xpath].each do |t|
10
- identifier = paragraph.watir_identifier_for t => 'value'
11
- expect(identifier.keys.first).to eql t
12
- end
13
- end
14
- it "should map selenium types to same" do
15
- [:class, :id, :name, :xpath, :index].each do |t|
16
- key, value = paragraph.selenium_identifier_for t => 'value'
17
- expect(key).to eql t
18
- end
19
- end
20
- end
21
-
22
- describe "interface" do
23
- it "should register with type :checkbox" do
24
- expect(::PageObject::Elements.element_class_for(:p)).to eql ::PageObject::Elements::Paragraph
25
- end
26
- end
27
- end
@@ -1,142 +0,0 @@
1
- require 'spec_helper'
2
- require 'page-object/elements'
3
-
4
- describe PageObject::Elements::SelectList do
5
- let(:selectlist) { PageObject::Elements::SelectList }
6
-
7
- describe "when mapping how to find an element" do
8
- it "should map watir types to same" do
9
- [:class, :id, :index, :name, :text, :value, :xpath].each do |t|
10
- identifier = selectlist.watir_identifier_for t => 'value'
11
- expect(identifier.keys.first).to eql t
12
- end
13
- end
14
-
15
- it "should map selenium types to same" do
16
- [:class, :id, :name, :xpath, :index].each do |t|
17
- key, value = selectlist.selenium_identifier_for t => 'value'
18
- expect(key).to eql t
19
- end
20
- end
21
- end
22
-
23
- describe "interface" do
24
- let(:sel_list) { double('select_list') }
25
- let(:opts) { [sel_list, sel_list] }
26
-
27
- before(:each) do
28
- allow(sel_list).to receive(:find_elements).and_return(sel_list)
29
- allow(sel_list).to receive(:each)
30
- allow(sel_list).to receive(:wd).and_return(sel_list)
31
- allow(sel_list).to receive(:map).and_return(opts)
32
- allow(sel_list).to receive(:any?)
33
- allow(sel_list).to receive(:include?)
34
- allow(sel_list).to receive(:select).and_return(opts)
35
- allow(sel_list).to receive(:text).and_return('blah')
36
- end
37
-
38
- it "should register with tag_name :select" do
39
- expect(::PageObject::Elements.element_class_for(:select)).to eql ::PageObject::Elements::SelectList
40
- end
41
-
42
- context "for watir" do
43
- let(:watir_sel_list) { PageObject::Elements::SelectList.new(sel_list, :platform => :watir_webdriver) }
44
-
45
- it "should return an option when indexed" do
46
- expect(sel_list).to receive(:options).with(no_args).and_return(opts)
47
- expect(watir_sel_list[0]).to be_instance_of PageObject::Elements::Option
48
- end
49
-
50
- it "should return an array of options" do
51
- expect(sel_list).to receive(:options).with(no_args).and_return(opts)
52
- expect(watir_sel_list.options.size).to eql 2
53
- end
54
-
55
- it "should return an array of selected options" do
56
- allow(sel_list).to receive(:selected_options).and_return(opts)
57
- allow(sel_list).to receive(:text).and_return(sel_list)
58
- expect(watir_sel_list.selected_options).to eql opts
59
- end
60
-
61
- it "should know if it includes some value" do
62
- allow(sel_list).to receive(:include?).with('blah').and_return(true)
63
- watir_sel_list.include?('blah')
64
- end
65
-
66
- it "should know if an option is selected" do
67
- allow(sel_list).to receive(:selected?).with('blah').and_return(true)
68
- watir_sel_list.selected?('blah')
69
- end
70
-
71
- it "should be able to get the value for the selected options" do
72
- allow(sel_list).to receive(:selected_options).and_return(opts)
73
- allow(sel_list).to receive(:value).and_return(sel_list)
74
- expect(watir_sel_list.selected_values).to eql opts
75
- end
76
- end
77
-
78
- context "for selenium" do
79
- let(:selenium_sel_list) { PageObject::Elements::SelectList.new(sel_list, :platform => :selenium_webdriver) }
80
-
81
- it "should return an option when indexed" do
82
- expect(sel_list).to receive(:find_elements).with(:xpath, ".//child::option").and_return(opts)
83
- expect(selenium_sel_list[1]).to be_instance_of PageObject::Elements::Option
84
- end
85
-
86
- it "should return an array of options" do
87
- expect(sel_list).to receive(:find_elements).with(:xpath, ".//child::option").and_return(opts)
88
- expect(selenium_sel_list.options.size).to eql 2
89
- end
90
-
91
- it "should select an element" do
92
- option = double('option')
93
- expect(sel_list).to receive(:find_elements).with(:xpath, ".//child::option").and_return([option])
94
- expect(option).to receive(:text).and_return('something')
95
- expect(option).to receive(:click)
96
- selenium_sel_list.select 'something'
97
- end
98
-
99
- it "should return an array of selected options" do
100
- expect(sel_list).to receive(:find_elements).with(:xpath, ".//child::option").and_return(opts)
101
- expect(opts[0]).to receive(:selected?).and_return(true)
102
- expect(opts[0]).to receive(:text).and_return('test1')
103
- expect(opts[1]).to receive(:selected?).and_return(false)
104
- selected = selenium_sel_list.selected_options
105
- expect(selected.size).to eql 1
106
- expect(selected[0]).to eql 'test1'
107
- end
108
-
109
- it "should return an array of selected options" do
110
- expect(sel_list).to receive(:find_elements).with(:xpath, ".//child::option").and_return(opts)
111
- expect(opts[0]).to receive(:selected?).and_return(true)
112
- expect(opts[0]).to receive(:attribute).and_return('test1')
113
- expect(opts[1]).to receive(:selected?).and_return(false)
114
- selected = selenium_sel_list.selected_values
115
- expect(selected.size).to eql 1
116
- expect(selected[0]).to eql 'test1'
117
- end
118
-
119
- it "should know if it includes some value" do
120
- expect(sel_list).to receive(:find_elements).and_return(opts)
121
- expect(opts[0]).to receive(:text).and_return('blah')
122
- expect(selenium_sel_list).to include 'blah'
123
- end
124
-
125
- it "should know if an option is selected" do
126
- expect(sel_list).to receive(:find_elements).and_return(opts)
127
- expect(opts[0]).to receive(:selected?).twice.and_return(true)
128
- expect(opts[0]).to receive(:text).and_return('blah')
129
- expect(selenium_sel_list.selected?('blah')).to be true
130
- end
131
-
132
- it "should be able to clear selected options" do
133
- expect(sel_list).to receive(:find_elements).and_return(opts)
134
- opts.each do |opt|
135
- expect(opt).to receive(:selected?).and_return(true)
136
- expect(opt).to receive(:click)
137
- end
138
- selenium_sel_list.clear
139
- end
140
- end
141
- end
142
- end
@@ -1,44 +0,0 @@
1
- require 'spec_helper'
2
- require 'page-object/elements'
3
-
4
- describe PageObject::Elements::RadioButton do
5
- let(:radiobutton) { PageObject::Elements::RadioButton }
6
-
7
- describe "when mapping how to find an element" do
8
- it "should map watir types to same" do
9
- [:class, :id, :index, :name, :value, :xpath].each do |t|
10
- identifier = radiobutton.watir_identifier_for t => 'value'
11
- expect(identifier.keys.first).to eql t
12
- end
13
- end
14
- it "should map selenium types to same" do
15
- [:class, :id, :name, :xpath, :value, :index].each do |t|
16
- key, value = radiobutton.selenium_identifier_for t => 'value'
17
- expect(key).to eql t
18
- end
19
- end
20
- end
21
-
22
- describe "interface" do
23
-
24
- it "should register as type :radio" do
25
- expect(::PageObject::Elements.element_class_for(:input, :radio)).to eql ::PageObject::Elements::RadioButton
26
- end
27
-
28
- context "for selenium" do
29
- let(:selenium_rb) { double('radio_button') }
30
- let(:radio_button) { PageObject::Elements::RadioButton.new(selenium_rb, :platform => :selenium_webdriver) }
31
-
32
- it "should select" do
33
- expect(selenium_rb).to receive(:click)
34
- expect(selenium_rb).to receive(:selected?).and_return(false)
35
- radio_button.select
36
- end
37
-
38
- it "should know if it is selected" do
39
- expect(selenium_rb).to receive(:selected?).and_return(true)
40
- expect(radio_button).to be_selected
41
- end
42
- end
43
- end
44
- end
@@ -1,49 +0,0 @@
1
- require 'spec_helper'
2
- require 'page-object/elements'
3
-
4
- describe PageObject::Elements::TextField do
5
-
6
- describe "when mapping how to find an element" do
7
- let(:textfield) { PageObject::Elements::TextField }
8
-
9
- it "should map watir types to same" do
10
- [:class, :id, :index, :name, :title, :xpath, :text, :label].each do |t|
11
- identifier = textfield.watir_identifier_for t => 'value'
12
- expect(identifier.keys.first).to eql t
13
- end
14
- end
15
-
16
- it "should map selenium types to same" do
17
- [:class, :id, :name, :title, :xpath, :index, :text, :label].each do |t|
18
- key, value = textfield.selenium_identifier_for t => 'value'
19
- expect(key).to eql t
20
- end
21
- end
22
- end
23
-
24
- describe "interface" do
25
- let(:text_field_element) { double('text_field') }
26
- let(:selenium_text_field) { PageObject::Elements::TextField.new(text_field_element, :platform => :selenium_webdriver) }
27
-
28
- it "should register with type :text" do
29
- expect(::PageObject::Elements.element_class_for(:input, :text)).to eql ::PageObject::Elements::TextField
30
- end
31
-
32
- it "should register with type :password" do
33
- expect(::PageObject::Elements.element_class_for(:input, :password)).to eql ::PageObject::Elements::TextField
34
- end
35
-
36
- it "should append text" do
37
- expect(text_field_element).to receive(:send_keys).with('abc')
38
- selenium_text_field.append('abc')
39
- end
40
-
41
- context "for selenium" do
42
- it "should set its' value" do
43
- expect(text_field_element).to receive(:clear)
44
- expect(text_field_element).to receive(:send_keys).with('Joseph')
45
- selenium_text_field.value = 'Joseph'
46
- end
47
- end
48
- end
49
- end
@@ -1,218 +0,0 @@
1
- require 'spec_helper'
2
- require 'page-object/elements'
3
- require 'selenium-webdriver'
4
-
5
-
6
- describe "Element for Selenium" do
7
- before(:each) do
8
- @selenium_driver = double('selenium')
9
- @selenium_element = ::PageObject::Elements::Element.new(@selenium_driver, :platform => :selenium_webdriver)
10
- end
11
-
12
- it "should know when it is visible" do
13
- expect(@selenium_driver).to receive(:displayed?).and_return(true)
14
- expect(@selenium_element.visible?).to be true
15
- end
16
-
17
- it "should know when it is not visible" do
18
- expect(@selenium_driver).to receive(:displayed?).and_return(false)
19
- expect(@selenium_element.visible?).to eql false
20
- end
21
-
22
- it "should know when it exists" do
23
- expect(@selenium_driver).to receive(:nil?).and_return(false)
24
- expect(@selenium_element.exists?).to eql true
25
- end
26
-
27
- it "should know when it does not exist" do
28
- @selenium_element = ::PageObject::Elements::Element.new(nil, :platform => :selenium_webdriver)
29
- expect(@selenium_element.exists?).to eql false
30
- end
31
-
32
- it "should flash an element" do
33
- bridge = double('bridge')
34
- expect(@selenium_driver).to receive(:attribute).and_return('blue')
35
- expect(@selenium_driver).to receive(:instance_variable_get).and_return(bridge)
36
- expect(bridge).to receive(:executeScript).exactly(10).times
37
- @selenium_element.flash
38
- end
39
-
40
- it "should be able to return the text contained in the element" do
41
- expect(@selenium_driver).to receive(:text).and_return("my text")
42
- expect(@selenium_element.text).to eql "my text"
43
- end
44
-
45
- it "should know when it is equal to another" do
46
- expect(@selenium_driver).to receive(:==).and_return(true)
47
- expect(@selenium_element).to eq @selenium_element
48
- end
49
-
50
- it "should know when it is not equal to another" do
51
- expect(@selenium_element).not_to eq 'not an element'
52
- end
53
-
54
- it "should return its tag name" do
55
- expect(@selenium_driver).to receive(:tag_name).and_return("h1")
56
- expect(@selenium_element.tag_name).to eql "h1"
57
- end
58
-
59
- it "should know its value" do
60
- expect(@selenium_driver).to receive(:attribute).with('value').and_return("value")
61
- expect(@selenium_element.value).to eql "value"
62
- end
63
-
64
- it "should know how to retrieve the value of an attribute" do
65
- expect(@selenium_driver).to receive(:attribute).and_return(true)
66
- expect(@selenium_element.attribute('readonly')).to be true
67
- end
68
-
69
- it "should be clickable" do
70
- expect(@selenium_driver).to receive(:click)
71
- @selenium_element.click
72
- end
73
-
74
- it "should be double clickable" do
75
- expect(Selenium::WebDriver::Mouse).to receive(:new).and_return(@selenium_driver)
76
- expect(@selenium_driver).to receive(:double_click)
77
- @selenium_element.double_click
78
- end
79
-
80
- it "should be right clickable" do
81
- expect(@selenium_driver).to receive(:context_click)
82
- @selenium_element.right_click
83
- end
84
-
85
- it "should be able to block until it is present" do
86
- wait = double('wait')
87
- expect(::Selenium::WebDriver::Wait).to receive(:new).and_return(wait)
88
- expect(wait).to receive(:until)
89
- @selenium_element.when_present(10)
90
- end
91
-
92
- it "should return the element when it is present" do
93
- wait = double('wait')
94
- expect(::Selenium::WebDriver::Wait).to receive(:new).and_return(wait)
95
- expect(wait).to receive(:until)
96
- element = @selenium_element.when_present(10)
97
- expect(element).to equal @selenium_element
98
- end
99
-
100
- it "should return when an element is not present" do
101
- wait = double('wait')
102
- expect(::Selenium::WebDriver::Wait).to receive(:new).and_return(wait)
103
- expect(wait).to receive(:until)
104
- @selenium_element.when_not_present
105
- end
106
-
107
- it "should be able to block until it is visible" do
108
- wait = double('wait')
109
- expect(::Selenium::WebDriver::Wait).to receive(:new).and_return(wait)
110
- expect(wait).to receive(:until)
111
- @selenium_element.when_visible(10)
112
- end
113
-
114
- it "should return the element when it is visible" do
115
- wait = double('wait')
116
- expect(::Selenium::WebDriver::Wait).to receive(:new).and_return(wait)
117
- expect(wait).to receive(:until)
118
- element = @selenium_element.when_visible(10)
119
- expect(element).to equal @selenium_element
120
- end
121
-
122
- it "should be able to block until it is not visible" do
123
- wait = double('wait')
124
- expect(::Selenium::WebDriver::Wait).to receive(:new).and_return(wait)
125
- expect(wait).to receive(:until)
126
- @selenium_element.when_not_visible(10)
127
- end
128
-
129
- it "should return the element when it is not visible" do
130
- wait = double('wait')
131
- expect(::Selenium::WebDriver::Wait).to receive(:new).and_return(wait)
132
- expect(wait).to receive(:until)
133
- element = @selenium_element.when_not_visible(10)
134
- expect(element).to equal @selenium_element
135
- end
136
-
137
- it "should be able to block until a user define event fires true" do
138
- wait = double('wait')
139
- expect(::Selenium::WebDriver::Wait).to receive(:new).and_return(wait)
140
- expect(wait).to receive(:until)
141
- @selenium_element.wait_until(10, "Element blah") {}
142
- end
143
-
144
- it "should send keys to the element" do
145
- expect(@selenium_driver).to receive(:send_keys).with([:control, 'a'])
146
- @selenium_element.send_keys([:control, 'a'])
147
- end
148
-
149
- it "should clear its' contents" do
150
- expect(@selenium_driver).to receive(:clear)
151
- @selenium_element.clear
152
- end
153
-
154
- it "should fire an event" do
155
- expect(@selenium_driver).to receive(:instance_variable_get).with(:@bridge).and_return(@selenium_driver)
156
- expect(@selenium_driver).to receive(:executeScript)
157
- @selenium_element.fire_event('onfocus')
158
- end
159
-
160
- it "should find the parent element" do
161
- expect(@selenium_driver).to receive(:instance_variable_get).with(:@bridge).and_return(@selenium_driver)
162
- expect(@selenium_driver).to receive(:executeScript).and_return(@selenium_driver)
163
- expect(@selenium_driver).to receive(:tag_name).twice.and_return(:div)
164
- @selenium_element.parent
165
- end
166
-
167
- it "should set the focus" do
168
- expect(@selenium_driver).to receive(:instance_variable_get).and_return(@selenium_driver)
169
- expect(@selenium_driver).to receive(:executeScript)
170
- @selenium_element.focus
171
- end
172
-
173
- it "should scroll into view" do
174
- expect(@selenium_driver).to receive(:location_once_scrolled_into_view)
175
- @selenium_element.scroll_into_view
176
- end
177
-
178
- it "should have a location" do
179
- expect(@selenium_driver).to receive(:location)
180
- @selenium_element.location
181
- end
182
-
183
- it "should have a size" do
184
- expect(@selenium_driver).to receive(:size)
185
- @selenium_element.size
186
- end
187
-
188
- it "should have a height" do
189
- expect(@selenium_driver).to receive(:size).and_return({'width' => 30, 'height' => 20})
190
- expect(@selenium_element.height).to eql 20
191
- end
192
-
193
- it "should have a width" do
194
- expect(@selenium_driver).to receive(:size).and_return({'width' => 30, 'height' => 20})
195
- expect(@selenium_element.width).to eql 30
196
- end
197
-
198
- it "should have a centre" do
199
- expect(@selenium_driver).to receive(:location).and_return({'y' => 80, 'x' => 40})
200
- expect(@selenium_driver).to receive(:size).and_return({'width' => 30, 'height' => 20})
201
- expect(@selenium_element.centre).to include(
202
- 'y' => 90,
203
- 'x' => 55
204
- )
205
- end
206
-
207
- it "should have a centre greater than y position" do
208
- expect(@selenium_driver).to receive(:location).and_return({'y' => 80, 'x' => 40}).twice
209
- expect(@selenium_driver).to receive(:size).and_return({'width' => 30, 'height' => 20})
210
- expect(@selenium_element.centre['y']).to be > @selenium_element.location['y']
211
- end
212
-
213
- it "should have a centre greater than x position" do
214
- expect(@selenium_driver).to receive(:location).and_return({'y' => 80, 'x' => 40}).twice
215
- expect(@selenium_driver).to receive(:size).and_return({'width' => 30, 'height' => 20})
216
- expect(@selenium_element.centre['x']).to be > @selenium_element.location['x']
217
- end
218
- end