page_magic 1.0.0.alpha4 → 1.0.0.alpha5
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/.rubocop.yml +9 -0
- data/Gemfile +7 -8
- data/Gemfile.lock +15 -30
- data/Rakefile +12 -10
- data/VERSION +1 -1
- data/lib/ext/string.rb +6 -6
- data/lib/page_magic/driver.rb +2 -2
- data/lib/page_magic/drivers/poltergeist.rb +1 -2
- data/lib/page_magic/drivers/rack_test.rb +1 -1
- data/lib/page_magic/drivers/selenium.rb +2 -2
- data/lib/page_magic/drivers.rb +5 -6
- data/lib/page_magic/element.rb +50 -43
- data/lib/page_magic/element_context.rb +14 -14
- data/lib/page_magic/elements.rb +9 -10
- data/lib/page_magic/exceptions.rb +1 -2
- data/lib/page_magic/page_magic.rb +12 -9
- data/lib/page_magic/session.rb +21 -16
- data/lib/page_magic.rb +7 -10
- data/page_magic.gemspec +57 -58
- data/spec/element_spec.rb +34 -27
- data/spec/helpers/capybara.rb +4 -4
- data/spec/member_methods_spec.rb +1 -10
- data/spec/page_magic/driver_spec.rb +5 -5
- data/spec/page_magic/drivers/poltergeist_spec.rb +4 -3
- data/spec/page_magic/drivers/rack_test_spec.rb +4 -3
- data/spec/page_magic/drivers/selenium_spec.rb +3 -2
- data/spec/page_magic/drivers_spec.rb +3 -5
- data/spec/page_magic/element_context_spec.rb +17 -29
- data/spec/page_magic/elements_spec.rb +13 -30
- data/spec/page_magic/page_magic_spec.rb +19 -0
- data/spec/page_magic/session_spec.rb +52 -31
- data/spec/page_magic/usage/defining_pages_spec.rb +3 -7
- data/spec/page_magic/usage/include_page_magic_spec.rb +2 -2
- data/spec/page_magic/usage/interacting_with_pages_spec.rb +0 -2
- data/spec/page_magic/usage/starting_a_session_spec.rb +4 -7
- data/spec/page_magic_spec.rb +4 -6
- data/spec/spec_helper.rb +14 -22
- metadata +5 -19
- data/Guardfile +0 -8
- data/spec/page_magic/usage/defining_page_elements_spec.rb +0 -7
data/lib/page_magic/session.rb
CHANGED
@@ -3,11 +3,11 @@ module PageMagic
|
|
3
3
|
class Session
|
4
4
|
attr_accessor :current_page, :raw_session, :transitions
|
5
5
|
|
6
|
-
def initialize
|
6
|
+
def initialize(browser)
|
7
7
|
@raw_session = browser
|
8
8
|
end
|
9
9
|
|
10
|
-
def define_page_mappings
|
10
|
+
def define_page_mappings(transitions)
|
11
11
|
@transitions = transitions
|
12
12
|
end
|
13
13
|
|
@@ -19,23 +19,13 @@ module PageMagic
|
|
19
19
|
@current_page
|
20
20
|
end
|
21
21
|
|
22
|
-
def find_mapped_page
|
22
|
+
def find_mapped_page(path)
|
23
23
|
mapping = transitions.keys.find do |key|
|
24
24
|
string_matches?(path, key)
|
25
25
|
end
|
26
26
|
transitions[mapping]
|
27
27
|
end
|
28
28
|
|
29
|
-
def string_matches?(string, matcher)
|
30
|
-
if matcher.is_a?(Regexp)
|
31
|
-
string =~ matcher
|
32
|
-
elsif matcher.is_a?(String)
|
33
|
-
string == matcher
|
34
|
-
else
|
35
|
-
false
|
36
|
-
end
|
37
|
-
end
|
38
|
-
|
39
29
|
def visit(page, url: nil)
|
40
30
|
raw_session.visit url || page.url
|
41
31
|
@current_page = page.new self
|
@@ -50,14 +40,29 @@ module PageMagic
|
|
50
40
|
raw_session.current_url
|
51
41
|
end
|
52
42
|
|
53
|
-
def wait_until
|
43
|
+
def wait_until(&block)
|
54
44
|
@wait ||= Wait.new
|
55
45
|
@wait.until &block
|
56
46
|
end
|
57
47
|
|
58
|
-
def method_missing
|
48
|
+
def method_missing(name, *args, &block)
|
59
49
|
current_page.send(name, *args, &block)
|
60
50
|
end
|
61
51
|
|
52
|
+
def respond_to?(*args)
|
53
|
+
super || current_page.respond_to?(*args)
|
54
|
+
end
|
55
|
+
|
56
|
+
private
|
57
|
+
|
58
|
+
def string_matches?(string, matcher)
|
59
|
+
if matcher.is_a?(Regexp)
|
60
|
+
string =~ matcher
|
61
|
+
elsif matcher.is_a?(String)
|
62
|
+
string == matcher
|
63
|
+
else
|
64
|
+
false
|
65
|
+
end
|
66
|
+
end
|
62
67
|
end
|
63
|
-
end
|
68
|
+
end
|
data/lib/page_magic.rb
CHANGED
@@ -9,19 +9,16 @@ require 'page_magic/page_magic'
|
|
9
9
|
require 'page_magic/drivers'
|
10
10
|
|
11
11
|
module PageMagic
|
12
|
-
class UnspportedBrowserException < Exception;end
|
12
|
+
class UnspportedBrowserException < Exception; end
|
13
13
|
|
14
14
|
class << self
|
15
|
-
|
16
15
|
def drivers
|
17
|
-
@drivers ||= Drivers.new.tap
|
18
|
-
drivers.load
|
19
|
-
end
|
16
|
+
@drivers ||= Drivers.new.tap(&:load)
|
20
17
|
end
|
21
18
|
|
22
19
|
def session(application: nil, browser: :rack_test, options: {})
|
23
20
|
driver = drivers.find(browser)
|
24
|
-
|
21
|
+
fail UnspportedBrowserException unless driver
|
25
22
|
|
26
23
|
Capybara.register_driver browser do |app|
|
27
24
|
driver.build(app, browser: browser, options: options)
|
@@ -30,17 +27,17 @@ module PageMagic
|
|
30
27
|
Session.new(Capybara::Session.new(browser, application))
|
31
28
|
end
|
32
29
|
|
33
|
-
def included
|
30
|
+
def included(clazz)
|
34
31
|
clazz.extend Elements
|
35
32
|
pages << clazz if clazz.is_a? Class
|
36
33
|
|
37
34
|
class << clazz
|
38
|
-
def url
|
35
|
+
def url(url = nil)
|
39
36
|
@url = url if url
|
40
37
|
@url
|
41
38
|
end
|
42
39
|
|
43
|
-
def inherited
|
40
|
+
def inherited(clazz)
|
44
41
|
clazz.element_definitions.merge!(element_definitions)
|
45
42
|
PageMagic.pages << clazz
|
46
43
|
end
|
@@ -48,7 +45,7 @@ module PageMagic
|
|
48
45
|
end
|
49
46
|
|
50
47
|
def pages
|
51
|
-
@pages||=[]
|
48
|
+
@pages ||= []
|
52
49
|
end
|
53
50
|
end
|
54
51
|
end
|
data/page_magic.gemspec
CHANGED
@@ -4,74 +4,73 @@
|
|
4
4
|
# -*- encoding: utf-8 -*-
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
|
-
s.name =
|
8
|
-
s.version =
|
7
|
+
s.name = 'page_magic'
|
8
|
+
s.version = '0.11.0.alpha3'
|
9
9
|
|
10
|
-
s.required_rubygems_version = Gem::Requirement.new(
|
11
|
-
s.authors = [
|
12
|
-
s.date =
|
13
|
-
s.description =
|
14
|
-
s.email =
|
10
|
+
s.required_rubygems_version = Gem::Requirement.new('> 1.3.1') if s.respond_to? :required_rubygems_version=
|
11
|
+
s.authors = ['Leon Davis']
|
12
|
+
s.date = '2014-04-05'
|
13
|
+
s.description = 'Framework for modeling and interacting with webpages which wraps capybara'
|
14
|
+
s.email = 'info@lad-tech.com'
|
15
15
|
s.extra_rdoc_files = [
|
16
|
-
|
16
|
+
'README.md'
|
17
17
|
]
|
18
18
|
s.files = [
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
19
|
+
'.rspec',
|
20
|
+
'.ruby-gemset',
|
21
|
+
'.ruby-version',
|
22
|
+
'.travis.yml',
|
23
|
+
'Gemfile',
|
24
|
+
'Gemfile.lock',
|
25
|
+
'README.md',
|
26
|
+
'Rakefile',
|
27
|
+
'VERSION',
|
28
|
+
'lib/ext/string.rb',
|
29
|
+
'lib/page_magic.rb',
|
30
|
+
'lib/page_magic/ajax_support.rb',
|
31
|
+
'lib/page_magic/browser.rb',
|
32
|
+
'lib/page_magic/element.rb',
|
33
|
+
'lib/page_magic/element_context.rb',
|
34
|
+
'lib/page_magic/elements.rb',
|
35
|
+
'lib/page_magic/exceptions.rb',
|
36
|
+
'lib/page_magic/page_magic.rb',
|
37
|
+
'lib/page_magic/session.rb',
|
38
|
+
'page_magic.gemspec',
|
39
|
+
'spec/browser_spec.rb',
|
40
|
+
'spec/element_context_spec.rb',
|
41
|
+
'spec/element_spec.rb',
|
42
|
+
'spec/helpers/capybara.rb',
|
43
|
+
'spec/member_methods_spec.rb',
|
44
|
+
'spec/page_magic/elements_spec.rb',
|
45
|
+
'spec/page_magic/usage/defining_page_elements_spec.rb',
|
46
|
+
'spec/page_magic/usage/defining_pages_spec.rb',
|
47
|
+
'spec/page_magic/usage/include_page_magic_spec.rb',
|
48
|
+
'spec/page_magic/usage/interacting_with_pages_spec.rb',
|
49
|
+
'spec/page_magic/usage/starting_a_session_spec.rb',
|
50
|
+
'spec/session_spec.rb',
|
51
|
+
'spec/spec_helper.rb'
|
52
52
|
]
|
53
|
-
s.homepage =
|
54
|
-
s.licenses = [
|
55
|
-
s.require_paths = [
|
56
|
-
s.rubygems_version =
|
57
|
-
s.summary =
|
53
|
+
s.homepage = 'https://github.com/ladtech/page_magic'
|
54
|
+
s.licenses = ['ruby']
|
55
|
+
s.require_paths = ['lib']
|
56
|
+
s.rubygems_version = '2.0.3'
|
57
|
+
s.summary = 'Framework for modeling and interacting with webpages'
|
58
58
|
|
59
|
-
if s.respond_to? :specification_version
|
59
|
+
if s.respond_to? :specification_version
|
60
60
|
s.specification_version = 4
|
61
61
|
|
62
|
-
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0')
|
63
|
-
s.add_runtime_dependency(
|
64
|
-
s.add_runtime_dependency(
|
65
|
-
s.add_development_dependency(
|
62
|
+
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0')
|
63
|
+
s.add_runtime_dependency('capybara', ['>= 0'])
|
64
|
+
s.add_runtime_dependency('wait', ['>= 0'])
|
65
|
+
s.add_development_dependency('jeweler', ['>= 0'])
|
66
66
|
else
|
67
|
-
s.add_dependency(
|
68
|
-
s.add_dependency(
|
69
|
-
s.add_dependency(
|
67
|
+
s.add_dependency('capybara', ['>= 0'])
|
68
|
+
s.add_dependency('wait', ['>= 0'])
|
69
|
+
s.add_dependency('jeweler', ['>= 0'])
|
70
70
|
end
|
71
71
|
else
|
72
|
-
s.add_dependency(
|
73
|
-
s.add_dependency(
|
74
|
-
s.add_dependency(
|
72
|
+
s.add_dependency('capybara', ['>= 0'])
|
73
|
+
s.add_dependency('wait', ['>= 0'])
|
74
|
+
s.add_dependency('jeweler', ['>= 0'])
|
75
75
|
end
|
76
76
|
end
|
77
|
-
|
data/spec/element_spec.rb
CHANGED
@@ -1,6 +1,4 @@
|
|
1
1
|
describe 'Page elements' do
|
2
|
-
|
3
|
-
|
4
2
|
before :each do
|
5
3
|
Capybara.app = Class.new(Sinatra::Base) do
|
6
4
|
get '/' do
|
@@ -18,7 +16,6 @@ describe 'Page elements' do
|
|
18
16
|
end
|
19
17
|
|
20
18
|
describe 'inheriting' do
|
21
|
-
|
22
19
|
include_context :webapp
|
23
20
|
|
24
21
|
it 'lets you create custom elements' do
|
@@ -31,7 +28,6 @@ describe 'Page elements' do
|
|
31
28
|
end
|
32
29
|
end
|
33
30
|
|
34
|
-
|
35
31
|
page = Class.new do
|
36
32
|
include PageMagic
|
37
33
|
url '/elements'
|
@@ -44,9 +40,26 @@ describe 'Page elements' do
|
|
44
40
|
end
|
45
41
|
end
|
46
42
|
|
47
|
-
|
48
|
-
|
49
|
-
|
43
|
+
it 'should raise an error if a selector has not been specified' do
|
44
|
+
expect { PageMagic::Element.new(:name, Object.new, type: :element).browser_element }.to raise_error(PageMagic::UndefinedSelectorException)
|
45
|
+
end
|
46
|
+
|
47
|
+
describe '#respond_to?' do
|
48
|
+
subject do
|
49
|
+
PageMagic::Element.new(:name, Object.new, type: :element, browser_element: double(element_method: '')) do
|
50
|
+
element :sub_element, css: '.sub-element'
|
51
|
+
end
|
52
|
+
end
|
53
|
+
it 'checks for methods on self' do
|
54
|
+
expect(subject.respond_to?(:session)).to eq(true)
|
55
|
+
end
|
56
|
+
|
57
|
+
it 'checks against registered elements' do
|
58
|
+
expect(subject.respond_to?(:sub_element)).to eq(true)
|
59
|
+
end
|
60
|
+
|
61
|
+
it 'checks for the method of the browser_element' do
|
62
|
+
expect(subject.respond_to?(:element_method)).to eq(true)
|
50
63
|
end
|
51
64
|
end
|
52
65
|
|
@@ -61,60 +74,58 @@ describe 'Page elements' do
|
|
61
74
|
|
62
75
|
context 'options supplied to selector' do
|
63
76
|
it 'passes them on to the cappybara finder method' do
|
64
|
-
options = {key: :value}
|
77
|
+
options = { key: :value }
|
65
78
|
xpath_selector = '//input'
|
66
79
|
expect(Capybara.current_session).to receive(:find).with(:xpath, xpath_selector, options)
|
67
|
-
PageMagic::Element.new(:my_input, page, type: :text_field, selector: {xpath: xpath_selector}.merge(options)).browser_element
|
80
|
+
PageMagic::Element.new(:my_input, page, type: :text_field, selector: { xpath: xpath_selector }.merge(options)).browser_element
|
68
81
|
end
|
69
82
|
end
|
70
83
|
|
71
84
|
it 'should find by xpath' do
|
72
|
-
element = PageMagic::Element.new(:my_input, page, type: :text_field, selector: {xpath: '//input'}).browser_element
|
85
|
+
element = PageMagic::Element.new(:my_input, page, type: :text_field, selector: { xpath: '//input' }).browser_element
|
73
86
|
element.value == 'filled in'
|
74
87
|
end
|
75
88
|
|
76
89
|
it 'should locate an element using its id' do
|
77
|
-
element = PageMagic::Element.new(:my_input, page, type: :text_field, selector: {id: 'field_id'}).browser_element
|
90
|
+
element = PageMagic::Element.new(:my_input, page, type: :text_field, selector: { id: 'field_id' }).browser_element
|
78
91
|
element.value.should == 'filled in'
|
79
92
|
end
|
80
93
|
|
81
94
|
it 'should locate an element using its name' do
|
82
|
-
element = PageMagic::Element.new(:my_input, page, type: :text_field, selector: {name: 'field_name'}).browser_element
|
95
|
+
element = PageMagic::Element.new(:my_input, page, type: :text_field, selector: { name: 'field_name' }).browser_element
|
83
96
|
element.value.should == 'filled in'
|
84
97
|
end
|
85
98
|
|
86
|
-
|
87
99
|
it 'should locate an element using its label' do
|
88
|
-
element = PageMagic::Element.new(:my_link, page, type: :link, selector: {label: 'enter text'}).browser_element
|
100
|
+
element = PageMagic::Element.new(:my_link, page, type: :link, selector: { label: 'enter text' }).browser_element
|
89
101
|
element[:id].should == 'field_id'
|
90
102
|
end
|
91
103
|
|
92
104
|
it 'should raise an exception when finding another element using its text' do
|
93
|
-
expect { PageMagic::Element.new(:my_link, page, type: :text_field, selector: {text: 'my link'}).browser_element }.to raise_error(PageMagic::UnsupportedSelectorException)
|
105
|
+
expect { PageMagic::Element.new(:my_link, page, type: :text_field, selector: { text: 'my link' }).browser_element }.to raise_error(PageMagic::UnsupportedSelectorException)
|
94
106
|
end
|
95
107
|
|
96
108
|
it 'should locate an element using css' do
|
97
|
-
element = PageMagic::Element.new(:my_link, page, type: :link, selector: {css: "input[name='field_name']"}).browser_element
|
109
|
+
element = PageMagic::Element.new(:my_link, page, type: :link, selector: { css: "input[name='field_name']" }).browser_element
|
98
110
|
element[:id].should == 'field_id'
|
99
111
|
end
|
100
112
|
|
101
|
-
|
102
113
|
it 'should return a prefetched value' do
|
103
114
|
PageMagic::Element.new(:help, page, type: :link, browser_element: :prefetched_object).browser_element.should == :prefetched_object
|
104
115
|
end
|
105
116
|
|
106
117
|
it 'should raise errors for unsupported selectors' do
|
107
|
-
expect { PageMagic::Element.new(:my_link, page, type: :link, selector: {unsupported:
|
118
|
+
expect { PageMagic::Element.new(:my_link, page, type: :link, selector: { unsupported: '' }).browser_element }.to raise_error(PageMagic::UnsupportedSelectorException)
|
108
119
|
end
|
109
120
|
|
110
121
|
context 'text selector' do
|
111
122
|
it 'should locate a link' do
|
112
|
-
element = PageMagic::Element.new(:my_link, page, type: :link, selector: {text: 'my link'}).browser_element
|
123
|
+
element = PageMagic::Element.new(:my_link, page, type: :link, selector: { text: 'my link' }).browser_element
|
113
124
|
element[:id].should == 'my_link'
|
114
125
|
end
|
115
126
|
|
116
127
|
it 'should locate a button' do
|
117
|
-
element = PageMagic::Element.new(:my_button, page, type: :button, selector: {text: 'my button'}).browser_element
|
128
|
+
element = PageMagic::Element.new(:my_button, page, type: :button, selector: { text: 'my button' }).browser_element
|
118
129
|
element[:id].should == 'my_button'
|
119
130
|
end
|
120
131
|
end
|
@@ -123,7 +134,7 @@ describe 'Page elements' do
|
|
123
134
|
describe '#section?' do
|
124
135
|
context 'element definitions exist' do
|
125
136
|
subject do
|
126
|
-
PageMagic::Element.new(:my_link, :page, type: :link, selector: {text: 'my link'}) do
|
137
|
+
PageMagic::Element.new(:my_link, :page, type: :link, selector: { text: 'my link' }) do
|
127
138
|
element :thing, text: 'text'
|
128
139
|
end
|
129
140
|
end
|
@@ -134,7 +145,7 @@ describe 'Page elements' do
|
|
134
145
|
|
135
146
|
context 'method defined' do
|
136
147
|
subject do
|
137
|
-
PageMagic::Element.new(:my_link, :page, type: :link, selector: {text: 'my link'}) do
|
148
|
+
PageMagic::Element.new(:my_link, :page, type: :link, selector: { text: 'my link' }) do
|
138
149
|
def custom_method
|
139
150
|
end
|
140
151
|
end
|
@@ -147,7 +158,7 @@ describe 'Page elements' do
|
|
147
158
|
|
148
159
|
context 'neither method or elements defined' do
|
149
160
|
subject do
|
150
|
-
PageMagic::Element.new(:my_link, :page, type: :link, selector: {text: 'my link'})
|
161
|
+
PageMagic::Element.new(:my_link, :page, type: :link, selector: { text: 'my link' })
|
151
162
|
end
|
152
163
|
it 'returns false' do
|
153
164
|
expect(subject.section?).to eq(false)
|
@@ -166,7 +177,6 @@ describe 'Page elements' do
|
|
166
177
|
end
|
167
178
|
end
|
168
179
|
|
169
|
-
|
170
180
|
context 'tests coppied in from section' do
|
171
181
|
include_context :webapp
|
172
182
|
|
@@ -176,7 +186,6 @@ describe 'Page elements' do
|
|
176
186
|
end
|
177
187
|
|
178
188
|
let!(:elements_page) do
|
179
|
-
|
180
189
|
Class.new do
|
181
190
|
include PageMagic
|
182
191
|
url '/elements'
|
@@ -206,6 +215,4 @@ describe 'Page elements' do
|
|
206
215
|
@elements_page.form_by_css.link_in_form.visible?.should be_true
|
207
216
|
end
|
208
217
|
end
|
209
|
-
|
210
|
-
|
211
218
|
end
|
data/spec/helpers/capybara.rb
CHANGED
@@ -1,10 +1,10 @@
|
|
1
1
|
module Capybara
|
2
2
|
module Selenium
|
3
3
|
class Driver
|
4
|
-
def ==
|
5
|
-
driver.respond_to?(:options) &&
|
6
|
-
|
4
|
+
def ==(driver)
|
5
|
+
driver.respond_to?(:options) && options == driver.options &&
|
6
|
+
driver.respond_to?(:app) && app == driver.app
|
7
7
|
end
|
8
8
|
end
|
9
9
|
end
|
10
|
-
end
|
10
|
+
end
|
data/spec/member_methods_spec.rb
CHANGED
@@ -2,15 +2,15 @@ require 'page_magic/driver'
|
|
2
2
|
|
3
3
|
module PageMagic
|
4
4
|
describe Driver do
|
5
|
-
|
6
5
|
let(:driver_class) do
|
7
6
|
Class.new do
|
8
7
|
attr_reader :rack_app, :options
|
9
|
-
def initialize
|
8
|
+
def initialize(rack_app, options)
|
10
9
|
@rack_app = rack_app
|
11
10
|
@options = options
|
12
11
|
end
|
13
|
-
|
12
|
+
|
13
|
+
def ==(driver)
|
14
14
|
driver.rack_app == rack_app && driver.options == options
|
15
15
|
end
|
16
16
|
end
|
@@ -40,8 +40,8 @@ module PageMagic
|
|
40
40
|
end
|
41
41
|
|
42
42
|
it 'creates an instance of the supplied driver' do
|
43
|
-
expect(subject.build(:rack_app,browser: :custom_browser, options: {})).to eq(driver_class.new(:rack_app,
|
43
|
+
expect(subject.build(:rack_app, browser: :custom_browser, options: {})).to eq(driver_class.new(:rack_app, browser: :custom_browser))
|
44
44
|
end
|
45
45
|
end
|
46
46
|
end
|
47
|
-
end
|
47
|
+
end
|
@@ -2,9 +2,10 @@ require 'page_magic/drivers/poltergeist'
|
|
2
2
|
module PageMagic
|
3
3
|
class Drivers
|
4
4
|
describe Poltergeist do
|
5
|
-
it
|
6
|
-
|
5
|
+
it "is capybara's poltergeist driver" do
|
6
|
+
driver = described_class.build(:app, browser: :poltergeist, options: {})
|
7
|
+
expect(driver).to be_a(Capybara::Poltergeist::Driver)
|
7
8
|
end
|
8
9
|
end
|
9
10
|
end
|
10
|
-
end
|
11
|
+
end
|
@@ -2,9 +2,10 @@ require 'page_magic/drivers/rack_test'
|
|
2
2
|
module PageMagic
|
3
3
|
class Drivers
|
4
4
|
describe RackTest do
|
5
|
-
it
|
6
|
-
|
5
|
+
it "is capybara's rack test driver" do
|
6
|
+
driver = described_class.build(:app, browser: :rack_test, options: {})
|
7
|
+
expect(driver).to be_a(Capybara::RackTest::Driver)
|
7
8
|
end
|
8
9
|
end
|
9
10
|
end
|
10
|
-
end
|
11
|
+
end
|
@@ -3,8 +3,9 @@ module PageMagic
|
|
3
3
|
class Drivers
|
4
4
|
describe Selenium do
|
5
5
|
it 'is selenium' do
|
6
|
-
|
6
|
+
driver = described_class.build(:app, browser: :selenium, options: {})
|
7
|
+
expect(driver).to be_a(Capybara::Selenium::Driver)
|
7
8
|
end
|
8
9
|
end
|
9
10
|
end
|
10
|
-
end
|
11
|
+
end
|
@@ -1,7 +1,6 @@
|
|
1
1
|
require 'page_magic/drivers'
|
2
2
|
|
3
3
|
module PageMagic
|
4
|
-
|
5
4
|
describe Drivers do
|
6
5
|
subject { described_class.new }
|
7
6
|
let(:expected_driver) { Driver.new(:browser_driver) }
|
@@ -22,8 +21,7 @@ module PageMagic
|
|
22
21
|
describe '#load' do
|
23
22
|
include_context :files
|
24
23
|
it 'loads the drivers in the specified path' do
|
25
|
-
|
26
|
-
class_definition=<<-RUBY
|
24
|
+
class_definition = <<-RUBY
|
27
25
|
class CustomDriver;
|
28
26
|
def self.support? browser
|
29
27
|
true
|
@@ -31,11 +29,11 @@ module PageMagic
|
|
31
29
|
end
|
32
30
|
RUBY
|
33
31
|
|
34
|
-
File.write("#{scratch_dir}/custom_driver.rb", class_definition
|
32
|
+
File.write("#{scratch_dir}/custom_driver.rb", class_definition)
|
35
33
|
|
36
34
|
subject.load(scratch_dir)
|
37
35
|
expect(subject.find(:custom_browser)).to be(::CustomDriver)
|
38
36
|
end
|
39
37
|
end
|
40
38
|
end
|
41
|
-
end
|
39
|
+
end
|