Class: Jasmine::Runner

Inherits:
Object
  • Object
show all
Defined in:
lib/jasmine-ruby/jasmine_runner.rb

Instance Method Summary collapse

Constructor Details

#initialize(selenium_jar_path, root_path, spec_files, options = {}) ⇒ Runner

Returns a new instance of Runner.



229
230
231
232
233
234
235
236
237
238
# File 'lib/jasmine-ruby/jasmine_runner.rb', line 229

def initialize(selenium_jar_path, root_path, spec_files, options={})
  @root_path = root_path
  @selenium_jar_path = selenium_jar_path
  @spec_files = spec_files
  @options = options

  @browser = options[:browser] ? options[:browser].delete(:browser) : 'firefox'
  @selenium_pid = nil
  @jasmine_server_pid = nil
end

Instance Method Details

#eval_js(script) ⇒ Object



289
290
291
# File 'lib/jasmine-ruby/jasmine_runner.rb', line 289

def eval_js(script)
  @client.eval_js(script)
end

#runObject



278
279
280
281
282
283
284
285
286
287
# File 'lib/jasmine-ruby/jasmine_runner.rb', line 278

def run
  begin
    start
    puts "servers are listening on their ports -- running the test script..."
    tests_passed = @client.run
  ensure
    stop
  end
  return tests_passed
end

#startObject



240
241
242
243
244
# File 'lib/jasmine-ruby/jasmine_runner.rb', line 240

def start
  start_servers
  @client = Jasmine::SimpleClient.new("localhost", @selenium_server_port, "*#{@browser}", "http://localhost:#{@jasmine_server_port}/")
  @client.connect
end

#start_serversObject



251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
# File 'lib/jasmine-ruby/jasmine_runner.rb', line 251

def start_servers
  @jasmine_server_port = Jasmine::find_unused_port
  @selenium_server_port = Jasmine::find_unused_port

  @selenium_pid = fork do
    Process.setpgrp
    exec "java -jar #{@selenium_jar_path} -port #{@selenium_server_port} > /dev/null 2>&1"
  end
  puts "selenium started.  pid is #{@selenium_pid}"

  @jasmine_server_pid = fork do
    Process.setpgrp
    Jasmine::SimpleServer.start(@jasmine_server_port, @root_path, @spec_files, @options)
    exit! 0
  end
  puts "jasmine server started.  pid is #{@jasmine_server_pid}"

  Jasmine::wait_for_listener(@selenium_server_port, "selenium server")
  Jasmine::wait_for_listener(@jasmine_server_port, "jasmine server")
end

#stopObject



246
247
248
249
# File 'lib/jasmine-ruby/jasmine_runner.rb', line 246

def stop
  @client.disconnect
  stop_servers
end

#stop_serversObject



272
273
274
275
276
# File 'lib/jasmine-ruby/jasmine_runner.rb', line 272

def stop_servers
  puts "shutting down the servers..."
  Jasmine::kill_process_group(@selenium_pid) if @selenium_pid
  Jasmine::kill_process_group(@jasmine_server_pid) if @jasmine_server_pid
end