page_object_wrapper 1.1.1 → 1.1.2

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.
data/README.md CHANGED
@@ -82,6 +82,8 @@ where required attributes are marked with (*)
82
82
  textarea(:id => 'f2').set data
83
83
  end
84
84
 
85
+ action_alias(:fill_textarea_alias, :some_test_page){ action :fill_textarea }
86
+
85
87
  table(:table_without_header) do
86
88
  locator :summary => 'Each row names a Nordic country and specifies its total area and land area, in square kilometers'
87
89
  end
@@ -139,46 +141,49 @@ Defined elements can be accessed with their labels.
139
141
  *preconditions*
140
142
  **tp** is a :some\_test\_page object opened in the browser
141
143
 
142
- context "argument = :fresh_food" do
143
- it "populates all xxx elements with :fresh_food" do
144
+ context "argument = :fresh_food":
145
+ it "populates all xxx elements with :fresh_food":
144
146
  tp = PageObjectWrapper.current_page
145
147
  tp.feed_test_elements(:fresh_food)
146
- end
147
- end
148
148
 
149
- context "argument = nil" do
150
- it "populates all xxx elements with :fresh_food" do
149
+ context "argument = nil":
150
+ it "populates all xxx elements with :fresh_food":
151
151
  tp = PageObjectWrapper.current_page
152
152
  tp.feed_test_elements
153
- end
154
- end
155
153
 
156
- context "argument = :missing_food" do
157
- it "populates all xxx elements with :missing_food" do
154
+ context "argument = :missing_food":
155
+ it "populates all xxx elements with :missing_food":
158
156
  tp = PageObjectWrapper.open_page(:some_test_page)
159
157
  tp.feed_test_elements(:missing_food)
160
- end
161
- end
158
+
159
+ context "xxx is alias":
160
+ it "executes corresponding action":
161
+ tp = PageObjectWrapper.open_page(:some_test_page)
162
+ tp.fire_fill_textarea_alias
163
+ @b.textarea(:id => 'f2').value.should eq('Default data')
162
164
 
163
165
 
164
166
  #### fire\_xxx
165
167
  *preconditions*
166
168
  **tp** is a :some\_test\_page object opened in the browser
167
169
 
168
- it "executes fire_block in Watir::Browser context" do
170
+ it "executes fire_block in Watir::Browser context":
169
171
  tp = PageObjectWrapper.open_page(:some_test_page)
170
172
  tp.fire_fill_textarea
171
- end
172
173
 
173
- it "can be invoked with parameters" do
174
+ it "can be invoked with parameters":
174
175
  tp = PageObjectWrapper.current_page
175
176
  tp.fire_fill_textarea('User defined data')
176
- end
177
177
 
178
- it "returns next_page" do
178
+ it "returns next_page":
179
179
  tp = PageObjectWrapper.current_page
180
180
  np = tp.fire_press_cool_button
181
- end
181
+
182
+ context "xxx is alias":
183
+ it "executes corresponding action":
184
+ tp = PageObjectWrapper.open_page(:some_test_page)
185
+ tp.fire_fill_textarea_alias
186
+ @b.textarea(:id => 'f2').value.should eq('Default data')
182
187
 
183
188
  #### select\_from\_xxx
184
189
  *preconditions*
@@ -189,36 +194,27 @@ correct arguments are:
189
194
  :column1 is a column value from which you want to receive
190
195
  :column2 is a column which is used to get specific row
191
196
 
192
- context "where == nil" do
193
- it "returns last row value from provided column" do
197
+ context "where == nil":
198
+ it "returns last row value from provided column":
194
199
  tp.select_from_table_without_header(:column_0).text.should eq 'Sweden'
195
200
  tp.select_from_table_without_header(:column_1).text.should eq '449,964'
196
201
  tp.select_from_table_without_header(:column_2).text.should eq '410,928'
197
- end
198
- end
199
202
 
200
- context "where not nil" do
201
- context "found by String" do
202
- it "returns found cells" do
203
+ context "where not nil":
204
+ context "found by String":
205
+ it "returns found cells":
203
206
  tp.select_from_table_without_header(:column_0, :column_1 => '103,000').text.should eq 'Iceland'
