page_magic 0.11.0.alpha6 → 0.11.0.alpha7

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 56f774d5606a8b3fbe8f0e8ea337bd54bd360d70
4
- data.tar.gz: 318201438260f08156d1afa43a5baa2479143eb5
3
+ metadata.gz: aea679cbb291387aa604e03d5d0e3cb5adf28141
4
+ data.tar.gz: 52fde80f96207b3632b89fbd98d4cb16e083ffb8
5
5
  SHA512:
6
- metadata.gz: ce887cd3a1b4e3d8fbd6cd0c82b9d78036d46f075c821d213049ef60ff6ec453c601bb55f79359dae1bfab91d4aa1443dfbd8e4aef10b6ea873aee5c618c5a0f
7
- data.tar.gz: 5b0b401f94a6d9fb856efc935157fb3a9754fb98d004c1fdb1590e440b79353ad97ba923970fe8c968bf0b0b686bb0f88b7e88812d46f8a61dc320d82c4b0531
6
+ metadata.gz: e67be00ed38102cf53891a69fb815042020cbe51e6f8a5d82c83ca0a0041ddbe688b69061174a2ab00946410648a13202320abcc48a3311019b2019b6871c48d
7
+ data.tar.gz: 13b0e6b736234d5f48d6669b3b39a75f6c32e869c3710ec4efdffe0dde5a543bb117bdb5384b56542961416a06d8aeb977239d5bc45d7ce0cebda3f9212c927e
data/.ruby-version CHANGED
@@ -1 +1 @@
1
- 2.0.0
1
+ 2.1
data/.travis.yml CHANGED
@@ -1,4 +1,4 @@
1
1
  rvm:
2
- - '1.9.3'
3
- - '2.0.0'
2
+ - '2.1'
3
+ - '2.2
4
4
 
data/Gemfile CHANGED
@@ -1,6 +1,7 @@
1
1
  source "http://rubygems.org"
2
2
 
3
3
  gem 'capybara'
4
+ gem 'activesupport'
4
5
  gem 'wait'
5
6
 
6
7
  group :test do
data/Gemfile.lock CHANGED
@@ -1,6 +1,12 @@
1
1
  GEM
2
2
  remote: http://rubygems.org/
3
3
  specs:
4
+ activesupport (4.2.3)
5
+ i18n (~> 0.7)
6
+ json (~> 1.7, >= 1.7.7)
7
+ minitest (~> 5.1)
8
+ thread_safe (~> 0.3, >= 0.3.4)
9
+ tzinfo (~> 1.1)
4
10
  addressable (2.3.6)
5
11
  builder (3.2.2)
6
12
  capybara (2.1.0)
@@ -38,6 +44,7 @@ GEM
38
44
  guard (~> 2.0)
39
45
  hashie (2.0.5)
40
46
  highline (1.6.21)
47
+ i18n (0.7.0)
41
48
  jeweler (2.0.1)
42
49
  builder
43
50
  bundler (>= 1.0)
@@ -58,6 +65,7 @@ GEM
58
65
  method_source (0.8.2)
59
66
  mime-types (1.25)
60
67
  mini_portile (0.5.1)
68
+ minitest (5.7.0)
61
69
  multi_json (1.7.3)
62
70
  multi_xml (0.5.5)
63
71
  multipart-post (1.2.0)
@@ -113,8 +121,11 @@ GEM
113
121
  tilt (~> 1.3, >= 1.3.4)
114
122
  slop (3.5.0)
115
123
  thor (0.19.1)
124
+ thread_safe (0.3.5)
116
125
  tilt (1.4.1)
117
126
  timers (1.1.0)
127
+ tzinfo (1.2.2)
128
+ thread_safe (~> 0.1)
118
129
  wait (0.5.1)
119
130
  watir-webdriver (0.6.4)
120
131
  selenium-webdriver (>= 2.18.0)
