capydriver 0.0.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.
- checksums.yaml +7 -0
- data/lib/capydriver.rb +85 -0
- data/spec/capydriver_spec.rb +28 -0
- metadata +103 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: a83ffe3eb96a332e64bb1424c9180f39453b64ae
|
4
|
+
data.tar.gz: e4972c470856934f3f71dd682bd6b2a7a5341ed0
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 7cbe9611a261b31a6eb461506aa85c5a7cbcb441d0fa2e460a2ebd8d3d61c9f86067bdd69badd63770f6444f0a308f2fe4a04cd6a90534e9180d514f937c4a93
|
7
|
+
data.tar.gz: aceb4ebbe29d7d7dc241fc9bda9f50cc1e280c6da2968c8ab4153e072b6ae01dbaf24eb4302a37181333d0e8b23379777a90ac7f497a652f5b0fced113f79531
|
data/lib/capydriver.rb
ADDED
@@ -0,0 +1,85 @@
|
|
1
|
+
# -*- encoding : utf-8 -*-
|
2
|
+
|
3
|
+
require 'capybara'
|
4
|
+
|
5
|
+
# Need to test Web Pages?
|
6
|
+
# Need to test in different Browsers?
|
7
|
+
# Even the great IE (puke)?
|
8
|
+
# This module helps you do that!
|
9
|
+
# Just pass the driver and the configurations and it's done
|
10
|
+
module Capydriver
|
11
|
+
attr_reader :session
|
12
|
+
|
13
|
+
# Driver list
|
14
|
+
# when adding support to a new driver
|
15
|
+
# add here the symbol and the require string
|
16
|
+
DRIVERS = {
|
17
|
+
poltergeist: 'capybara/poltergeist',
|
18
|
+
selenium: 'selenium-webdriver'
|
19
|
+
}
|
20
|
+
|
21
|
+
# Creates a new browser with Capybara
|
22
|
+
# driver is a mandatory value
|
23
|
+
# all the others are driver/browser specific values and should be built
|
24
|
+
# according to the driver specification
|
25
|
+
def create(driver, browser = nil)
|
26
|
+
require_driver driver
|
27
|
+
if driver && browser
|
28
|
+
Capybara.register_driver driver do |drv|
|
29
|
+
Capybara.const_get(driver.capitalize)::Driver.new(drv, browser)
|
30
|
+
end
|
31
|
+
end
|
32
|
+
@session = Capybara::Session.new(driver)
|
33
|
+
end
|
34
|
+
|
35
|
+
# Logs the user
|
36
|
+
# The page needs to be a valid login page
|
37
|
+
# @param hash_info [Hash]
|
38
|
+
# :string_user => username label
|
39
|
+
# :string_pass => password label
|
40
|
+
# :user => username to use
|
41
|
+
# :pass => password to use
|
42
|
+
# :string_button => login button info
|
43
|
+
# :string_logout => logout button/link info
|
44
|
+
def login(hash_info)
|
45
|
+
%w(user pass).each do |key|
|
46
|
+
label, value = "string_#{key}".to_sym, key.to_sym
|
47
|
+
@session.fill_in(hash_info[label], with: hash_info[value])
|
48
|
+
end
|
49
|
+
|
50
|
+
@session.click_on(hash_info[:string_button])
|
51
|
+
@session.has_content?(hash_info[:string_logout])
|
52
|
+
end
|
53
|
+
|
54
|
+
# Logout user from current website
|
55
|
+
# @param string [String] => String to click to logout (name, id, text)
|
56
|
+
# @return boolean
|
57
|
+
def logout(string)
|
58
|
+
@session.click_on(string)
|
59
|
+
@session.has_no_content?(string)
|
60
|
+
end
|
61
|
+
|
62
|
+
# Interact with a search engine
|
63
|
+
# @param hash_info [Hash]
|
64
|
+
# :search => searchbar identifier
|
65
|
+
# :text => text to search
|
66
|
+
# :button => button identifier
|
67
|
+
def search(hash_info)
|
68
|
+
@session.fill_in(hash_info[:search], with: hash_info[:text])
|
69
|
+
@session.click_on(hash_info[:button])
|
70
|
+
@session.has_content?(hash_info[:text])
|
71
|
+
end
|
72
|
+
|
73
|
+
private
|
74
|
+
|
75
|
+
# Require driver gem
|
76
|
+
# @param driver [symbol]
|
77
|
+
def require_driver(driver)
|
78
|
+
gem_name = DRIVERS[driver]
|
79
|
+
begin
|
80
|
+
require gem_name
|
81
|
+
rescue LoadError
|
82
|
+
puts "Install #{gem_name} before you proceed!"
|
83
|
+
end
|
84
|
+
end
|
85
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
# -*- encoding : utf-8 -*-
|
2
|
+
|
3
|
+
require 'capydriver'
|
4
|
+
|
5
|
+
RSpec.configure do |config|
|
6
|
+
config.include Capydriver
|
7
|
+
end
|
8
|
+
|
9
|
+
%w(poltergeist selenium).each do |driver|
|
10
|
+
describe 'Create a Session without parameters' do
|
11
|
+
before { create(driver.to_sym) }
|
12
|
+
|
13
|
+
describe "driver is #{driver}" do
|
14
|
+
it "should be #{driver}" do
|
15
|
+
d = driver.capitalize
|
16
|
+
session.driver.class.should == Capybara.const_get(d)::Driver
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
describe 'Create a Session with mock parameters' do
|
22
|
+
before { create(driver.to_sym, browser: :remote) }
|
23
|
+
|
24
|
+
it 'contains the parameters passed' do
|
25
|
+
session.driver.options.should == { browser: :remote }
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
metadata
ADDED
@@ -0,0 +1,103 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: capydriver
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.2
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Filipe Barros
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2013-12-04 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: capybara
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '2.1'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '2.1'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rspec
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: poltergeist
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: selenium-webdriver
|
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
|
+
description: Wrapper to allow the usage of Capybara with different drivers without
|
70
|
+
any pain!
|
71
|
+
email: afbarros@me.com
|
72
|
+
executables: []
|
73
|
+
extensions: []
|
74
|
+
extra_rdoc_files: []
|
75
|
+
files:
|
76
|
+
- lib/capydriver.rb
|
77
|
+
- spec/capydriver_spec.rb
|
78
|
+
homepage:
|
79
|
+
licenses:
|
80
|
+
- MIT
|
81
|
+
metadata: {}
|
82
|
+
post_install_message:
|
83
|
+
rdoc_options: []
|
84
|
+
require_paths:
|
85
|
+
- lib
|
86
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
87
|
+
requirements:
|
88
|
+
- - ">="
|
89
|
+
- !ruby/object:Gem::Version
|
90
|
+
version: '0'
|
91
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
92
|
+
requirements:
|
93
|
+
- - ">="
|
94
|
+
- !ruby/object:Gem::Version
|
95
|
+
version: '0'
|
96
|
+
requirements: []
|
97
|
+
rubyforge_project:
|
98
|
+
rubygems_version: 2.2.2
|
99
|
+
signing_key:
|
100
|
+
specification_version: 4
|
101
|
+
summary: Use Capybara with different Drivers
|
102
|
+
test_files:
|
103
|
+
- spec/capydriver_spec.rb
|