204
207
  tp.select_from_table_with_header(:country, :total_area => '337,030').text.should eq 'Finland'
205
- end
206
- it "returns nil" do
208
+ it "returns nil":
207
209
  tp.select_from_table_without_header(:column_0, :column_1 => '123').should eq nil
208
210
  tp.select_from_table_with_header(:country, :total_area => '123').should eq nil
209
- end
210
- end
211
- context "found by Regexp" do
212
- it "returns found cells" do
211
+ context "found by Regexp":
212
+ it "returns found cells":
213
213
  tp.select_from_table_without_header(:column_0, :column_1 => /103/).text.should eq 'Iceland'
214
214
  tp.select_from_table_with_header(:country, :total_area => /337/).text.should eq 'Finland'
215
- end
216
- it "returns nil" do
215
+ it "returns nil":
217
216
  tp.select_from_table_without_header(:column_0, :column_1 => /123/).should eq nil
218
217
  tp.select_from_table_with_header(:country, :total_area => /123/).should eq nil
219
- end
220
- end
221
- end
222
218
 
223
219
  #### each\_xxx
224
220
  TODO
@@ -1,4 +1,3 @@
1
- require 'page_object_wrapper'
2
1
  PageObjectWrapper.define_page(:another_test_page) do
3
2
  locator 'http://www.cs.tut.fi/~jkorpela/www/testel.html'
4
3
  uniq_h1 :text => 'Testing display of HTML elements'
@@ -0,0 +1,4 @@
1
+ PageObjectWrapper.define_page(:google_page) do
2
+ locator 'google.com'
3
+ uniq_input :id => 'gbqfq'
4
+ end
@@ -0,0 +1,4 @@
1
+ PageObjectWrapper.define_page(:wrong_google_page) do
2
+ locator 'google.com'
3
+ uniq_element :id => 'foobar'
4
+ end
@@ -0,0 +1,4 @@
1
+ PageObjectWrapper.define_page(:google_as_page) do
2
+ locator '/advanced_search'
3
+ uniq_text_field :name => 'as_q'
4
+ end
@@ -1,4 +1,3 @@
1
- require 'page_object_wrapper'
2
1
  PageObjectWrapper.define_page(:some_test_page) do
3
2
  locator 'http://www.cs.tut.fi/~jkorpela/www/testel.html'
4
3
  uniq_h1 :text => 'Testing display of HTML elements'
@@ -1,4 +1,3 @@
1
- require 'page_object_wrapper'
2
1
  PageObjectWrapper.define_page(:test_page_with_table) do
3
2
  locator 'http://www.cs.tut.fi/cgi-bin/run/~jkorpela/echo.cgi?hidden+field=42&foo=bar&text=Default+text.&textarea=Default+text.%0D%0A&radio=2&checkbox2=on&select1=two+%28default%29&select2=two+%28default%29'
4
3
  uniq_h1 :text => 'Echoing submitted form data'
Binary file
@@ -16,6 +16,7 @@ class PageObject < DslElementWithLocator
16
16
  @@pages = []
17
17
  @@current_page = nil
18
18
 
19
+ UNIQ_ELEMENT_WAIT_PERIOD = 10
19
20
  FOOD_TYPES = [:missing_food, :fresh_food]
20
21
  FEED_ALL = Regexp.new(/^feed_all$/)
21
22
  FEED_SET = Regexp.new(/^feed_([\w_]+)$/)
@@ -26,7 +27,7 @@ class PageObject < DslElementWithLocator
26
27
 
27
28
  def initialize(label)
28
29
  super label
29
- @uniq_element_type = 'element'
30
+ @uniq_element_type = nil
30
31
  @uniq_element_hash = {}
31
32
  @esets = []
32
33
  @elements = []
@@ -136,8 +137,14 @@ class PageObject < DslElementWithLocator
136
137
  raise PageObjectWrapper::BrowserNotFound if @@browser.nil?
137
138
  raise PageObjectWrapper::UnknownPageObject, label if not @@pages.collect(&:label_value).include?(label)
138
139
  page_object = PageObject.find_page_object(label)