@@ -127,6 +138,7 @@ PLATFORMS
127
138
  ruby
128
139
 
129
140
  DEPENDENCIES
141
+ activesupport
130
142
  capybara
131
143
  guard
132
144
  guard-ctags-bundler
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.0.0.alpha2
1
+ 0.11.0.alpha7
@@ -0,0 +1,19 @@
1
+ module PageMagic
2
+ class Driver
3
+ attr_reader :supported_browsers, :handler
4
+ def initialize(*supported_browsers, &block)
5
+ @handler = block
6
+ @supported_browsers = supported_browsers
7
+ end
8
+
9
+ def support? browser
10
+ supported_browsers.include?(browser)
11
+ end
12
+
13
+ def build(app, browser:, options:{})
14
+ options[:browser] = browser
15
+ driver_clazz = handler.call
16
+ driver_clazz.new(app, options)
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,9 @@
1
+ module PageMagic
2
+ class Drivers
3
+ Poltergeist = Driver.new(:poltergeist) do
4
+ require 'capybara/poltergeist'
5
+ Capybara::Poltergeist::Driver
6
+ end
7
+ end
8
+
9
+ end
@@ -0,0 +1,7 @@
1
+ module PageMagic
2
+ class Drivers
3
+ RackTest = Driver.new(:rack_test) do
4
+ Capybara::RackTest::Driver
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,8 @@
1
+ module PageMagic
2
+ class Drivers
3
+ Selenium = Driver.new(:chrome, :firefox) do
4
+ require 'watir-webdriver'
5
+ Capybara::Selenium::Driver
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,31 @@
1
+ require 'page_magic/driver'
2
+ module PageMagic
3
+ class Drivers
4
+ def all
5
+ @all ||=[]
6
+ end
7
+
8
+ def register(driver)
9
+ all << driver
10
+ end
11
+
12
+
13
+ def find browser
14
+ all.find{|driver|driver.support?(browser)}
15
+ end
16
+
17
+ def load path="#{__dir__}/drivers"
18
+ require 'active_support/inflector'
19
+
20
+ Dir["#{path}/*.rb"].each do |driver_file|
21
+ require driver_file
22
+ driver_name = File.basename(driver_file)[/(.*)\.rb$/, 1]
23
+ register eval(driver_name.classify)
24
+ end
25
+ end
26
+
27
+ def == other
28
+ other.is_a?(Drivers) && other.all == other.all
29
+ end
30
+ end
31
+ end
@@ -1,53 +1,34 @@
1
1
  require 'wait'
2
2
  module PageMagic
3
3
  class Session
4
- attr_accessor :current_page, :raw_session, :transitions
4
+ attr_accessor :current_page, :raw_session
5
5
 
6
6
  def initialize browser
7
7
  @raw_session = browser
8
8
  end
9
9
 
10
- def define_page_mappings transitions
10
+ def define_transitions transitions
11
11
  @transitions = transitions
12
12
  end
13
13
 
14
- def current_page
15
- if transitions
16
- mapping = find_mapped_page(current_path)
17
- @current_page = mapping.new(self) if mapping
18
- end
19
- @current_page
20
- end
21
-
22
- def find_mapped_page path
23
- mapping = transitions.keys.find do |key|
24
- string_matches?(path, key)
25
- end
26
- transitions[mapping]
27
- end
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
14
  def visit page
40
- raw_session.visit page.url
15
+ @raw_session.visit page.url
41
16
  @current_page = page.new self
42
17
  self
43
18
  end
44
19
 
45
20
  def current_path
46
- raw_session.current_path
21
+ @raw_session.current_path
47
22
  end
48
23
 
49
24
  def current_url
50
- raw_session.current_url
25
+ @raw_session.current_url
26
+ end
27
+
28
+ def move_to page_class
29
+ page_class = eval(page_class) if page_class.is_a?(String)
30
+ @current_page = page_class.new self
31
+ wait_until { raw_session.current_url == page_class.url }
51
32
  end
