lite_page 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 +7 -0
- data/.coveralls.yml +1 -0
- data/.gitignore +17 -0
- data/.ruby-gemset +1 -0
- data/.ruby-version +1 -0
- data/.travis.yml +17 -0
- data/Gemfile +4 -0
- data/LICENSE.txt +22 -0
- data/README.md +58 -0
- data/Rakefile +17 -0
- data/lib/lite_page.rb +44 -0
- data/lib/lite_page/element_factory.rb +18 -0
- data/lib/lite_page/page_initializers.rb +33 -0
- data/lib/lite_page/version.rb +3 -0
- data/lite_page.gemspec +31 -0
- data/test/element_factory_test.rb +35 -0
- data/test/lite_page_test.rb +71 -0
- data/test/page_initializers_test.rb +81 -0
- data/test/test_helper.rb +12 -0
- metadata +167 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 472e81de60d3f72173b40e0189907b1aebdb0356
|
4
|
+
data.tar.gz: e710915875c2abc4eea118c9e9159f7146b4ff96
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: ac557b2b637f0a35f5cc40f93d6076a1bc8a2d396b397c5dcbab005d8322d3897457d32022a0d0437129bab147eef6ddcce41696259908ffbe3d893c5e29d884
|
7
|
+
data.tar.gz: f7347d54c3e324b1f0a014b2fe9e650ac33be8f219ecd938bce074ce07a6a7492d9da6aa9e94b87acf358b364ddd948e04eaa67e6890b31bbeb022150e23b874
|
data/.coveralls.yml
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
service_name: travis-ci
|
data/.gitignore
ADDED
data/.ruby-gemset
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
LitePage
|
data/.ruby-version
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
ruby-2.1.0
|
data/.travis.yml
ADDED
data/Gemfile
ADDED
data/LICENSE.txt
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
Copyright (c) 2015 Scott Clark
|
2
|
+
|
3
|
+
MIT License
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
6
|
+
a copy of this software and associated documentation files (the
|
7
|
+
"Software"), to deal in the Software without restriction, including
|
8
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
9
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
10
|
+
permit persons to whom the Software is furnished to do so, subject to
|
11
|
+
the following conditions:
|
12
|
+
|
13
|
+
The above copyright notice and this permission notice shall be
|
14
|
+
included in all copies or substantial portions of the Software.
|
15
|
+
|
16
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
17
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
18
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
19
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
20
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
21
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
22
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,58 @@
|
|
1
|
+
# LitePage
|
2
|
+
|
3
|
+
[](https://travis-ci.org/saclark/lite_page) [](https://coveralls.io/r/saclark/lite_page)
|
4
|
+
|
5
|
+
A gem providing a quick, clean, and concise means of implementing the Page Object Model pattern and defining a semantic DSL for automated acceptance tests using watir-webdriver.
|
6
|
+
|
7
|
+
## Installation
|
8
|
+
|
9
|
+
Add this line to your application's Gemfile:
|
10
|
+
|
11
|
+
gem 'lite_page'
|
12
|
+
|
13
|
+
And then execute:
|
14
|
+
|
15
|
+
$ bundle
|
16
|
+
|
17
|
+
Or install it yourself as:
|
18
|
+
|
19
|
+
$ gem install lite_page
|
20
|
+
|
21
|
+
## Usage
|
22
|
+
If you are using cucumber, include the page initialization helper methods in the cucumber World instance.
|
23
|
+
```ruby
|
24
|
+
World(LitePage::PageInitializers)
|
25
|
+
```
|
26
|
+
|
27
|
+
Include `LightPage` in your page objects, define a `page_url` (if you want to be able to use the `PageInitializers`), and define elements on the page.
|
28
|
+
|
29
|
+
Page elements are defined by calling a method corresponding to the appropriate element type and passing it the name by which you wish to access the element and the selectors used to locate it.
|
30
|
+
```ruby
|
31
|
+
class LoginPage
|
32
|
+
include LitePage
|
33
|
+
page_url('http://www.example.com/login')
|
34
|
+
|
35
|
+
text_field(:username, :label => 'Username')
|
36
|
+
text_field(:password, :label => 'Password')
|
37
|
+
button(:log_in_button, :text => 'Log In')
|
38
|
+
|
39
|
+
def log_in(username, password)
|
40
|
+
self.username.set(username)
|
41
|
+
self.password.set(password)
|
42
|
+
self.log_in_button.click
|
43
|
+
end
|
44
|
+
end
|
45
|
+
```
|
46
|
+
|
47
|
+
Visit and interact with your page objects.
|
48
|
+
```ruby
|
49
|
+
visit(LoginPage).login('afinch', 'pa55w0rd')
|
50
|
+
```
|
51
|
+
|
52
|
+
## Contributing
|
53
|
+
|
54
|
+
1. Fork it ( http://github.com/saclark/lite_page/fork )
|
55
|
+
2. Create your feature branch (`git checkout -b my-new-feature`)
|
56
|
+
3. Commit your changes (`git commit -am 'Add some feature'`)
|
57
|
+
4. Push to the branch (`git push origin my-new-feature`)
|
58
|
+
5. Create new Pull Request
|
data/Rakefile
ADDED
@@ -0,0 +1,17 @@
|
|
1
|
+
require 'bundler/gem_tasks'
|
2
|
+
require 'rake/testtask'
|
3
|
+
require 'coveralls/rake/task'
|
4
|
+
require 'yard'
|
5
|
+
|
6
|
+
Coveralls::RakeTask.new
|
7
|
+
|
8
|
+
Rake::TestTask.new do |t|
|
9
|
+
t.pattern = "test/*_test.rb"
|
10
|
+
end
|
11
|
+
|
12
|
+
YARD::Rake::YardocTask.new do |t|
|
13
|
+
t.files = ['lib/**/*.rb']
|
14
|
+
t.options = ['--output-dir', 'doc/app/']
|
15
|
+
end
|
16
|
+
|
17
|
+
task :default => [:test]
|
data/lib/lite_page.rb
ADDED
@@ -0,0 +1,44 @@
|
|
1
|
+
require 'uri'
|
2
|
+
require 'watir-webdriver'
|
3
|
+
require 'lite_page/version'
|
4
|
+
require 'lite_page/page_initializers'
|
5
|
+
require 'lite_page/element_factory'
|
6
|
+
|
7
|
+
module LitePage
|
8
|
+
# Extends the including class with the ElementFactory and ClassMethods modules.
|
9
|
+
def self.included(base)
|
10
|
+
base.extend(ElementFactory)
|
11
|
+
base.extend(ClassMethods)
|
12
|
+
end
|
13
|
+
|
14
|
+
# Initializes the page instance and sets the browser instance
|
15
|
+
#
|
16
|
+
# @param browser [Object] the browser instance
|
17
|
+
# @return [Object] the browser instance
|
18
|
+
def initialize(browser)
|
19
|
+
@browser = browser
|
20
|
+
end
|
21
|
+
|
22
|
+
module ClassMethods
|
23
|
+
# Defines an instance method `page_url` which returns the url passed to this
|
24
|
+
# method and takes optional query parameters that will be appended to the
|
25
|
+
# url if given.
|
26
|
+
#
|
27
|
+
# @param url [String] the page url
|
28
|
+
# @return [Symbol] the name of the defined method (ruby 2.1+)
|
29
|
+
def page_url(url)
|
30
|
+
define_method(:page_url) do |query_params = {}|
|
31
|
+
uri = URI(url)
|
32
|
+
existing_params = URI.decode_www_form(uri.query || '')
|
33
|
+
new_params = query_params.to_a
|
34
|
+
|
35
|
+
unless existing_params.empty? && new_params.empty?
|
36
|
+
combined_params = existing_params.push(*new_params)
|
37
|
+
uri.query = URI.encode_www_form(combined_params)
|
38
|
+
end
|
39
|
+
|
40
|
+
uri.to_s
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
module LitePage
|
2
|
+
# Defines a set of class methods on the including class corresponding to
|
3
|
+
# each of the instance methods available on the `Watir::Container` class.
|
4
|
+
# Each class method takes a symbol or string that will be used to
|
5
|
+
# dynamically define an instance method on the including class that takes
|
6
|
+
# any number of arguments so long as they are valid arguments for the
|
7
|
+
# corresponding `Watir::Container` instance method. When the instance method
|
8
|
+
# is called, it will call the corresponding `Watir::Container` instance method
|
9
|
+
# on the class instance's browser instance along with the parameters given
|
10
|
+
# to the class method.
|
11
|
+
module ElementFactory
|
12
|
+
Watir::Container.instance_methods.each do |tag_name|
|
13
|
+
define_method(tag_name) do |method_name, *args, &block|
|
14
|
+
define_method(method_name) { @browser.send(tag_name, *args, &block) }
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
module LitePage
|
2
|
+
module PageInitializers
|
3
|
+
# Initializes an instance of the given page class, drives the given browser
|
4
|
+
# instance to the page's url with any given query parameters appended,
|
5
|
+
# yields the page instance to a block if given, and returns the page instance.
|
6
|
+
#
|
7
|
+
# @param page_class [Class] the page class
|
8
|
+
# @param query_params [Hash, Array] the query parameters to append to the page url to viist
|
9
|
+
# @param browser [Object] the browser instance
|
10
|
+
# @yield [page] yields page instance to a block
|
11
|
+
def visit(page_class, query_params = {}, browser = @browser)
|
12
|
+
page = page_class.new(browser)
|
13
|
+
|
14
|
+
url = query_params.empty? ? page.page_url : page.page_url(query_params)
|
15
|
+
browser.goto(url)
|
16
|
+
|
17
|
+
yield page if block_given?
|
18
|
+
page
|
19
|
+
end
|
20
|
+
|
21
|
+
# Initializes and returns an instance of the given page class. Yields the
|
22
|
+
# page instance to a block if given.
|
23
|
+
#
|
24
|
+
# @param page_class [Class] the page class
|
25
|
+
# @param browser [Object] the browser instance
|
26
|
+
# @yield [page] yields page instance to a block
|
27
|
+
def on(page_class, browser = @browser)
|
28
|
+
page = page_class.new(browser)
|
29
|
+
yield page if block_given?
|
30
|
+
page
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
data/lite_page.gemspec
ADDED
@@ -0,0 +1,31 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require 'lite_page/version'
|
5
|
+
|
6
|
+
Gem::Specification.new do |spec|
|
7
|
+
spec.name = 'lite_page'
|
8
|
+
spec.version = LitePage::VERSION
|
9
|
+
spec.authors = ['Scott Clark']
|
10
|
+
spec.email = ['sclarkdev@gmail.com']
|
11
|
+
spec.summary = %q{A Page Object Model DSL for watir-webdriver}
|
12
|
+
spec.description = %q{A gem providing a quick, clean, and concise means of implementing the Page Object Model pattern and defining a semantic DSL for automated acceptance tests using watir-webdriver.}
|
13
|
+
spec.homepage = 'http://github.com/saclark/lite_page'
|
14
|
+
spec.license = 'MIT'
|
15
|
+
|
16
|
+
spec.files = `git ls-files -z`.split("\x0")
|
17
|
+
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
18
|
+
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
19
|
+
spec.require_paths = ['lib']
|
20
|
+
|
21
|
+
spec.add_dependency 'watir-webdriver'
|
22
|
+
|
23
|
+
spec.required_ruby_version = '>= 1.9.3'
|
24
|
+
|
25
|
+
spec.add_development_dependency 'bundler', '~> 1.5'
|
26
|
+
spec.add_development_dependency 'rake', '~> 10.1'
|
27
|
+
spec.add_development_dependency 'simplecov'
|
28
|
+
spec.add_development_dependency 'coveralls', '~> 0.7'
|
29
|
+
spec.add_development_dependency 'minitest-reporters'
|
30
|
+
spec.add_development_dependency 'yard'
|
31
|
+
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
require_relative 'test_helper'
|
2
|
+
|
3
|
+
class ElementFactoryTest < Minitest::Spec
|
4
|
+
describe LitePage::ElementFactory do
|
5
|
+
let(:page) do
|
6
|
+
Class.new do
|
7
|
+
extend LitePage::ElementFactory
|
8
|
+
def initialize(browser)
|
9
|
+
@browser = browser
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
let(:browser) do
|
15
|
+
Class.new do
|
16
|
+
def button(selectors)
|
17
|
+
"button found using #{selectors.to_s}"
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
it 'should define class methods for each Watir::Container instance method' do
|
23
|
+
Watir::Container.instance_methods.each do |method_name|
|
24
|
+
page.must_respond_to method_name
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
describe 'page elements defined' do
|
29
|
+
it 'should create methods that call the appropriate method on the browser' do
|
30
|
+
page.button(:my_button, :id => 'my-button')
|
31
|
+
page.new(browser.new).my_button.must_equal('button found using {:id=>"my-button"}')
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
@@ -0,0 +1,71 @@
|
|
1
|
+
require_relative 'test_helper'
|
2
|
+
|
3
|
+
class LitePageTest < Minitest::Spec
|
4
|
+
describe LitePage do
|
5
|
+
let(:page) { Class.new { include LitePage } }
|
6
|
+
|
7
|
+
describe '::included' do
|
8
|
+
it 'should extend the class with ElementFactory and ClassMethods' do
|
9
|
+
page.is_a?(LitePage::ElementFactory).must_equal(true)
|
10
|
+
page.is_a?(LitePage::ClassMethods).must_equal(true)
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
describe '#initialize' do
|
15
|
+
it 'should assign its argument to @browser' do
|
16
|
+
page.new('browser').instance_variable_defined?(:@browser).must_equal(true)
|
17
|
+
proc { page.new }.must_raise ArgumentError
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
describe '::ClassMethods#page_url' do
|
22
|
+
it 'should define a page url instance method' do
|
23
|
+
page.page_url('http://www.example.com')
|
24
|
+
page.new(nil).must_respond_to(:page_url)
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
describe '#page_url' do
|
29
|
+
it 'should return the url when no arguments passed' do
|
30
|
+
page.page_url('http://www.example.com')
|
31
|
+
page.new(nil).page_url.must_equal('http://www.example.com')
|
32
|
+
|
33
|
+
page.page_url('http://www.example.com?')
|
34
|
+
page.new(nil).page_url.must_equal('http://www.example.com?')
|
35
|
+
|
36
|
+
page.page_url('http://www.example.com?foo=bar')
|
37
|
+
page.new(nil).page_url.must_equal('http://www.example.com?foo=bar')
|
38
|
+
end
|
39
|
+
|
40
|
+
it 'should accept query string parameters as an array or hash' do
|
41
|
+
page.page_url('http://www.example.com')
|
42
|
+
page.new(nil).page_url(:foo => 'bar').must_equal('http://www.example.com?foo=bar')
|
43
|
+
|
44
|
+
page.page_url('http://www.example.com')
|
45
|
+
page.new(nil).page_url([[:foo, 'bar']]).must_equal('http://www.example.com?foo=bar')
|
46
|
+
end
|
47
|
+
|
48
|
+
it 'should create query string if none existed before' do
|
49
|
+
page.page_url('http://www.example.com')
|
50
|
+
page.new(nil).page_url(:foo => 'bar').must_equal('http://www.example.com?foo=bar')
|
51
|
+
|
52
|
+
page.page_url('http://www.example.com')
|
53
|
+
page.new(nil).page_url(:foo => 'bar', :baz => 'qux').must_equal('http://www.example.com?foo=bar&baz=qux')
|
54
|
+
end
|
55
|
+
|
56
|
+
it 'should append query string parameters if some existed before' do
|
57
|
+
page.page_url('http://www.example.com?')
|
58
|
+
page.new(nil).page_url(:foo => 'bar').must_equal('http://www.example.com?foo=bar')
|
59
|
+
|
60
|
+
page.page_url('http://www.example.com?foo=bar')
|
61
|
+
page.new(nil).page_url(:baz => 'qux').must_equal('http://www.example.com?foo=bar&baz=qux')
|
62
|
+
|
63
|
+
page.page_url('http://www.example.com?foo=bar')
|
64
|
+
page.new(nil).page_url(:foo => :bar).must_equal('http://www.example.com?foo=bar&foo=bar')
|
65
|
+
|
66
|
+
page.page_url('http://www.example.com?foo=bar')
|
67
|
+
page.new(nil).page_url(:baz => 'qux', :fizz => 'buzz').must_equal('http://www.example.com?foo=bar&baz=qux&fizz=buzz')
|
68
|
+
end
|
69
|
+
end
|
70
|
+
end
|
71
|
+
end
|
@@ -0,0 +1,81 @@
|
|
1
|
+
require_relative 'test_helper'
|
2
|
+
|
3
|
+
class PageInitializersTest < Minitest::Spec
|
4
|
+
describe LitePage::PageInitializers do
|
5
|
+
let(:browser) do
|
6
|
+
Class.new do
|
7
|
+
attr_reader :location
|
8
|
+
def goto(url)
|
9
|
+
@location = url
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
let(:page) do
|
15
|
+
Class.new do
|
16
|
+
include LitePage
|
17
|
+
page_url('http://www.example.com/page')
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
let(:world) do
|
22
|
+
Class.new do
|
23
|
+
include LitePage::PageInitializers
|
24
|
+
attr_accessor :browser
|
25
|
+
def initialize(browser); @browser = browser; end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
before do
|
30
|
+
@world = world.new(browser.new)
|
31
|
+
end
|
32
|
+
|
33
|
+
describe '#visit' do
|
34
|
+
it 'should visit the page url' do
|
35
|
+
@world.browser.location.must_be_nil
|
36
|
+
@world.visit(page)
|
37
|
+
@world.browser.location.must_equal('http://www.example.com/page')
|
38
|
+
end
|
39
|
+
|
40
|
+
it 'should visit the page url with any given query parameters' do
|
41
|
+
@world.browser.location.must_be_nil
|
42
|
+
@world.visit(page, :foo => 'bar')
|
43
|
+
@world.browser.location.must_equal('http://www.example.com/page?foo=bar')
|
44
|
+
end
|
45
|
+
|
46
|
+
it 'should yeild an instance of the given page class to any given block' do
|
47
|
+
@world.visit(page) { |page_instance| page_instance.must_be_instance_of page }
|
48
|
+
end
|
49
|
+
|
50
|
+
it 'should visit the page before yielding to a given block' do
|
51
|
+
@world.browser.location.must_be_nil
|
52
|
+
@world.visit(page) { |_| @world.browser.location.must_equal('http://www.example.com/page') }
|
53
|
+
@world.browser.location.must_equal('http://www.example.com/page')
|
54
|
+
end
|
55
|
+
|
56
|
+
it 'should return an instance of the given page class' do
|
57
|
+
@world.visit(page).must_be_instance_of page
|
58
|
+
end
|
59
|
+
|
60
|
+
it 'should accept a browser instance defaulting to @browser' do
|
61
|
+
@world.visit(page, {}, browser.new)
|
62
|
+
@world.visit(page).instance_variable_get(:@browser).must_be_same_as(@world.browser)
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
66
|
+
describe '#on' do
|
67
|
+
it 'should return an instance of the given page class' do
|
68
|
+
@world.on(page).must_be_instance_of page
|
69
|
+
end
|
70
|
+
|
71
|
+
it 'should yeild an instance of the given page class to any given block' do
|
72
|
+
@world.on(page) { |page_instance| page_instance.must_be_instance_of page }
|
73
|
+
end
|
74
|
+
|
75
|
+
it 'should accept an optional browser instance defaulting to @browser' do
|
76
|
+
@world.on(page, browser.new)
|
77
|
+
@world.on(page).instance_variable_get(:@browser).must_be_same_as(@world.browser)
|
78
|
+
end
|
79
|
+
end
|
80
|
+
end
|
81
|
+
end
|
data/test/test_helper.rb
ADDED
@@ -0,0 +1,12 @@
|
|
1
|
+
require 'simplecov'
|
2
|
+
require 'coveralls'
|
3
|
+
require 'minitest/autorun'
|
4
|
+
require 'minitest/reporters'
|
5
|
+
require 'minitest/spec'
|
6
|
+
|
7
|
+
Minitest::Reporters.use!(Minitest::Reporters::SpecReporter.new)
|
8
|
+
SimpleCov.formatter = SimpleCov::Formatter::HTMLFormatter
|
9
|
+
SimpleCov.start { add_filter '/test/' }
|
10
|
+
Coveralls.wear!
|
11
|
+
|
12
|
+
require 'lite_page'
|
metadata
ADDED
@@ -0,0 +1,167 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: lite_page
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Scott Clark
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2015-03-09 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: watir-webdriver
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: bundler
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '1.5'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '1.5'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: rake
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '10.1'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '10.1'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: simplecov
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ">="
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ">="
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: coveralls
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - "~>"
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0.7'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - "~>"
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0.7'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: minitest-reporters
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - ">="
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '0'
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - ">="
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '0'
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: yard
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - ">="
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: '0'
|
104
|
+
type: :development
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - ">="
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '0'
|
111
|
+
description: A gem providing a quick, clean, and concise means of implementing the
|
112
|
+
Page Object Model pattern and defining a semantic DSL for automated acceptance tests
|
113
|
+
using watir-webdriver.
|
114
|
+
email:
|
115
|
+
- sclarkdev@gmail.com
|
116
|
+
executables: []
|
117
|
+
extensions: []
|
118
|
+
extra_rdoc_files: []
|
119
|
+
files:
|
120
|
+
- ".coveralls.yml"
|
121
|
+
- ".gitignore"
|
122
|
+
- ".ruby-gemset"
|
123
|
+
- ".ruby-version"
|
124
|
+
- ".travis.yml"
|
125
|
+
- Gemfile
|
126
|
+
- LICENSE.txt
|
127
|
+
- README.md
|
128
|
+
- Rakefile
|
129
|
+
- lib/lite_page.rb
|
130
|
+
- lib/lite_page/element_factory.rb
|
131
|
+
- lib/lite_page/page_initializers.rb
|
132
|
+
- lib/lite_page/version.rb
|
133
|
+
- lite_page.gemspec
|
134
|
+
- test/element_factory_test.rb
|
135
|
+
- test/lite_page_test.rb
|
136
|
+
- test/page_initializers_test.rb
|
137
|
+
- test/test_helper.rb
|
138
|
+
homepage: http://github.com/saclark/lite_page
|
139
|
+
licenses:
|
140
|
+
- MIT
|
141
|
+
metadata: {}
|
142
|
+
post_install_message:
|
143
|
+
rdoc_options: []
|
144
|
+
require_paths:
|
145
|
+
- lib
|
146
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
147
|
+
requirements:
|
148
|
+
- - ">="
|
149
|
+
- !ruby/object:Gem::Version
|
150
|
+
version: 1.9.3
|
151
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
152
|
+
requirements:
|
153
|
+
- - ">="
|
154
|
+
- !ruby/object:Gem::Version
|
155
|
+
version: '0'
|
156
|
+
requirements: []
|
157
|
+
rubyforge_project:
|
158
|
+
rubygems_version: 2.2.2
|
159
|
+
signing_key:
|
160
|
+
specification_version: 4
|
161
|
+
summary: A Page Object Model DSL for watir-webdriver
|
162
|
+
test_files:
|
163
|
+
- test/element_factory_test.rb
|
164
|
+
- test/lite_page_test.rb
|
165
|
+
- test/page_initializers_test.rb
|
166
|
+
- test/test_helper.rb
|
167
|
+
has_rdoc:
|