page-object 0.5.5 → 0.6
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/ChangeLog +9 -0
- data/Gemfile +4 -0
- data/Guardfile +21 -0
- data/LICENSE +1 -1
- data/README.md +1 -1
- data/cucumber.yml +1 -2
- data/features/html/multi_elements.html +136 -0
- data/features/multi_elements.feature +175 -0
- data/features/step_definitions/multi_elements_steps.rb +297 -0
- data/features/support/url_helper.rb +4 -0
- data/lib/page-object/accessors.rb +1 -1
- data/lib/page-object/element_locators.rb +382 -1
- data/lib/page-object/nested_elements.rb +96 -0
- data/lib/page-object/page_factory.rb +89 -1
- data/lib/page-object/platforms/selenium_webdriver/page_object.rb +299 -250
- data/lib/page-object/platforms/watir_webdriver/page_object.rb +247 -198
- data/lib/page-object/version.rb +1 -1
- data/page-object.gemspec +1 -1
- data/spec/page-object/element_locators_spec.rb +590 -143
- data/spec/page-object/page_factory_spec.rb +65 -8
- metadata +20 -13
@@ -1,15 +1,23 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
require 'page-object/page_factory'
|
3
3
|
|
4
|
-
class
|
4
|
+
class FactoryTestPage
|
5
5
|
include PageObject
|
6
6
|
page_url "http://google.com"
|
7
7
|
end
|
8
8
|
|
9
|
+
class AnotherPage
|
10
|
+
include PageObject
|
11
|
+
end
|
12
|
+
|
13
|
+
class YetAnotherPage
|
14
|
+
include PageObject
|
15
|
+
end
|
16
|
+
|
9
17
|
class TestWorld
|
10
18
|
include PageObject::PageFactory
|
11
|
-
|
12
19
|
attr_accessor :browser
|
20
|
+
attr_accessor :current_page
|
13
21
|
end
|
14
22
|
|
15
23
|
describe PageObject::PageFactory do
|
@@ -20,21 +28,70 @@ describe PageObject::PageFactory do
|
|
20
28
|
|
21
29
|
it "should create a new page object and execute a block" do
|
22
30
|
@world.browser.should_not_receive(:goto)
|
23
|
-
@world.on_page
|
24
|
-
page.should be_instance_of
|
31
|
+
@world.on_page FactoryTestPage do |page|
|
32
|
+
page.should be_instance_of FactoryTestPage
|
25
33
|
end
|
26
34
|
end
|
27
35
|
|
28
36
|
it "should create and visit a new page" do
|
29
37
|
@world.browser.should_receive(:goto)
|
30
|
-
@world.visit_page
|
31
|
-
page.should be_instance_of
|
38
|
+
@world.visit_page FactoryTestPage do |page|
|
39
|
+
page.should be_instance_of FactoryTestPage
|
32
40
|
end
|
33
41
|
end
|
34
42
|
|
35
43
|
it "should set an instance variable that can be used outside of the block" do
|
36
|
-
page = @world.on_page
|
44
|
+
page = @world.on_page FactoryTestPage
|
37
45
|
current_page = @world.instance_variable_get "@current_page"
|
38
46
|
current_page.should === page
|
39
47
|
end
|
40
|
-
|
48
|
+
|
49
|
+
it "should raise an error when you do not provide a default route" do
|
50
|
+
expect { PageObject::PageFactory.routes = {:another => []} }.to raise_error
|
51
|
+
end
|
52
|
+
|
53
|
+
it "should store the routes" do
|
54
|
+
routes = ['a', 'b', 'c']
|
55
|
+
PageObject::PageFactory.routes = {:default => routes}
|
56
|
+
PageObject::PageFactory.page_object_routes[:default].should == routes
|
57
|
+
end
|
58
|
+
|
59
|
+
it "should navigate to a page calling the default methods" do
|
60
|
+
pages = [[FactoryTestPage, :a_method], [AnotherPage, :b_method]]
|
61
|
+
PageObject::PageFactory.routes = {:default => pages}
|
62
|
+
fake_page = double('a_page')
|
63
|
+
FactoryTestPage.should_receive(:new).and_return(fake_page)
|
64
|
+
fake_page.should_receive(:a_method)
|
65
|
+
@world.navigate_to(AnotherPage).class.should == AnotherPage
|
66
|
+
end
|
67
|
+
|
68
|
+
it "should fail when it does not find a proper route" do
|
69
|
+
PageObject::PageFactory.routes = {:default => ['a'], :another => ['b']}
|
70
|
+
expect { @world.navigate_to(AnotherPage, :using => :no_route) }.to raise_error
|
71
|
+
end
|
72
|
+
|
73
|
+
it "should fail when no default method specified" do
|
74
|
+
PageObject::PageFactory.routes = {
|
75
|
+
:default => [[FactoryTestPage, :a_method], [AnotherPage, :b_method]]
|
76
|
+
}
|
77
|
+
fake_page = double('a_page')
|
78
|
+
FactoryTestPage.should_receive(:new).and_return(fake_page)
|
79
|
+
fake_page.should_receive(:respond_to?).with(:a_method).and_return(false)
|
80
|
+
expect { @world.navigate_to(AnotherPage) }.to raise_error
|
81
|
+
end
|
82
|
+
|
83
|
+
it "should know how to continue routng from a location" do
|
84
|
+
PageObject::PageFactory.routes = {
|
85
|
+
:default => [[FactoryTestPage, :a_method],
|
86
|
+
[AnotherPage, :b_method],
|
87
|
+
[YetAnotherPage, :c_method]]
|
88
|
+
}
|
89
|
+
fake_page = double('a_page')
|
90
|
+
AnotherPage.should_receive(:new).and_return(fake_page)
|
91
|
+
fake_page.should_receive(:respond_to?).with(:b_method).and_return(true)
|
92
|
+
fake_page.should_receive(:b_method)
|
93
|
+
@world.current_page = FactoryTestPage.new(@world.browser)
|
94
|
+
FactoryTestPage.should_not_receive(:new)
|
95
|
+
@world.continue_navigation_to(YetAnotherPage).class.should == YetAnotherPage
|
96
|
+
end
|
97
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: page-object
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: '0.6'
|
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:
|
12
|
+
date: 2012-01-11 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: watir-webdriver
|
16
|
-
requirement: &
|
16
|
+
requirement: &70258715882600 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,21 +21,21 @@ dependencies:
|
|
21
21
|
version: 0.4.1
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *70258715882600
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: selenium-webdriver
|
27
|
-
requirement: &
|
27
|
+
requirement: &70258711304260 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ! '>='
|
31
31
|
- !ruby/object:Gem::Version
|
32
|
-
version: 2.
|
32
|
+
version: 2.16.0
|
33
33
|
type: :runtime
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *70258711304260
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: rspec
|
38
|
-
requirement: &
|
38
|
+
requirement: &70258711301120 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ! '>='
|
@@ -43,10 +43,10 @@ dependencies:
|
|
43
43
|
version: 2.6.0
|
44
44
|
type: :development
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *70258711301120
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: cucumber
|
49
|
-
requirement: &
|
49
|
+
requirement: &70258711300560 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ! '>='
|
@@ -54,10 +54,10 @@ dependencies:
|
|
54
54
|
version: 1.1.0
|
55
55
|
type: :development
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *70258711300560
|
58
58
|
- !ruby/object:Gem::Dependency
|
59
59
|
name: yard
|
60
|
-
requirement: &
|
60
|
+
requirement: &70258711298760 !ruby/object:Gem::Requirement
|
61
61
|
none: false
|
62
62
|
requirements:
|
63
63
|
- - ! '>='
|
@@ -65,7 +65,7 @@ dependencies:
|
|
65
65
|
version: 0.7.2
|
66
66
|
type: :development
|
67
67
|
prerelease: false
|
68
|
-
version_requirements: *
|
68
|
+
version_requirements: *70258711298760
|
69
69
|
description: Page Object DSL that works with both Watir and Selenium
|
70
70
|
email:
|
71
71
|
- jeff.morgan@leandog.com
|
@@ -79,6 +79,7 @@ files:
|
|
79
79
|
- .travis.yml
|
80
80
|
- ChangeLog
|
81
81
|
- Gemfile
|
82
|
+
- Guardfile
|
82
83
|
- LICENSE
|
83
84
|
- README.md
|
84
85
|
- Rakefile
|
@@ -104,6 +105,7 @@ files:
|
|
104
105
|
- features/html/modal.html
|
105
106
|
- features/html/modal_1.html
|
106
107
|
- features/html/modal_2.html
|
108
|
+
- features/html/multi_elements.html
|
107
109
|
- features/html/nested_elements.html
|
108
110
|
- features/html/nested_frame_1.html
|
109
111
|
- features/html/nested_frame_2.html
|
@@ -115,6 +117,7 @@ files:
|
|
115
117
|
- features/link.feature
|
116
118
|
- features/list_item.feature
|
117
119
|
- features/modal_dialog.feature
|
120
|
+
- features/multi_elements.feature
|
118
121
|
- features/nested_elements.feature
|
119
122
|
- features/ordered_list.feature
|
120
123
|
- features/page_level_actions.feature
|
@@ -137,6 +140,7 @@ files:
|
|
137
140
|
- features/step_definitions/link_steps.rb
|
138
141
|
- features/step_definitions/list_item_steps.rb
|
139
142
|
- features/step_definitions/modal_dialog_steps.rb
|
143
|
+
- features/step_definitions/multi_elements_steps.rb
|
140
144
|
- features/step_definitions/nested_elements_steps.rb
|
141
145
|
- features/step_definitions/ordered_list_steps.rb
|
142
146
|
- features/step_definitions/page_level_actions_steps.rb
|
@@ -309,6 +313,7 @@ test_files:
|
|
309
313
|
- features/html/modal.html
|
310
314
|
- features/html/modal_1.html
|
311
315
|
- features/html/modal_2.html
|
316
|
+
- features/html/multi_elements.html
|
312
317
|
- features/html/nested_elements.html
|
313
318
|
- features/html/nested_frame_1.html
|
314
319
|
- features/html/nested_frame_2.html
|
@@ -320,6 +325,7 @@ test_files:
|
|
320
325
|
- features/link.feature
|
321
326
|
- features/list_item.feature
|
322
327
|
- features/modal_dialog.feature
|
328
|
+
- features/multi_elements.feature
|
323
329
|
- features/nested_elements.feature
|
324
330
|
- features/ordered_list.feature
|
325
331
|
- features/page_level_actions.feature
|
@@ -342,6 +348,7 @@ test_files:
|
|
342
348
|
- features/step_definitions/link_steps.rb
|
343
349
|
- features/step_definitions/list_item_steps.rb
|
344
350
|
- features/step_definitions/modal_dialog_steps.rb
|
351
|
+
- features/step_definitions/multi_elements_steps.rb
|
345
352
|
- features/step_definitions/nested_elements_steps.rb
|
346
353
|
- features/step_definitions/ordered_list_steps.rb
|
347
354
|
- features/step_definitions/page_level_actions_steps.rb
|