page_object_wrapper 1.1.1 → 1.1.2

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