Sha256: bc16add8449c2a0e2bed2651dbe31f10afe12043e7401068c6d433153a9897d5

Contents?: true

Size: 1.39 KB

Versions: 2

Compression:

Stored size: 1.39 KB

Contents

module Culerity

  class RemoteBrowserProxy < RemoteObjectProxy
    def initialize(io, browser_options = {})
      @io = io
      @remote_object_id = "celerity".inspect
      @remote_object_id = new_browser(browser_options).inspect
    end
    
    # 
    # Calls the block until it returns true or +time_to_wait+ is reached.
    # +time_to_wait+ is 30 seconds by default
    # 
    # Returns true upon success
    # Raises Timeout::Error when +time_to_wait+ is reached.
    # 
    def wait_until time_to_wait=30, &block
      Timeout.timeout(time_to_wait) do
        until block.call
          sleep 0.1
        end
      end
      true
    end
    
    # 
    # Calls the block until it doesn't return true or +time_to_wait+ is reached.
    # +time_to_wait+ is 30 seconds by default
    # 
    # Returns true upon success
    # Raises Timeout::Error when +time_to_wait+ is reached.
    # 
    def wait_while time_to_wait=30, &block
      Timeout.timeout(time_to_wait) do
        while block.call
          sleep 0.1
        end
      end
      true
    end
    
    
    #
    # Specify whether to accept or reject all confirm js dialogs
    # for the code in the block that's run.
    # 
    def confirm(bool, &block)
      blk = "lambda { #{bool} }"
      
      self.send_remote(:add_listener, :confirm) { blk }
      block.call
      self.send_remote(:remove_listener, :confirm, lambda {blk})
    end
    
  end
  
  
end

Version data entries

2 entries across 2 versions & 2 rubygems

Version Path
fletcherm-culerity-0.2.7 lib/culerity/remote_browser_proxy.rb
culerity-0.2.7 lib/culerity/remote_browser_proxy.rb