Sha256: 296d26802c7e6f3a3d1b817eca6f720f6fb4b5648c9893e6d582e801ba02df9f

Contents?: true

Size: 1.34 KB

Versions: 14

Compression:

Stored size: 1.34 KB

Contents

require 'page-object'

module MediawikiSelenium
  # Handles on-demand browser instantiation and assignment of the `@browser`
  # instance variable before delegating to `PageObject::PageFactory` methods.
  #
  module PageFactory
    include ::PageObject::PageFactory

    # Instantiates a new browser before delegating to
    # `PageObject::PageFactory#on_page`. All page URLs are also qualified
    # using {Environment#wiki_url}.
    #
    # Additionally, an instance of the current {Environment} is made available
    # as `env` for interpolation of page URLs.
    #
    # @example Referencing the `env` in page URLs
    #   class ArticlePage
    #     page_url 'User:<%= env.user %>'
    #   end
    #
    # @see http://www.rubydoc.info/github/cheezy/page-object
    #
    def on_page(page_class, params = { using_params: {} }, visit = false)
      @browser = browser if visit || !defined?(@browser)
      env = self

      super(page_class, params, false) do |page|
        page.define_singleton_method(:env) do
          env
        end

        if page.respond_to?(:goto)
          wiki_url = method(:wiki_url)

          page.define_singleton_method(:page_url_value) do
            wiki_url.call(super())
          end

          page.goto if visit
        end

        yield page if block_given?
      end
    end

    # @see #on_page
    alias on on_page
  end
end

Version data entries

14 entries across 14 versions & 1 rubygems

Version Path
mediawiki_selenium-1.8.1 lib/mediawiki_selenium/page_factory.rb
mediawiki_selenium-1.8.0 lib/mediawiki_selenium/page_factory.rb
mediawiki_selenium-1.7.4 lib/mediawiki_selenium/page_factory.rb
mediawiki_selenium-1.7.3 lib/mediawiki_selenium/page_factory.rb
mediawiki_selenium-1.7.2 lib/mediawiki_selenium/page_factory.rb
mediawiki_selenium-1.7.1 lib/mediawiki_selenium/page_factory.rb
mediawiki_selenium-1.7.0 lib/mediawiki_selenium/page_factory.rb
mediawiki_selenium-1.6.5 lib/mediawiki_selenium/page_factory.rb
mediawiki_selenium-1.6.4 lib/mediawiki_selenium/page_factory.rb
mediawiki_selenium-1.6.3 lib/mediawiki_selenium/page_factory.rb
mediawiki_selenium-1.6.2 lib/mediawiki_selenium/page_factory.rb
mediawiki_selenium-1.6.1 lib/mediawiki_selenium/page_factory.rb
mediawiki_selenium-1.6.0 lib/mediawiki_selenium/page_factory.rb
mediawiki_selenium-1.5.0 lib/mediawiki_selenium/page_factory.rb