capypage 0.1.0 → 0.1.1
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.
- checksums.yaml +4 -4
- data/.rspec +2 -0
- data/Rakefile +6 -1
- data/capypage.gemspec +1 -0
- data/examples/simple/README.md +7 -0
- data/examples/simple/spec/simple_spec.rb +4 -4
- data/lib/capypage/element.rb +7 -3
- data/lib/capypage/version.rb +1 -1
- data/lib/capypage.rb +5 -6
- data/spec/element_spec.rb +14 -0
- data/spec/elements_spec.rb +25 -0
- data/spec/page_spec.rb +37 -0
- data/spec/sample_page.html +28 -0
- data/spec/spec_helper.rb +17 -0
- metadata +29 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e17d0dec80b73008960e7db25880188e4d49ac34
|
4
|
+
data.tar.gz: 47d86693674305ec5141d0dbad476a4dda04d0a7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 98a96b1c0cb5b1fdb9f8668aad19641d22abe0201d59c90a80f05e1601de8ac245ed52d0c436ec8b7ddd4c139cb07dab815507f8442603c467d5ead739a50d3d
|
7
|
+
data.tar.gz: 2d3029f02d2e58f5ea513be0f9a06740fc4fcfb118e4c5f905890fc14f87f9d22797ae217ef67a6d1f4d6e372319347fbbf352782e66decf5a9fa812a2a891c3
|
data/.rspec
ADDED
data/Rakefile
CHANGED
data/capypage.gemspec
CHANGED
@@ -6,10 +6,10 @@ describe 'Simple example', :type => :feature do
|
|
6
6
|
|
7
7
|
it 'should show capybara results' do
|
8
8
|
search_page.load
|
9
|
-
search_page.search
|
9
|
+
search_page.search 'Capybara'
|
10
10
|
|
11
|
-
capybara_result = search_results_page.results.find_by_text
|
12
|
-
capybara_result.link[:href].
|
13
|
-
capybara_result.snippet.
|
11
|
+
capybara_result = search_results_page.results.find_by_text 'jnicklas'
|
12
|
+
expect(capybara_result.link[:href]).to eq('https://github.com/jnicklas/capybara')
|
13
|
+
expect(capybara_result.snippet).to have_text('Capybara helps you test web applications')
|
14
14
|
end
|
15
15
|
end
|
data/lib/capypage/element.rb
CHANGED
@@ -5,9 +5,6 @@ module Capypage
|
|
5
5
|
class Element
|
6
6
|
attr_accessor :selector, :prefix, :finder_options, :base_element
|
7
7
|
|
8
|
-
delegate :click, :set, :text, :all, :find, :[], :native, :disabled?, :selected?, :has_text?, :has_no_text?, :checked?, :has_selector?,
|
9
|
-
:to => :capybara_element
|
10
|
-
|
11
8
|
def initialize(selector, prefix = nil, options = {}, &block)
|
12
9
|
options.reverse_merge! :match => :smart
|
13
10
|
@selector = selector
|
@@ -43,5 +40,12 @@ module Capypage
|
|
43
40
|
def element_selector
|
44
41
|
[prefix, selector].compact.join(" ")
|
45
42
|
end
|
43
|
+
|
44
|
+
def self.capybara_element_methods
|
45
|
+
Capybara::Node::Element.instance_methods - Object.methods
|
46
|
+
end
|
47
|
+
|
48
|
+
delegate *capybara_element_methods,
|
49
|
+
:to => :capybara_element
|
46
50
|
end
|
47
51
|
end
|
data/lib/capypage/version.rb
CHANGED
data/lib/capypage.rb
CHANGED
@@ -4,9 +4,8 @@ Bundler.require
|
|
4
4
|
|
5
5
|
require 'capybara'
|
6
6
|
|
7
|
-
require
|
8
|
-
|
9
|
-
require
|
10
|
-
require
|
11
|
-
require
|
12
|
-
require "capypage/section"
|
7
|
+
require 'capypage/version'
|
8
|
+
require 'capypage/page'
|
9
|
+
require 'capypage/element'
|
10
|
+
require 'capypage/elements'
|
11
|
+
require 'capypage/section'
|
@@ -0,0 +1,14 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Capypage::Element do
|
4
|
+
let(:page) { SamplePage.new }
|
5
|
+
|
6
|
+
before { page.load }
|
7
|
+
|
8
|
+
it 'should delegate all capybara element methods' do
|
9
|
+
expect(page.header[:class]).to eq('span12')
|
10
|
+
expect(page.header).to have_text('Hello')
|
11
|
+
expect(page.header).to_not have_text('Foo')
|
12
|
+
end
|
13
|
+
|
14
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Capypage::Elements do
|
4
|
+
let(:page) { SamplePage.new }
|
5
|
+
let(:elements) { page.list }
|
6
|
+
before { page.load }
|
7
|
+
|
8
|
+
it 'should find the collection of elements matching' do
|
9
|
+
expect(elements.size).to eq(3)
|
10
|
+
end
|
11
|
+
|
12
|
+
describe '#find_by_text' do
|
13
|
+
it 'should find the element with text within the collection' do
|
14
|
+
element = elements.find_by_text('Title 1')
|
15
|
+
expect(element.details.text).to eq('Details 1')
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
describe 'delegation of capybara methods to the collection' do
|
20
|
+
xit 'should delegate has_text' do
|
21
|
+
expect(elements).to have_text('Title 1')
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
end
|
data/spec/page_spec.rb
ADDED
@@ -0,0 +1,37 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Capypage::Page do
|
4
|
+
let(:page) { SamplePage.new }
|
5
|
+
let(:current_session) { Capybara.current_session }
|
6
|
+
|
7
|
+
context 'page loading' do
|
8
|
+
it 'should load the page' do
|
9
|
+
current_session.should_receive(:visit).with(SamplePage.url)
|
10
|
+
page.load
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
describe 'dsl' do
|
15
|
+
before { page.load }
|
16
|
+
|
17
|
+
describe '.element' do
|
18
|
+
it 'should return the element matching the selector' do
|
19
|
+
expect(page.header.text).to eq('Hello World!')
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
describe '.elements' do
|
24
|
+
let(:elements) { page.list }
|
25
|
+
|
26
|
+
it 'should return the size collection' do
|
27
|
+
expect(elements.size).to eq(3)
|
28
|
+
end
|
29
|
+
|
30
|
+
it 'should return the element in the collection and its details' do
|
31
|
+
expect(elements.find_by_index(0).title.text).to eq('Title 1')
|
32
|
+
end
|
33
|
+
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
<!doctype html>
|
2
|
+
<html lang="en-US">
|
3
|
+
<head>
|
4
|
+
<meta charset="UTF-8">
|
5
|
+
<title></title>
|
6
|
+
</head>
|
7
|
+
<body>
|
8
|
+
<header class="span12">
|
9
|
+
Hello World!
|
10
|
+
</header>
|
11
|
+
<div id="content">
|
12
|
+
<ul class="list">
|
13
|
+
<li>
|
14
|
+
<div class="title">Title 1</div>
|
15
|
+
<div class="details">Details 1</div>
|
16
|
+
</li>
|
17
|
+
<li>
|
18
|
+
<div class="title">Title 2</div>
|
19
|
+
<div class="details">Details 2</div>
|
20
|
+
</li>
|
21
|
+
<li>
|
22
|
+
<div class="title">Title 3</div>
|
23
|
+
<div class="details">Details 3</div>
|
24
|
+
</li>
|
25
|
+
</ul>
|
26
|
+
</div>
|
27
|
+
</body>
|
28
|
+
</html>
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,17 @@
|
|
1
|
+
require 'capypage'
|
2
|
+
require 'capybara/rspec'
|
3
|
+
|
4
|
+
Capybara.app = lambda { |_|
|
5
|
+
[200, { 'Content-Type' => 'application/html' }, File.read(File.join(File.dirname(__FILE__), 'sample_page.html'))]
|
6
|
+
}
|
7
|
+
|
8
|
+
class SamplePage < Capypage::Page
|
9
|
+
set_url '/'
|
10
|
+
|
11
|
+
element :header, 'header'
|
12
|
+
elements :list, 'ul.list li' do |row|
|
13
|
+
row.element :title, '.title'
|
14
|
+
row.element :details, '.details'
|
15
|
+
end
|
16
|
+
|
17
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: capypage
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Selvakumar Natesan
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2013-09-
|
13
|
+
date: 2013-09-19 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: capybara
|
@@ -54,6 +54,20 @@ dependencies:
|
|
54
54
|
- - ~>
|
55
55
|
- !ruby/object:Gem::Version
|
56
56
|
version: '1.3'
|
57
|
+
- !ruby/object:Gem::Dependency
|
58
|
+
name: rspec
|
59
|
+
requirement: !ruby/object:Gem::Requirement
|
60
|
+
requirements:
|
61
|
+
- - '>='
|
62
|
+
- !ruby/object:Gem::Version
|
63
|
+
version: '0'
|
64
|
+
type: :development
|
65
|
+
prerelease: false
|
66
|
+
version_requirements: !ruby/object:Gem::Requirement
|
67
|
+
requirements:
|
68
|
+
- - '>='
|
69
|
+
- !ruby/object:Gem::Version
|
70
|
+
version: '0'
|
57
71
|
- !ruby/object:Gem::Dependency
|
58
72
|
name: rake
|
59
73
|
requirement: !ruby/object:Gem::Requirement
|
@@ -76,12 +90,14 @@ extensions: []
|
|
76
90
|
extra_rdoc_files: []
|
77
91
|
files:
|
78
92
|
- .gitignore
|
93
|
+
- .rspec
|
79
94
|
- Gemfile
|
80
95
|
- LICENSE.txt
|
81
96
|
- README.md
|
82
97
|
- Rakefile
|
83
98
|
- capypage.gemspec
|
84
99
|
- examples/simple/Gemfile
|
100
|
+
- examples/simple/README.md
|
85
101
|
- examples/simple/spec/simple_spec.rb
|
86
102
|
- examples/simple/spec/spec_helper.rb
|
87
103
|
- lib/capypage.rb
|
@@ -90,6 +106,11 @@ files:
|
|
90
106
|
- lib/capypage/page.rb
|
91
107
|
- lib/capypage/section.rb
|
92
108
|
- lib/capypage/version.rb
|
109
|
+
- spec/element_spec.rb
|
110
|
+
- spec/elements_spec.rb
|
111
|
+
- spec/page_spec.rb
|
112
|
+
- spec/sample_page.html
|
113
|
+
- spec/spec_helper.rb
|
93
114
|
homepage: http://github.com/TWChennai/capypage
|
94
115
|
licenses:
|
95
116
|
- MIT
|
@@ -114,4 +135,9 @@ rubygems_version: 2.0.3
|
|
114
135
|
signing_key:
|
115
136
|
specification_version: 4
|
116
137
|
summary: Page Object Model for Capybara
|
117
|
-
test_files:
|
138
|
+
test_files:
|
139
|
+
- spec/element_spec.rb
|
140
|
+
- spec/elements_spec.rb
|
141
|
+
- spec/page_spec.rb
|
142
|
+
- spec/sample_page.html
|
143
|
+
- spec/spec_helper.rb
|