52
33
 
53
34
  def wait_until &block
@@ -56,7 +37,7 @@ module PageMagic
56
37
  end
57
38
 
58
39
  def method_missing name, *args, &block
59
- current_page.send(name, *args, &block)
40
+ @current_page.send(name, *args, &block)
60
41
  end
61
42
 
62
43
  end
data/lib/page_magic.rb CHANGED
@@ -1,41 +1,33 @@
1
1
  $LOAD_PATH.unshift("#{File.dirname(__FILE__)}")
2
2
  require 'capybara'
3
3
  require 'page_magic/exceptions'
4
- require 'page_magic/browser'
5
4
  require 'page_magic/session'
6
5
  require 'page_magic/elements'
7
6
  require 'page_magic/element_context'
8
7
  require 'page_magic/element'
9
8
  require 'page_magic/page_magic'
9
+ require 'page_magic/drivers'
10
10
 
11
11
  module PageMagic
12
+ class UnspportedBrowserException < Exception;end
13
+
12
14
  class << self
13
- def session browser=nil, options = {}
14
- if browser.is_a?(Symbol)
15
- application = options.delete(:application)
16
-
17
- Capybara.register_driver browser do |app|
18
- options[:browser] = browser
19
- case browser
20
- when :poltergeist
21
- require 'capybara/poltergeist'
22
- Capybara::Poltergeist::Driver.new(app)
23
- when :rack_test
24
- Capybara::RackTest::Driver.new(app, options)
25
- else
26
- require 'watir-webdriver'
27
- Capybara::Selenium::Driver.new(app, options)
28
- end
29
-
30
- end
31
-
32
- Session.new(Capybara::Session.new(browser, application))
33
- else
34
- Capybara.reset!
35
- Capybara.app = browser[:application] if browser.is_a?(Hash) && browser[:application]
36
- Session.new(Capybara.current_session)
37
- end
38
15
 
16
+ def drivers
17
+ @drivers ||= Drivers.new.tap do |drivers|
18
+ drivers.load
19
+ end
20
+ end
21
+
22
+ def session(application: nil, browser: :rack_test, options: {})
23
+ driver = drivers.find(browser)
24
+ raise UnspportedBrowserException unless driver
25
+
26
+ Capybara.register_driver browser do |app|
27
+ driver.build(app, browser: browser, options: options)
28
+ end
29
+
30
+ Session.new(Capybara::Session.new(browser, application))
39
31
  end
40
32
 
41
33
  def included clazz
@@ -53,11 +45,10 @@ module PageMagic
53
45
  PageMagic.pages << clazz
54
46
  end
55
47
  end
56
-
57
48
  end
58
49
 
59
50
  def pages
60
51
  @pages||=[]
61
52
  end
62
53
  end
63
- end
54
+ end
data/page_magic.gemspec CHANGED
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = "page_magic"
8
- s.version = "0.11.0.alpha6"
8
+ s.version = "0.11.0.alpha3"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new("> 1.3.1") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Leon Davis"]
12
- s.date = "2015-07-03"
12
+ s.date = "2014-04-05"
13
13
  s.description = "Framework for modeling and interacting with webpages which wraps capybara"
14
14
  s.email = "info@lad-tech.com"
