class Locution::Sdk::Listener

Public Class Methods

new(access_token, test_name = "not provided", base_url = 'http://locution.herokuapp.com') click to toggle source
# File lib/locution/sdk/listener.rb, line 8
def initialize(access_token, test_name = "not provided", base_url = 'http://locution.herokuapp.com')
  @base_url = base_url
  @access_token = access_token
  response = ::RestClient.post "#{@base_url}/tests", {
    access_token: access_token,
    test_name: test_name,
    start_time: Time.now
  }
  @test_id = response.body
end

Public Instance Methods

after_execute_script(script, driver) click to toggle source
# File lib/locution/sdk/listener.rb, line 42
def after_execute_script(script, driver)
  unless @ignore_javascript_inspection
    ::RestClient.post "#{@base_url}/tests/#{@test_id}/locators", {
      access_token: @access_token,
      locator_value: "execute script, #{script}",
      start_time: @locator_start_time,
      end_time: Time.now
    }
  end
end
after_find(by, what, driver) click to toggle source
# File lib/locution/sdk/listener.rb, line 25
def after_find(by, what, driver)
  @ignore_javascript_inspection = false
  ::RestClient.post "#{@base_url}/tests/#{@test_id}/locators", {
    access_token: @access_token,
    locator_value: "#{by}, #{what}",
    locator_count: @number_of_elements_found,
    start_time: @locator_start_time,
    end_time: Time.now
  }
end
after_quit(driver) click to toggle source
# File lib/locution/sdk/listener.rb, line 53
def after_quit(driver)
  ::RestClient.put "#{@base_url}/tests/#{@test_id}", {
    access_token: @access_token,
    end_time: Time.now
  }
end
before_execute_script(script, driver) click to toggle source
# File lib/locution/sdk/listener.rb, line 36
def before_execute_script(script, driver)
  unless @ignore_javascript_inspection
    @locator_start_time = Time.now
  end
end
before_find(by, what, driver) click to toggle source
# File lib/locution/sdk/listener.rb, line 19
def before_find(by, what, driver)
  @ignore_javascript_inspection = true
  @number_of_elements_found = driver.execute_script("return #{get_javascript(by, what)}")
  @locator_start_time = Time.now
end

Private Instance Methods

get_javascript(by, what) click to toggle source
# File lib/locution/sdk/listener.rb, line 62
def get_javascript(by, what)
  if by.include? 'id'
    "document.querySelectorAll('##{what}').length"
  elsif by.include? 'class'
    "document.getElementsByClassName('#{what}').length"
  elsif by.include? 'tag'
    "document.getElementsByTagName('#{what}').length"
  elsif by.include? 'name'
    "document.getElementsByName('#{what}').length"
  elsif by.include? 'css'
    "document.querySelectorAll('#{what}').length"
  elsif by.include? 'xpath'
    "document.evaluate(\"#{what}\", document.documentElement, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null).snapshotLength"
  elsif by.include? 'text'
    what = "//a[contains(text(),'#{what}')]"
    "document.evaluate(\"#{what}\", document.documentElement, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null).snapshotLength"
  end
end