Module: Applitools::UniversalNewApi

Included in:
EyesBase
Defined in:
lib/applitools/core/universal_new_api.rb

Instance Method Summary collapse

Instance Method Details

#extract_text(*args) ⇒ Object

export type OCRExtractSettings<TElement, TSelector> =

target: RegionReference<TElement, TSelector>
hint?: string
minMatch?: number
language?: string



12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
# File 'lib/applitools/core/universal_new_api.rb', line 12

def extract_text(*args)
  image_target = args[0].is_a?(Hash) ? args[0] : nil
  targets_array = args[0].is_a?(Hash) ? args[1].to_a : args[0]
  targets_array = targets_array.map do |target|
    # Handle element references
    if target['target'].is_a?(::Selenium::WebDriver::Element)
      ref = target['target'].ref
      # Handle different formats of element refs
      ref = ref[1] if ref.is_a?(Array) && ref[0] == :element
      target['target'] = { elementId: ref }
    elsif target['target'].is_a?(String)
      # It's a CSS selector
      target['target'] = target['target']
    elsif target['target'].is_a?(Hash)
      # Handle coordinate-based regions
      if target['target']['left']
        target['target']['x'] = target['target'].delete('left')
      end
      if target['target']['top']
        target['target']['y'] = target['target'].delete('top')
      end
    end
    target[:region] = target.delete('target')
    target
  end
  driver_target = respond_to?(:driver) ? Applitools::Selenium.universal_driver_config(driver) : image_target
  result = universal_eyes.extract_text(targets_array, driver_target)
  result
end

#extract_text_regions(patterns_array) ⇒ Object

export type OCRSearchSettings<TPattern extends string> =

patterns: TPattern[]
ignoreCase?: boolean
firstOnly?: boolean
language?: string



49
50
51
52
53
# File 'lib/applitools/core/universal_new_api.rb', line 49

def extract_text_regions(patterns_array)
  driver_target = respond_to?(:driver) ? Applitools::Selenium.universal_driver_config(driver) : { image: patterns_array.delete('image') }
  results = universal_eyes.extract_text_regions(patterns_array, driver_target)
  Applitools::Utils.deep_stringify_keys(results)
end

#locate(locate_settings) ⇒ Object



56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
# File 'lib/applitools/core/universal_new_api.rb', line 56

def locate(locate_settings)
  settings = {
    locatorNames: locate_settings[:locator_names],
    firstOnly: !!locate_settings[:first_only]
  }
  driver_target = locate_settings.has_key?(:image) ? {image: locate_settings[:image]} : Applitools::Selenium.universal_driver_config(driver)
  results = universal_eyes.locate(settings, driver_target)

  old_style = results.map do |k, v|
    val = v.map {|r| {left: r[:x], top: r[:y], width: r[:width], height: r[:height]} }
    [k, val]
  end.to_h

  Applitools::Utils.deep_stringify_keys(old_style)
end