15
15
  s.extra_rdoc_files = [
@@ -22,12 +22,12 @@ Gem::Specification.new do |s|
22
22
  ".travis.yml",
23
23
  "Gemfile",
24
24
  "Gemfile.lock",
25
- "Guardfile",
26
25
  "README.md",
27
26
  "Rakefile",
28
27
  "VERSION",
29
28
  "lib/ext/string.rb",
30
29
  "lib/page_magic.rb",
30
+ "lib/page_magic/ajax_support.rb",
31
31
  "lib/page_magic/browser.rb",
32
32
  "lib/page_magic/element.rb",
33
33
  "lib/page_magic/element_context.rb",
@@ -36,18 +36,18 @@ Gem::Specification.new do |s|
36
36
  "lib/page_magic/page_magic.rb",
37
37
  "lib/page_magic/session.rb",
38
38
  "page_magic.gemspec",
39
+ "spec/browser_spec.rb",
40
+ "spec/element_context_spec.rb",
39
41
  "spec/element_spec.rb",
40
42
  "spec/helpers/capybara.rb",
41
43
  "spec/member_methods_spec.rb",
42
- "spec/page_magic/browser_spec.rb",
43
- "spec/page_magic/element_context_spec.rb",
44
44
  "spec/page_magic/elements_spec.rb",
45
- "spec/page_magic/session_spec.rb",
46
45
  "spec/page_magic/usage/defining_page_elements_spec.rb",
47
46
  "spec/page_magic/usage/defining_pages_spec.rb",
48
47
  "spec/page_magic/usage/include_page_magic_spec.rb",
49
48
  "spec/page_magic/usage/interacting_with_pages_spec.rb",
50
49
  "spec/page_magic/usage/starting_a_session_spec.rb",
50
+ "spec/session_spec.rb",
51
51
  "spec/spec_helper.rb"
52
52
  ]
53
53
  s.homepage = "https://github.com/ladtech/page_magic"
