page-object 1.2.0 → 1.2.1

Sign up to get free protection for your applications and to get access to all the features.
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