Sha256: 1b1378400063c57c4824c897ff7d25f200fe597f29a562d8ef700a20e78c1b63

Contents?: true

Size: 1.16 KB

Versions: 8

Compression:

Stored size: 1.16 KB

Contents

require_relative "../webdriver_script_adapter/execute_async_script_adapter"
require_relative "../webdriver_script_adapter/frame_adapter"
require_relative "../webdriver_script_adapter/query_selector_adapter"
require_relative "../loader"
require_relative "./configuration"

module Axe
  class Core
    JS_NAME = "axe"

    def initialize(page)
      @page = wrap_driver page
      load_axe_core Axe::Configuration.instance.jslib
    end

    def call(callable)
      callable.call(@page)
    end

    private

    def load_axe_core(source)
      Common::Loader.new(@page, self).call(source) unless already_loaded?
    end

    def already_loaded?
      @page.evaluate_script <<-JS
        window.#{JS_NAME} &&
        typeof #{JS_NAME}.run === 'function'
      JS
    end

    def wrap_driver(driver)
      driver = driver.driver if driver.respond_to? :driver
      ::WebDriverScriptAdapter::QuerySelectorAdapter.wrap(
        ::WebDriverScriptAdapter::FrameAdapter.wrap(
          ::WebDriverScriptAdapter::ExecuteAsyncScriptAdapter.wrap(
            ::WebDriverScriptAdapter::ExecEvalScriptAdapter.wrap(
              driver
            )
          )
        )
      )
    end
  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
axe-core-api-4.2.1 lib/axe/core.rb
axe-core-api-4.2.0.pre.5a82425 lib/axe/core.rb
axe-core-api-4.2.0.pre.bb86ed5 lib/axe/core.rb
axe-core-api-4.2.0.pre.d50cf94 lib/axe/core.rb
axe-core-api-4.2.0 lib/axe/core.rb
axe-core-api-4.0.0.pre.5880fc5 lib/axe/core.rb
axe-core-api-4.0.0.pre.a8e5044 lib/axe/core.rb
axe-core-api-4.0.0.pre.c46720b lib/axe/core.rb