Sha256: 45ea6b19f6d50a0422eacc61016699e53c4e215c14dd5018efe854c0c3c8359e

Contents?: true

Size: 1.2 KB

Versions: 4

Compression:

Stored size: 1.2 KB

Contents

$LOAD_PATH.unshift("#{File.dirname(__FILE__)}")
require 'capybara'
require 'page_magic/exceptions'
require 'page_magic/session'
require 'page_magic/elements'
require 'page_magic/element_context'
require 'page_magic/element'
require 'page_magic/page_magic'
require 'page_magic/drivers'

module PageMagic
  class UnspportedBrowserException < Exception;end

  class << self

    def drivers
      @drivers ||= Drivers.new.tap do |drivers|
        drivers.load
      end
    end

    def session(application: nil, browser: :rack_test, options: {})
      driver = drivers.find(browser)
      raise UnspportedBrowserException unless driver

      Capybara.register_driver browser do |app|
        driver.build(app, browser: browser, options: options)
      end

      Session.new(Capybara::Session.new(browser, application))
    end

    def included clazz
      clazz.extend Elements
      pages << clazz if clazz.is_a? Class

      class << clazz
        def url url=nil
          @url = url if url
          @url
        end

        def inherited clazz
          clazz.element_definitions.merge!(element_definitions)
          PageMagic.pages << clazz
        end
      end
    end

    def pages
      @pages||=[]
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
page_magic-1.0.0.alpha4 lib/page_magic.rb
page_magic-1.0.0.alpha3 lib/page_magic.rb
page_magic-0.11.0.alpha8 lib/page_magic.rb
page_magic-0.11.0.alpha7 lib/page_magic.rb