Class: Konacha::Runner

Inherits:
Object
  • Object
show all
Defined in:
lib/konacha/runner.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(session = nil) ⇒ Runner

Returns a new instance of Runner.



12
13
14
15
# File 'lib/konacha/runner.rb', line 12

def initialize(session = nil)
  @session = session
  @reporter = Konacha::Reporter.new(*Konacha.formatters)
end

Instance Attribute Details

#reporterObject (readonly)

Returns the value of attribute reporter.



10
11
12
# File 'lib/konacha/runner.rb', line 10

def reporter
  @reporter
end

Class Method Details

.startObject



5
6
7
8
# File 'lib/konacha/runner.rb', line 5

def self.start
  Capybara.server_port = Konacha.runner_port
  new.run
end

Instance Method Details

#run(path = '/') ⇒ Object



17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# File 'lib/konacha/runner.rb', line 17

def run(path = '/')
  session.visit path

  events_consumed = 0
  done = false
  begin
    sleep 0.1
    events = JSON.parse(session.evaluate_script('window.top.Konacha.getEvents()'))
    if events.present?
      events[events_consumed..-1].each do |event|
        done = true if event['event'] == 'end'
        reporter.process_mocha_event(event)
      end

      events_consumed = events.length
    end
  end until done

  reporter.passed?
rescue => e
  raise e, "Error communicating with browser process: #{e}", e.backtrace
end

#sessionObject



40
41
42
# File 'lib/konacha/runner.rb', line 40

def session
  @session ||= Capybara::Session.new(Konacha.driver, Konacha.application)
end