Sha256: cd74a8000dea4d65b6018727e10253f71245583bf0a9062c20b80fa73ec294b1

Contents?: true

Size: 993 Bytes

Versions: 5

Compression:

Stored size: 993 Bytes

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}.
    #
    # @see http://www.rubydoc.info/github/cheezy/page-object
    #
    def on_page(page_class, params = { using_params: {} }, visit = false)
      @browser = browser if visit

      super(page_class, params, false) do |page|
        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

5 entries across 5 versions & 1 rubygems

Version Path
mediawiki_selenium-1.3.0 lib/mediawiki_selenium/page_factory.rb
mediawiki_selenium-1.2.1 lib/mediawiki_selenium/page_factory.rb
mediawiki_selenium-1.2.0 lib/mediawiki_selenium/page_factory.rb
mediawiki_selenium-1.1.0 lib/mediawiki_selenium/page_factory.rb
mediawiki_selenium-1.0.2 lib/mediawiki_selenium/page_factory.rb