Class: Teems::Services::SafariJsRunner

Inherits:
Object
  • Object
show all
Defined in:
lib/teems/services/safari_js_runner.rb

Overview

Runs JavaScript in Safari’s current tab via AppleScript

Instance Method Summary collapse

Constructor Details

#initialize(output: nil) ⇒ SafariJsRunner

Returns a new instance of SafariJsRunner.



9
10
11
# File 'lib/teems/services/safari_js_runner.rb', line 9

def initialize(output: nil)
  @output = output
end

Instance Method Details

#available?Boolean

Returns:

  • (Boolean)


13
# File 'lib/teems/services/safari_js_runner.rb', line 13

def available? = system('which', 'osascript', out: File::NULL, err: File::NULL)

#execute_js(js_code) ⇒ Object



15
16
17
18
# File 'lib/teems/services/safari_js_runner.rb', line 15

def execute_js(js_code)
  escaped = escape_js(js_code)
  run_applescript(safari_js_script(escaped))
end


20
21
22
# File 'lib/teems/services/safari_js_runner.rb', line 20

def navigate(url)
  run_applescript(navigate_script(url))
end

#page_urlObject



32
33
34
# File 'lib/teems/services/safari_js_runner.rb', line 32

def page_url
  run_applescript(page_url_script)
end

#wait_for_load(timeout: 15) ⇒ Object

Raises:



24
25
26
27
28
29
30
# File 'lib/teems/services/safari_js_runner.rb', line 24

def wait_for_load(timeout: 15)
  timeout.times do
    sleep 1
    return if execute_js('document.readyState') == 'complete'
  end
  raise Teems::Error, 'Timed out waiting for page to load'
end