@@ -0,0 +1,47 @@
1
+ require 'page_magic/driver'
2
+
3
+ module PageMagic
4
+ describe Driver do
5
+
6
+ let(:driver_class) do
7
+ Class.new do
8
+ attr_reader :rack_app, :options
9
+ def initialize rack_app, options
10
+ @rack_app = rack_app
11
+ @options = options
12
+ end
13
+ def == driver
14
+ driver.rack_app == rack_app && driver.options == options
15
+ end
16
+ end
17
+ end
18
+ subject do
19
+ described_class.new :custom_browser do
20
+ driver_class
21
+ end
22
+ end
23
+
24
+ describe '#supports?' do
25
+ context 'browser is in supported browsers' do
26
+ it 'returns true' do
27
+ expect(subject.support?(:custom_browser)).to eq(true)
28
+ end
29
+ end
30
+
31
+ context 'browser is not in supported browsers' do
32
+ it 'returns false' do
33
+ expect(subject.support?(:unsupported_browser)).to eq(false)
34
+ end
35
+ end
36
+ end
37
+ describe '#build' do
38
+ it 'adds the browser to the options supplied to the driver' do
39
+ expect(subject.build(:rack_app, browser: :custom_browser, options: {}).options).to eq(browser: :custom_browser)
40
+ end
41
+
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, {browser: :custom_browser}))
44
+ end
45
+ end
46
+ end
47
+ end
@@ -0,0 +1,10 @@
1
+ require 'page_magic/drivers/poltergeist'
2
+ module PageMagic
3
+ class Drivers
4
+ describe Poltergeist do
5
+ it %q{is capybara's poltergeist driver} do
6
+ expect(described_class.build(:app, browser: :poltergeist, options:{})).to be_a(Capybara::Poltergeist::Driver)
7
+ end
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,10 @@
1
+ require 'page_magic/drivers/rack_test'
2
+ module PageMagic
3
+ class Drivers
4
+ describe RackTest do
5
+ it %q{is capybara's rack test driver} do
6
+ expect(described_class.build(:app, browser: :rack_test, options:{})).to be_a(Capybara::RackTest::Driver)
7
+ end
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,10 @@
1
+ require 'page_magic/drivers/selenium'
2
+ module PageMagic
3
+ class Drivers
4
+ describe Selenium do
5
+ it 'is selenium' do
6
+ expect(described_class.build(:app, browser: :selenium, options:{})).to be_a(Capybara::Selenium::Driver)
7
+ end
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,41 @@
1
+ require 'page_magic/drivers'
2
+
3
+ module PageMagic
4
+
5
+ describe Drivers do
6
+ subject { described_class.new }
7
+ let(:expected_driver) { Driver.new(:browser_driver) }
8
+ describe '#register' do
9
+ it 'stores the driver' do
10
+ subject.register expected_driver
11
+ expect(subject.all).to eq([expected_driver])
12
+ end
13
+ end
14
+
15
+ describe '#find' do
16
+ it 'returns the registered driver' do
17
+ subject.register expected_driver
18
+ expect(subject.find(:browser_driver)).to eq(expected_driver)
19
+ end
20
+ end
21
+
22
+ describe '#load' do
23
+ include_context :files
24
+ it 'loads the drivers in the specified path' do
25
+
26
+ class_definition=<<-RUBY
27
+ class CustomDriver;
28
+ def self.support? browser
29
+ true
30
+ end
31
+ end
32
+ RUBY
33
+
34
+ File.write("#{scratch_dir}/custom_driver.rb", class_definition )
35
+
36
+ subject.load(scratch_dir)
37
+ expect(subject.find(:custom_browser)).to be(::CustomDriver)
38
+ end
39
+ end
40
+ end
41
+ end
@@ -3,7 +3,7 @@ describe PageMagic::Session do
3
3
  let(:page) do
4
4
  Class.new do
5
5
  include PageMagic
6
- url '/page1'
6
+ url :url
7
7
 
8
8
  def my_method
9
9
  :called
@@ -20,56 +20,6 @@ describe PageMagic::Session do
20
20
 
21
21
  let(:browser) { double('browser', current_url: 'url') }
22
22
 
23
- describe '#current_page' do
24
- subject do
25
- PageMagic::Session.new(browser).tap do |session|
26
- session.define_page_mappings '/another_page1' => another_page_class
27
- end
28
- end
29
- context 'page url has not changed' do
30
- it 'returns the original page' do
31
- browser.should_receive(:visit).with(page.url)
32
- allow(browser).to receive(:current_path).and_return('/page1')
33
- subject.visit(page)
34
- expect(subject.current_page).to be_an_instance_of(page)
35
- end
36
- end
37
-
38
- context 'page url has changed' do
39
- it 'returns the mapped page object' do
40
- browser.should_receive(:visit).with(page.url)
41
- subject.visit(page)
42
- allow(browser).to receive(:current_path).and_return('/another_page1')
43
- expect(subject.current_page).to be_an_instance_of(another_page_class)
44
- end
45
- end
46
- end
47
-
48
- describe '#find_mapped_page' do
49
- subject do
50
- described_class.new(nil).tap do |session|
51
- session.define_page_mappings '/page' => :mapped_page_using_string, /page\d/ => :mapped_page_using_regex
52
- end
53
- end
54
-
55
- context 'mapping is string' do
56
- it 'returns the page class' do
57
- expect(subject.find_mapped_page('/page')).to be(:mapped_page_using_string)
58
- end
59
- end
60
- context 'mapping is regex' do
61
- it 'returns the page class' do
62
- expect(subject.find_mapped_page('/page2')).to be(:mapped_page_using_regex)
63
- end
64
- end
65
-
66
- context 'mapping is not found' do
67
- it 'returns nil' do
68
- expect(subject.find_mapped_page('/fake_page')).to be(nil)
69
- end
70
- end
71
- end
72
-
73
23
  it 'should visit the given url' do
74
24
  browser.should_receive(:visit).with(page.url)
75
25
  session = PageMagic::Session.new(browser).visit(page)
@@ -88,4 +38,30 @@ describe PageMagic::Session do
88
38
  session.my_method.should be(:called)
89
39
  end
90
40
  end
41
+
42
+ context 'move_to moves the session object to another page' do
43
+ it 'can take a class' do
44
+ page_magic_session = PageMagic::Session.new(double(:browser, current_url: '/another_page1'))
45
+ page_magic_session.move_to(another_page_class)
46
+ page_magic_session.current_page.should be_a(another_page_class)
47
+ end
48
+
49
+ it 'can take the name of the class as a string' do
50
+ class ThePage
51
+ include PageMagic
52
+ url '/the_page'
53
+ end
54
+
55
+ page_magic_session = PageMagic::Session.new(double(:browser, current_url: '/the_page'))
56
+ page_magic_session.move_to("ThePage")
57
+ page_magic_session.current_page.should be_a(ThePage)
58
+ end
59
+
60
+ it 'should wait until the browser url has changed' do
61
+ mock_browser = double(:browser, current_url: 'a')
62
+ page_magic_session = PageMagic::Session.new(mock_browser)
63
+
64
+ expect { page_magic_session.move_to(another_page_class) }.to raise_error(Wait::ResultInvalid)
65
+ end
66
+ end
91
67
  end
@@ -1,4 +1,5 @@
1
1
  describe 'PageMagic.session' do
2
+
2
3
  let(:app_class) do
3
4
  Class.new do
4
5
  def call env
@@ -11,35 +12,10 @@ describe 'PageMagic.session' do
11
12
  Capybara.drivers[browser].call(nil)
12
13
  end
13
14
 
14
- context 'using a symbol as a parameter' do
15
- it 'sets up a session using the specified browser' do
16
- Capybara::Session.should_receive(:new).with(:chrome, nil).and_return(:chrome_session)
17
-
18
- session = PageMagic.session(:chrome)
19
-
20
- registered_driver(:chrome).should == Capybara::Selenium::Driver.new(nil, browser: :chrome)
21
-
22
- session.raw_session.should == :chrome_session
23
- end
24
-
25
- context 'browsers' do
26
- it 'supports poltergeist' do
27
- session = PageMagic.session(:poltergeist, application: app_class.new)
28
- session.raw_session.driver.is_a?(Capybara::Poltergeist::Driver).should be_true
29
- end
30
-
31
- it 'supports selenium' do
32
- session = PageMagic.session(:firefox, application: app_class.new)
33
- session.raw_session.driver.is_a?(Capybara::Selenium::Driver).should be_true
34
- end
35
- end
36
- end
37
-
38
- context 'defaulting the browser used from PageMagic sessions' do
39
- it "uses what ever Capybara's default_driver is set to" do
40
- Capybara.default_driver = :rack_test
41
- session = PageMagic.session
42
- session.raw_session.mode.should == :rack_test
15
+ context 'specificying a browser' do
16
+ it 'loads the driver for the specified browser' do
17
+ session = PageMagic.session(browser: :firefox)
18
+ session.raw_session.driver.is_a?(Capybara::Selenium::Driver).should be_true
43
19
  end
44
20
  end
45
21
 
@@ -52,7 +28,7 @@ describe 'PageMagic.session' do
52
28
  end
53
29
 
54
30
  it 'can run against an rack application using a particular browser' do
55
- session = PageMagic.session(:rack_test, application: app_class.new)
31
+ session = PageMagic.session(browser: :rack_test, application: app_class.new)
56
32
  session.raw_session.mode.should == :rack_test
57
33
  session.raw_session.visit('/')
58
34
  session.raw_session.text.should == 'hello world!!'
@@ -0,0 +1,44 @@
1
+ require 'page_magic'
2
+
3
+ describe PageMagic do
4
+ describe '::drivers' do
5
+ it 'returns loaded drivers' do
6
+ expected_drivers = described_class::Drivers.new.tap do |drivers|
7
+ drivers.load
8
+ end
9
+
10
+ expect(described_class.drivers).to eq(expected_drivers)
11
+ end
12
+ end
13
+
14
+ describe '::session' do
15
+ context 'specifying the browser' do
16
+ it 'loads the correct driver' do
17
+ session = described_class.session(browser: :firefox)
18
+ session.raw_session.driver.is_a?(Capybara::Selenium::Driver).should be_true
19
+ end
20
+ end
21
+
22
+ context 'specifying a rack application' do
23
+ it 'configures capybara to run against the app' do
24
+ session = described_class.session(application: :rack_application)
25
+ expect(session.raw_session.app).to be(:rack_application)
26
+ end
27
+ end
28
+
29
+ context 'specifying options' do
30
+ it 'passes the options to the browser driver' do
31
+ options = {option: :config}
32
+ session = described_class.session(options: options, browser: :chrome)
33
+
34
+ expect(session.raw_session.driver.options).to include(options)
35
+ end
36
+ end
37
+
38
+ context 'driver for browser not found' do
39
+ it 'raises an error' do
40
+ expect{described_class.session(browser: :invalid)}.to raise_exception described_class::UnspportedBrowserException
41
+ end
42
+ end
43
+ end
44
+ end
data/spec/spec_helper.rb CHANGED
@@ -11,7 +11,22 @@ require 'page_magic'
11
11
  require 'capybara/rspec'
12
12
  require 'helpers/capybara'
13
13
 
14
+ shared_context :files do
15
+ require 'tmpdir'
16
+ def scratch_dir
17
+ @dir ||= Dir.mktmpdir
18
+ end
19
+ end
14
20
 
21
+ shared_context :rack_application do
22
+ let(:rack_application) do
23
+ Class.new do
24
+ def call env
25
+ [200, {}, ["hello world!!"]]
26
+ end
27
+ end
28
+ end
29
+ end
15
30
 
16
31
  RSpec.configure do
17
32
 
metadata CHANGED
@@ -1,55 +1,97 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: page_magic
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.11.0.alpha6
4
+ version: 0.11.0.alpha7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Leon Davis
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-07-03 00:00:00.000000000 Z
11
+ date: 2015-07-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: capybara
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - '>='
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
19
  version: '0'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - '>='
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: activesupport
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
25
39
  - !ruby/object:Gem::Version
26
40
  version: '0'
27
41
  - !ruby/object:Gem::Dependency
28
42
  name: wait
29
43
  requirement: !ruby/object:Gem::Requirement
30
44
  requirements:
31
- - - '>='
45
+ - - ">="
32
46
  - !ruby/object:Gem::Version
33
47
  version: '0'
34
48
  type: :runtime
35
49
  prerelease: false
36
50
  version_requirements: !ruby/object:Gem::Requirement
37
51
  requirements:
38
- - - '>='
52
+ - - ">="
39
53
  - !ruby/object:Gem::Version
40
54
  version: '0'
41
55
  - !ruby/object:Gem::Dependency
42
56
  name: jeweler
43
57
  requirement: !ruby/object:Gem::Requirement
44
58
  requirements:
45
- - - '>='
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: guard
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: guard-ctags-bundler
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
46
88
  - !ruby/object:Gem::Version
47
89
  version: '0'
48
90
  type: :development
49
91
  prerelease: false
50
92
  version_requirements: !ruby/object:Gem::Requirement
51
93
  requirements:
52
- - - '>='
94
+ - - ">="
53
95
  - !ruby/object:Gem::Version
54
96
  version: '0'
55
97
  description: Framework for modeling and interacting with webpages which wraps capybara
@@ -59,10 +101,10 @@ extensions: []
59
101
  extra_rdoc_files:
60
102
  - README.md
61
103
  files:
62
- - .rspec
63
- - .ruby-gemset
64
- - .ruby-version
65
- - .travis.yml
104
+ - ".rspec"
105
+ - ".ruby-gemset"
106
+ - ".ruby-version"
107
+ - ".travis.yml"
66
108
  - Gemfile
67
109
  - Gemfile.lock
68
110
  - Guardfile
@@ -71,7 +113,11 @@ files:
71
113
  - VERSION
72
114
  - lib/ext/string.rb
73
115
  - lib/page_magic.rb
74
- - lib/page_magic/browser.rb
116
+ - lib/page_magic/driver.rb
117
+ - lib/page_magic/drivers.rb
118
+ - lib/page_magic/drivers/poltergeist.rb
119
+ - lib/page_magic/drivers/rack_test.rb
120
+ - lib/page_magic/drivers/selenium.rb
75
121
  - lib/page_magic/element.rb
76
122
  - lib/page_magic/element_context.rb
77
123
  - lib/page_magic/elements.rb
@@ -82,7 +128,11 @@ files:
82
128
  - spec/element_spec.rb
83
129
  - spec/helpers/capybara.rb
84
130
  - spec/member_methods_spec.rb
85
- - spec/page_magic/browser_spec.rb
131
+ - spec/page_magic/driver_spec.rb
132
+ - spec/page_magic/drivers/poltergeist_spec.rb
133
+ - spec/page_magic/drivers/rack_test_spec.rb
134
+ - spec/page_magic/drivers/selenium_spec.rb
135
+ - spec/page_magic/drivers_spec.rb
86
136
  - spec/page_magic/element_context_spec.rb
87
137
  - spec/page_magic/elements_spec.rb
88
138
  - spec/page_magic/session_spec.rb
@@ -91,6 +141,7 @@ files:
91
141
  - spec/page_magic/usage/include_page_magic_spec.rb
92
142
  - spec/page_magic/usage/interacting_with_pages_spec.rb
93
143
  - spec/page_magic/usage/starting_a_session_spec.rb
144
+ - spec/page_magic_spec.rb
94
145
  - spec/spec_helper.rb
95
146
  homepage: https://github.com/ladtech/page_magic
96
147
  licenses:
@@ -102,17 +153,17 @@ require_paths:
102
153
  - lib
103
154
  required_ruby_version: !ruby/object:Gem::Requirement
104
155
  requirements:
105
- - - '>='
156
+ - - ">="
106
157
  - !ruby/object:Gem::Version
107
158
  version: '0'
108
159
  required_rubygems_version: !ruby/object:Gem::Requirement
109
160
  requirements:
110
- - - '>'
161
+ - - ">"
111
162
  - !ruby/object:Gem::Version
112
163
  version: 1.3.1
113
164
  requirements: []
114
165
  rubyforge_project:
115
- rubygems_version: 2.4.3
166
+ rubygems_version: 2.2.2
116
167
  signing_key:
117
168
  specification_version: 4
118
169
  summary: Framework for modeling and interacting with webpages
@@ -1,19 +0,0 @@
1
- module PageMagic
2
- module Browser
3
-
4
- class << self
5
- attr_writer :default
6
- def session
7
- @session ||= PageMagic.session(default)
8
- end
9
-
10
- def default
11
- @default || :firefox
12
- end
13
- end
14
-
15
- def browser
16
- Browser.session
17
- end
18
- end
19
- end
@@ -1,35 +0,0 @@
1
- describe PageMagic::Browser do
2
- let(:app) { Object.new }
3
-
4
- before do
5
- PageMagic::Browser.instance_variable_set(:@session, nil)
6
- app.extend PageMagic::Browser
7
- end
8
-
9
- describe 'default' do
10
- it 'should be firefox' do
11
- PageMagic::Browser.default.should == :firefox
12
- end
13
- end
14
-
15
- describe 'browser' do
16
- it 'should return the existing session' do
17
- session_instance = app.browser
18
- app.browser.should == session_instance
19
- end
20
-
21
- it 'should create a session if not already set' do
22
- new_session = double(:new_session)
23
-
24
- PageMagic.should_receive(:session).with(:firefox).and_return new_session
25
- app.browser.should == new_session
26
- end
27
-
28
- it 'should use custom browser' do
29
- PageMagic.should_receive(:session).with(:custom_browser)
30
-
31
- PageMagic::Browser.default = :custom_browser
32
- app.browser
33
- end
34
- end
35
- end