capybara-pompom 0.0.2 → 0.1.0
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/.travis.yml +3 -1
- data/Gemfile +3 -0
- data/README.md +2 -2
- data/Rakefile +12 -0
- data/capybara-pompom.gemspec +4 -4
- data/fixtures/html/components.html +42 -0
- data/lib/capybara/pompom.rb +2 -1
- data/lib/capybara/pompom/component.rb +20 -0
- data/lib/capybara/pompom/element_finder.rb +12 -6
- data/lib/capybara/pompom/finder.rb +30 -3
- data/lib/capybara/pompom/page.rb +0 -2
- data/lib/capybara/pompom/version.rb +1 -1
- metadata +14 -13
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 384f1f13e9f8d37d7b6b35ee8f0958f3255d4b00
|
4
|
+
data.tar.gz: 6e4fd9bc648ddac7eaaf47c1eb7e274354f01643
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 29677fe97e6dfdca498c256c520417649ea491668c90937311574c2c00dd945c746349ad2b3bf2025e796da504ec5047d7ad13952307540e28cfd74c53d43550
|
7
|
+
data.tar.gz: 32da401256d15376978e9e984e4ce7fe7e3f1a67250546557d9c90ac6d4eddf6a7ad9205579bd5648fc485e8ad8011b76c9efd30705c1dab6c6f608dcef754be
|
data/.travis.yml
CHANGED
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# Capybara::PomPom
|
2
2
|
|
3
|
-
[](https://travis-ci.org/BaylorRae/capybara-pompom) [](https://codeclimate.com/github/BaylorRae/capybara-pompom) [](https://codeclimate.com/github/BaylorRae/capybara-pompom/coverage)
|
4
4
|
|
5
5
|
The goal of this gem is to create a DSL for the [Page Object
|
6
6
|
Model][page_object_model].
|
@@ -44,7 +44,7 @@ class LoginPage < Capybara::PomPom::Page
|
|
44
44
|
# login as a user
|
45
45
|
def login_as(login, pass)
|
46
46
|
username.set(login)
|
47
|
-
password.set(
|
47
|
+
password.set(pass)
|
48
48
|
login_button.click
|
49
49
|
end
|
50
50
|
|
data/Rakefile
CHANGED
@@ -1 +1,13 @@
|
|
1
1
|
require "bundler/gem_tasks"
|
2
|
+
require "rspec/core/rake_task"
|
3
|
+
require 'cucumber/rake/task'
|
4
|
+
|
5
|
+
RSpec::Core::RakeTask.new(:spec) do |t|
|
6
|
+
t.verbose = false
|
7
|
+
t.ruby_opts = "-I./spec -rspec_helper"
|
8
|
+
t.rspec_opts = %w[--format progress]
|
9
|
+
end
|
10
|
+
|
11
|
+
Cucumber::Rake::Task.new
|
12
|
+
|
13
|
+
task default: [:spec, :cucumber]
|
data/capybara-pompom.gemspec
CHANGED
@@ -19,13 +19,13 @@ Gem::Specification.new do |spec|
|
|
19
19
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
20
20
|
spec.require_paths = ["lib"]
|
21
21
|
|
22
|
-
spec.add_dependency "capybara", "~> 2.
|
22
|
+
spec.add_dependency "capybara", "~> 2.3"
|
23
23
|
spec.add_dependency "activesupport", "~> 4.2"
|
24
24
|
|
25
|
-
spec.add_development_dependency "bundler", "~> 1.
|
26
|
-
spec.add_development_dependency "rake", "~>
|
25
|
+
spec.add_development_dependency "bundler", "~> 1.11"
|
26
|
+
spec.add_development_dependency "rake", "~> 11.3"
|
27
27
|
|
28
28
|
spec.add_development_dependency "rspec", "~> 3.3"
|
29
29
|
spec.add_development_dependency "cucumber", "~> 2.0"
|
30
|
-
spec.add_development_dependency "
|
30
|
+
spec.add_development_dependency "capybara-webkit", "~> 1.11"
|
31
31
|
end
|
@@ -0,0 +1,42 @@
|
|
1
|
+
<!DOCTYPE html>
|
2
|
+
<html lang="en">
|
3
|
+
<head>
|
4
|
+
<title>Components Page</title>
|
5
|
+
|
6
|
+
</head>
|
7
|
+
<body>
|
8
|
+
|
9
|
+
<div class="container">
|
10
|
+
<h1>Components Page</h1>
|
11
|
+
|
12
|
+
<h3 class="overview-title">Overview outside component</h3>
|
13
|
+
<p class="overview-description">Overview description outside component</p>
|
14
|
+
|
15
|
+
<div class="overview">
|
16
|
+
<h3 class="overview-title">An Overview</h3>
|
17
|
+
<p class="overview-description">This section is a single component</p>
|
18
|
+
</div>
|
19
|
+
|
20
|
+
<div class="online-status">
|
21
|
+
<div class="online-status-user">
|
22
|
+
<h4 class="name">Bob Wiley</h4>
|
23
|
+
<span class="status">Online</span>
|
24
|
+
</div>
|
25
|
+
|
26
|
+
<div class="online-status-user">
|
27
|
+
<h4 class="name">Alice</h4>
|
28
|
+
<span class="status">Offline</span>
|
29
|
+
</div>
|
30
|
+
|
31
|
+
<div class="online-status-user">
|
32
|
+
<h4 class="name">Leo Marvin</h4>
|
33
|
+
<span class="status">Online</span>
|
34
|
+
</div>
|
35
|
+
</div>
|
36
|
+
</div>
|
37
|
+
|
38
|
+
</body>
|
39
|
+
</html>
|
40
|
+
|
41
|
+
|
42
|
+
|
data/lib/capybara/pompom.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
require "capybara"
|
1
|
+
require "capybara/dsl"
|
2
2
|
require "capybara/pompom/version"
|
3
3
|
require "active_support/core_ext/class/attribute"
|
4
4
|
|
@@ -7,6 +7,7 @@ module Capybara
|
|
7
7
|
autoload :Page, "capybara/pompom/page"
|
8
8
|
autoload :Finder, "capybara/pompom/finder"
|
9
9
|
autoload :ElementFinder, "capybara/pompom/element_finder"
|
10
|
+
autoload :Component, "capybara/pompom/component"
|
10
11
|
autoload :TableRow, "capybara/pompom/table_row"
|
11
12
|
autoload :TableFinder, "capybara/pompom/table_finder"
|
12
13
|
autoload :Table, "capybara/pompom/table"
|
@@ -0,0 +1,20 @@
|
|
1
|
+
module Capybara::PomPom
|
2
|
+
class Component
|
3
|
+
include Finder
|
4
|
+
|
5
|
+
attr_reader :component
|
6
|
+
|
7
|
+
def method_missing(name, *args)
|
8
|
+
if self.finders.has_key?(name)
|
9
|
+
return self.finders[name].get(component)
|
10
|
+
end
|
11
|
+
|
12
|
+
super
|
13
|
+
end
|
14
|
+
|
15
|
+
def initialize(component)
|
16
|
+
@component = component
|
17
|
+
end
|
18
|
+
|
19
|
+
end
|
20
|
+
end
|
@@ -11,10 +11,10 @@ module Capybara::PomPom
|
|
11
11
|
# Initializes a new ElementFinder
|
12
12
|
#
|
13
13
|
# === Parameters
|
14
|
-
# - +type+: the capybara finder. E.g. +
|
14
|
+
# - +type+: the capybara finder. E.g. +find+, +find_link+, etc...
|
15
15
|
# - +locator+: the locator used by capybara to find element.
|
16
16
|
# - +wrapper+ (optional): an instance to wrap the found element in.
|
17
|
-
def initialize(type, locator, wrapper
|
17
|
+
def initialize(type, locator, wrapper: nil)
|
18
18
|
@type = type
|
19
19
|
@locator = locator
|
20
20
|
@wrapper = wrapper
|
@@ -23,13 +23,19 @@ module Capybara::PomPom
|
|
23
23
|
# Returns the Capybara::Element or +wrapper+ if defined.
|
24
24
|
def get(scope = nil)
|
25
25
|
scope ||= self
|
26
|
-
|
26
|
+
wrap_result(scope.send(type, locator))
|
27
|
+
end
|
28
|
+
|
29
|
+
private
|
30
|
+
|
31
|
+
def wrap_result(result)
|
32
|
+
return result if wrapper.nil?
|
27
33
|
|
28
|
-
|
29
|
-
|
34
|
+
if result.is_a?(Capybara::Result)
|
35
|
+
return result.map { |r| wrapper.new(r) }
|
30
36
|
end
|
31
37
|
|
32
|
-
|
38
|
+
wrapper.new(result)
|
33
39
|
end
|
34
40
|
|
35
41
|
end
|
@@ -30,6 +30,15 @@ module Capybara::PomPom
|
|
30
30
|
mod.extend Finder
|
31
31
|
end
|
32
32
|
|
33
|
+
# Finds a node with +find+
|
34
|
+
#
|
35
|
+
# css :title, ".title"
|
36
|
+
#
|
37
|
+
# Returns a +Capybara::Node::Element+
|
38
|
+
def css(name, locator)
|
39
|
+
self.finders[name] = ElementFinder.new(:find, locator)
|
40
|
+
end
|
41
|
+
|
33
42
|
# Finds a link through +find_link+
|
34
43
|
#
|
35
44
|
# link :login_link, "Log In"
|
@@ -59,11 +68,29 @@ module Capybara::PomPom
|
|
59
68
|
|
60
69
|
# Finds a table through +find+
|
61
70
|
#
|
62
|
-
# table :products_table, "#products", TableRowWrapper
|
71
|
+
# table :products_table, "#products", row_wrapper: TableRowWrapper
|
63
72
|
#
|
64
73
|
# Returns a Table
|
65
|
-
def table(name, locator, row_wrapper
|
66
|
-
self.finders[name] = TableFinder.new(:find, locator, row_wrapper)
|
74
|
+
def table(name, locator, row_wrapper: nil)
|
75
|
+
self.finders[name] = TableFinder.new(:find, locator, wrapper: row_wrapper)
|
76
|
+
end
|
77
|
+
|
78
|
+
# Finds a component through +find+
|
79
|
+
#
|
80
|
+
# component :overview_component, "#overview"
|
81
|
+
#
|
82
|
+
# Returns a Component
|
83
|
+
def component(name, locator)
|
84
|
+
self.finders[name] = ElementFinder.new(:find, locator, wrapper: Component)
|
85
|
+
end
|
86
|
+
|
87
|
+
# Finds components through +all+
|
88
|
+
#
|
89
|
+
# components :statuses, ".status"
|
90
|
+
#
|
91
|
+
# Returns a Component
|
92
|
+
def components(name, locator, wrapper: nil)
|
93
|
+
self.finders[name] = ElementFinder.new(:all, locator, wrapper: wrapper)
|
67
94
|
end
|
68
95
|
|
69
96
|
end
|
data/lib/capybara/pompom/page.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: capybara-pompom
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 0.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Baylor Rae'
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2017-05-03 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: capybara
|
@@ -16,14 +16,14 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '2.
|
19
|
+
version: '2.3'
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: '2.
|
26
|
+
version: '2.3'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: activesupport
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -44,28 +44,28 @@ dependencies:
|
|
44
44
|
requirements:
|
45
45
|
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: '1.
|
47
|
+
version: '1.11'
|
48
48
|
type: :development
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: '1.
|
54
|
+
version: '1.11'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: rake
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
59
|
- - "~>"
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version: '
|
61
|
+
version: '11.3'
|
62
62
|
type: :development
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
66
|
- - "~>"
|
67
67
|
- !ruby/object:Gem::Version
|
68
|
-
version: '
|
68
|
+
version: '11.3'
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: rspec
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
@@ -95,19 +95,19 @@ dependencies:
|
|
95
95
|
- !ruby/object:Gem::Version
|
96
96
|
version: '2.0'
|
97
97
|
- !ruby/object:Gem::Dependency
|
98
|
-
name:
|
98
|
+
name: capybara-webkit
|
99
99
|
requirement: !ruby/object:Gem::Requirement
|
100
100
|
requirements:
|
101
101
|
- - "~>"
|
102
102
|
- !ruby/object:Gem::Version
|
103
|
-
version: '
|
103
|
+
version: '1.11'
|
104
104
|
type: :development
|
105
105
|
prerelease: false
|
106
106
|
version_requirements: !ruby/object:Gem::Requirement
|
107
107
|
requirements:
|
108
108
|
- - "~>"
|
109
109
|
- !ruby/object:Gem::Version
|
110
|
-
version: '
|
110
|
+
version: '1.11'
|
111
111
|
description: A Capybara inspired DSL for page object models.
|
112
112
|
email:
|
113
113
|
- baylor@fastmail.com
|
@@ -126,10 +126,12 @@ files:
|
|
126
126
|
- bin/setup
|
127
127
|
- capybara-pompom.gemspec
|
128
128
|
- cucumber.yml
|
129
|
+
- fixtures/html/components.html
|
129
130
|
- fixtures/html/form.html
|
130
131
|
- fixtures/html/links.html
|
131
132
|
- fixtures/html/tables.html
|
132
133
|
- lib/capybara/pompom.rb
|
134
|
+
- lib/capybara/pompom/component.rb
|
133
135
|
- lib/capybara/pompom/element_finder.rb
|
134
136
|
- lib/capybara/pompom/finder.rb
|
135
137
|
- lib/capybara/pompom/page.rb
|
@@ -157,9 +159,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
157
159
|
version: '0'
|
158
160
|
requirements: []
|
159
161
|
rubyforge_project:
|
160
|
-
rubygems_version: 2.
|
162
|
+
rubygems_version: 2.5.1
|
161
163
|
signing_key:
|
162
164
|
specification_version: 4
|
163
165
|
summary: A Capybara inspired DSL for page object models.
|
164
166
|
test_files: []
|
165
|
-
has_rdoc:
|