139
- watir_uniq_element = @@browser.send page_object.uniq_element_type, page_object.uniq_element_hash
140
- raise PageObjectWrapper::UnmappedPageObject, "#{label} <=> #{@@browser.url}" if not watir_uniq_element.present?
140
+ if not page_object.uniq_element_type.nil?
141
+ watir_uniq_element = @@browser.send page_object.uniq_element_type, page_object.uniq_element_hash
142
+ begin
143
+ watir_uniq_element.wait_until_present UNIQ_ELEMENT_WAIT_PERIOD
144
+ rescue Watir::Wait::TimeoutError => e
145
+ raise PageObjectWrapper::UnmappedPageObject, "#{label} <=> #{@@browser.url} (#{e.message})" if not watir_uniq_element.present?
146
+ end
147
+ end
141
148
  @@current_page = page_object
142
149
  end
143
150
 
@@ -270,8 +277,7 @@ private
270
277
  end
271
278
 
272
279
  def feed_elements(elements, food_type=nil)
273
- raise PageObjectWrapper::BrowserNotFound if @@browser.nil?
274
- raise PageObjectWrapper::BrowserNotFound if not @@browser.exist?
280
+ raise PageObjectWrapper::BrowserNotFound if @@browser.nil? or not @@browser.exist?
275
281
  food_type ||= :fresh_food
276
282
  raise PageObjectWrapper::UnknownFoodType, food_type.inspect if not FOOD_TYPES.include?(food_type)
