Sha256: c7ec9e558b0f7a80262b4255c3425f1199c88907d1325e86a4375e5b88d8a7f8

Contents?: true

Size: 1.24 KB

Versions: 1

Compression:

Stored size: 1.24 KB

Contents

module Capybara
  class << self
    attr_writer :default_driver, :current_driver, :javascript_driver

    attr_accessor :app

    def default_driver
      @default_driver || :rack_test
    end

    def current_driver
      @current_driver || default_driver 
    end
    alias_method :mode, :current_driver
    
    def javascript_driver
      @javascript_driver || :selenium
    end

    def use_default_driver
      @current_driver = nil 
    end

    def current_session
      session_pool["#{current_driver}#{app.object_id}"] ||= Capybara::Session.new(current_driver, app)
    end
    
    def reset_sessions!
      @session_pool = nil
    end

  private

    def session_pool
      @session_pool ||= {}
    end
  end

  extend(self)

  def page
    Capybara.current_session
  end

  SESSION_METHODS = [
    :visit, :body, :click_link, :click_button, :fill_in, :choose, :has_xpath?, :has_css?,
    :check, :uncheck, :attach_file, :select, :has_content?, :within, :within_fieldset,
    :within_table, :save_and_open_page, :find_field, :find_link, :find_button,
    :field_labeled
  ]
  SESSION_METHODS.each do |method|
    class_eval <<-RUBY, __FILE__, __LINE__+1
      def #{method}(*args, &block)
        page.#{method}(*args, &block)
      end
    RUBY
  end

end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
capybara-0.1.2 lib/capybara/dsl.rb