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 +32 -36
- data/good_pages/another_test_page.rb +0 -1
- data/good_pages/google_page.rb +4 -0
- data/good_pages/google_wron_uniq_page.rb +4 -0
- data/good_pages/goole_as_page.rb +4 -0
- data/good_pages/some_test_page.rb +0 -1
- data/good_pages/test_table_page.rb +0 -1
- data/img/scheme.png +0 -0
- data/lib/page_object_wrapper/PageObject.rb +15 -9
- data/lib/page_object_wrapper/version.rb +1 -1
- data/spec/define_page_object_spec.rb +0 -4
- data/spec/defined_elements_spec.rb +1 -5
- data/spec/each_page.rb +0 -0
- data/spec/feed_elements_spec.rb +1 -13
- data/spec/fire_event_spec.rb +1 -13
- data/spec/open_spec.rb +3 -27
- data/spec/select_from_spec.rb +1 -10
- data/spec/spec_helper.rb +7 -1
- metadata +11 -6
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"
|
143
|
-
it "populates all xxx elements with :fresh_food"
|
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"
|
150
|
-
it "populates all xxx elements with :fresh_food"
|
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"
|
157
|
-
it "populates all xxx elements with :missing_food"
|
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
|
-
|
161
|
-
|
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"
|
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"
|
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"
|
178
|
+
it "returns next_page":
|
179
179
|
tp = PageObjectWrapper.current_page
|
180
180
|
np = tp.fire_press_cool_button
|
181
|
-
|
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"
|
193
|
-
it "returns last row value from provided column"
|
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"
|
201
|
-
context "found by String"
|
202
|
-
it "returns found cells"
|
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
|
-
|
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
|
-
|
210
|
-
|
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
|
-
|
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(: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'
|
data/img/scheme.png
CHANGED
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 =
|
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
|
-
|
140
|
-
|
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
|
|
@@ -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.
|
11
|
+
after(:all){ PageObjectWrapper.browser.quit }
|
16
12
|
|
17
13
|
subject{ PageObjectWrapper.open_page(:some_test_page) }
|
18
14
|
|
data/spec/each_page.rb
ADDED
File without changes
|
data/spec/feed_elements_spec.rb
CHANGED
@@ -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.
|
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)
|
data/spec/fire_event_spec.rb
CHANGED
@@ -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.
|
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)
|
data/spec/open_spec.rb
CHANGED
@@ -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
|
25
|
-
|
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.
|
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)
|
data/spec/select_from_spec.rb
CHANGED
@@ -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.
|
16
|
+
after(:all){ PageObjectWrapper.browser.quit }
|
26
17
|
let!(:tp){ PageObjectWrapper.open_page(:some_test_page)}
|
27
18
|
|
28
19
|
context "wrong arguments" do
|
data/spec/spec_helper.rb
CHANGED
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.
|
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-
|
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: &
|
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: *
|
24
|
+
version_requirements: *22275160
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: rspec
|
27
|
-
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: *
|
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
|