277
283
  elements.each{|e|
@@ -305,7 +311,7 @@ private
305
311
  end
306
312
 
307
313
  def fire_action(a, *args)
308
- raise PageObjectWrapper::BrowserNotFound if @@browser.nil?
314
+ raise PageObjectWrapper::BrowserNotFound if @@browser.nil? or not @@browser.exist?
309
315
  block = (a.is_a? Action)? a.fire_block_value : action_for(a.action_value).fire_block_value
310
316
  @@browser.instance_exec args, &block
311
317
  self.class.map_current_page a.next_page_value
@@ -313,7 +319,7 @@ private
313
319
  end
314
320
 
315
321
  def select_from_table(table, header, where=nil)
316
- raise PageObjectWrapper::BrowserNotFound if @@browser.nil?
322
+ raise PageObjectWrapper::BrowserNotFound if @@browser.nil? or not @@browser.exist?
317
323
  t = @@browser.table(table.locator_value)
318
324
  raise ArgumentError, "#{header.inspect} not a Symbol" if not header.is_a? Symbol
319
325
  raise ArgumentError, "#{header.inspect} not in table header" if not table.header_value.include? header
@@ -344,11 +350,11 @@ private
344
350
  end
345
351
 
346
352
  def each_pagination
347
- raise PageObjectWrapper::BrowserNotFound if @@browser.nil?
353
+ raise PageObjectWrapper::BrowserNotFound if @@browser.nil? or not @@browser.exist?
348
354
  end
349
355
 
350
356
  def open_padination n
351
- raise PageObjectWrapper::BrowserNotFound if @@browser.nil?
357
+ raise PageObjectWrapper::BrowserNotFound if @@browser.nil? or not @@browser.exist?
352
358
  end
353
359
 
354
360
 
@@ -1,3 +1,3 @@
1
1
  module PageObjectWrapper
2
- VERSION = "1.1.1"
2
+ VERSION = "1.1.2"
3
3
  end
@@ -3,10 +3,6 @@ require 'shared_examples'
3
3
 
4
4
  describe "define_page_object" do
5
5
  let!(:page_object){
6
- begin
7
- PageObjectWrapper.load('./good_pages')
8
- rescue
9
- end
10
6
  PageObjectWrapper.receive_page(:some_test_page)
11
7
  }
12
8
 
@@ -7,12 +7,8 @@ describe "page_object.xxx" do
7
7
  before(:all){
8
8
  @b = Watir::Browser.new
9
9
  PageObjectWrapper.use_browser @b
10
- begin
11
- PageObjectWrapper.load('./good_pages')
12
- rescue
13
- end
14
10
  }
15
- after(:all){ PageObjectWrapper.browser.close }
11
+ after(:all){ PageObjectWrapper.browser.quit }
16
12
 
17
13
  subject{ PageObjectWrapper.open_page(:some_test_page) }
18
14
 
File without changes
@@ -3,14 +3,6 @@ require 'shared_examples'
3
3
 
4
4
  describe "page_object.feed_xxx" do
5
5
  context "browser is closed" do
6
- before(:all){
7
- begin
8
- PageObjectWrapper.browser.quit if not PageObjectWrapper.browser.nil?
9
- PageObjectWrapper.load('./good_pages')
10
- rescue
11
- end
12
- }
13
-
14
6
  it "raises PageObjectWrapper::BrowserNotFound" do
15
7
  tp = PageObjectWrapper.receive_page(:some_test_page)
16
8
  expect{ tp.feed_test_elements }.to raise_error(PageObjectWrapper::BrowserNotFound)
@@ -21,12 +13,8 @@ describe "page_object.feed_xxx" do
21
13
  before(:all){
22
14
  @b = Watir::Browser.new
23
15
  PageObjectWrapper.use_browser @b
24
- begin
25
- PageObjectWrapper.load('./good_pages')
26
- rescue
27
- end
28
16
  }
29
- after(:all){PageObjectWrapper.browser.close}
17
+ after(:all){ PageObjectWrapper.browser.quit }
30
18
 
31
19
  it "returns current page object" do
32
20
  tp = PageObjectWrapper.open_page(:some_test_page)
@@ -4,14 +4,6 @@ require 'shared_examples'
4
4
  describe "page_object.fire_xxx" do
5
5
  context "browser is closed" do
6
6
  it "raises PageObjectWrapper::BrowserNotFound" do
7
- begin
8
- PageObjectWrapper.browser.quit if not PageObjectWrapper.browser.nil?
9
- begin
10
- PageObjectWrapper.load('./good_pages')
11
- rescue
12
- end
13
- rescue
14
- end
15
7
  tp = PageObjectWrapper.receive_page(:some_test_page)
16
8
  expect{ tp.fire_press_cool_button }.to raise_error(PageObjectWrapper::BrowserNotFound)
17
9
  end
@@ -20,12 +12,8 @@ describe "page_object.fire_xxx" do
20
12
  before(:all){
21
13
  @b = Watir::Browser.new
22
14
  PageObjectWrapper.use_browser @b
23
- begin
24
- PageObjectWrapper.load('./good_pages')
25
- rescue
26
- end
27
15
  }
28
- after(:all){ PageObjectWrapper.browser.close }
16
+ after(:all){ PageObjectWrapper.browser.quit }
29
17
 
30
18
  it "executes fire_block in Watir::Browser context" do
31
19
  tp = PageObjectWrapper.open_page(:some_test_page)
@@ -1,30 +1,9 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe "PageObjectWrapper.open_page" do
4
- let(:define_page_object){
5
- PageObjectWrapper.define_page(:google_page) do
6
- locator 'google.com'
7
- uniq_input :id => 'gbqfq'
8
- end
9
- }
10
- let(:define_wrong_page_object){
11
- PageObjectWrapper.define_page(:wrong_google_page) do
12
- locator 'google.com'
13
- uniq_element :id => 'foobar'
14
- end
15
- }
16
- let(:define_page_object_with_local_path){
17
- PageObjectWrapper.define_page(:google_as_page) do
18
- locator '/advanced_search'
19
- uniq_text_field :name => 'as_q'
20
- end
21
- }
22
-
23
4
  context "browser is closed" do
24
- it "raises PageObjectWrapper::BrowserNotFound" do
25
- define_page_object
26
- PageObject.browser = nil
27
- expect{ PageObjectWrapper.open_page(:google_page) }.to raise_error(PageObjectWrapper::BrowserNotFound)
5
+ it "raises Errno::ECONNREFUSED (I don't understand why here it behaves like this)" do
6
+ expect{ PageObjectWrapper.open_page(:google_page) }.to raise_error(Errno::ECONNREFUSED)
28
7
  end
29
8
  end
30
9
 
@@ -33,12 +12,9 @@ describe "PageObjectWrapper.open_page" do
33
12
  before(:all){
34
13
  @b = Watir::Browser.new
35
14
  PageObjectWrapper.use_browser @b
36
- define_page_object
37
- define_wrong_page_object
38
- define_page_object_with_local_path
39
15
  }
40
16
 
41
- after(:all){ PageObjectWrapper.browser.close }
17
+ after(:all){ PageObjectWrapper.browser.quit }
42
18
 
43
19
  it "raises errors" do
44
20
  expect{ PageObjectWrapper.open_page(:first_arg, :second_arg) }.to raise_error(ArgumentError)
@@ -4,11 +4,6 @@ require 'shared_examples'
4
4
  describe "page_object.select_from_xxx" do
5
5
  context "browser is closed" do
6
6
  it "raises PageObjectWrapper::BrowserNotFound" do
7
- begin
8
- PageObjectWrapper.load('./good_pages')
9
- rescue
10
- end
11
- PageObject.browser = nil
12
7
  tp = PageObjectWrapper.receive_page(:some_test_page)
13
8
  expect{ tp.select_from_table_without_header(:column_1, {:column_2 => ''}) }.to raise_error(PageObjectWrapper::BrowserNotFound)
14
9
  end
@@ -17,12 +12,8 @@ describe "page_object.select_from_xxx" do
17
12
  before(:all){
18
13
  @b = Watir::Browser.new
19
14
  PageObjectWrapper.use_browser @b
20
- begin
21
- PageObjectWrapper.load('./good_pages')
22
- rescue
23
- end
24
15
  }
25
- after(:all){ PageObjectWrapper.browser.close }
16
+ after(:all){ PageObjectWrapper.browser.quit }
26
17
  let!(:tp){ PageObjectWrapper.open_page(:some_test_page)}
27
18
 
28
19
  context "wrong arguments" do
@@ -1,2 +1,8 @@
1
1
  require "page_object_wrapper"
2
- Selenium::WebDriver::Firefox.path='/opt/firefox/firefox'
2
+
3
+ RSpec.configure do |config|
4
+ config.before(:suite){
5
+ Selenium::WebDriver::Firefox.path='/opt/firefox/firefox'
6
+ PageObjectWrapper.load('./good_pages')
7
+ }
8
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: page_object_wrapper
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.1
4
+ version: 1.1.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-12-19 00:00:00.000000000Z
12
+ date: 2012-12-20 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: watir-webdriver
16
- requirement: &20716880 !ruby/object:Gem::Requirement
16
+ requirement: &22275160 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '0'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *20716880
24
+ version_requirements: *22275160
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: rspec
27
- requirement: &20740240 !ruby/object:Gem::Requirement
27
+ requirement: &22274620 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,7 +32,7 @@ dependencies:
32
32
  version: 2.0.0
33
33
  type: :development
34
34
  prerelease: false
35
- version_requirements: *20740240
35
+ version_requirements: *22274620
36
36
  description: Wraps watir-webdriver with convenient testing interface, based on PageObjects
37
37
  automation testing pattern. Simplifies resulting automated test understanding.
38
38
  email:
@@ -48,6 +48,9 @@ files:
48
48
  - Rakefile
49
49
  - bad_pages/bad_page.rb
50
50
  - good_pages/another_test_page.rb
51
+ - good_pages/google_page.rb
52
+ - good_pages/google_wron_uniq_page.rb
53
+ - good_pages/goole_as_page.rb
51
54
  - good_pages/some_test_page.rb
52
55
  - good_pages/test_table_page.rb
53
56
  - img/scheme.png
@@ -66,6 +69,7 @@ files:
66
69
  - page_object_wrapper.gemspec
67
70
  - spec/define_page_object_spec.rb
68
71
  - spec/defined_elements_spec.rb
72
+ - spec/each_page.rb
69
73
  - spec/feed_elements_spec.rb
70
74
  - spec/fire_event_spec.rb
71
75
  - spec/generate_spec.rb
@@ -102,6 +106,7 @@ summary: Wraps watir-webdriver with convenient testing interface.
102
106
  test_files:
103
107
  - spec/define_page_object_spec.rb
104
108
  - spec/defined_elements_spec.rb
109
+ - spec/each_page.rb
105
110
  - spec/feed_elements_spec.rb
106
111
  - spec/fire_event_spec.rb
107
112
  - spec/generate_spec.rb