starting webric while test:ui call; adapted login test
[opensuse:yast-web-client.git] / webclient / lib / tasks / selenium.rake
1 $selenium_available = false
2
3 begin
4     require 'rubygems'
5     # try loading all selenium task definitions
6     require 'selenium/rake/tasks'
7     $selenium_available = true
8     # define selenium:rc:start task
9     Selenium::Rake::RemoteControlStartTask.new do |rc|
10               rc.port = 4444
11               rc.timeout_in_seconds = 3 * 60
12               rc.background = true
13               rc.wait_until_up_and_running = true
14               rc.jar_file = Dir.glob(File.join(File.dirname(__FILE__),"../..", "vendor/selenium-remote-control/selenium-server*.jar")).first
15               rc.additional_args << "-singleWindow"
16     end
17
18     # define selenium:rc:stop task
19     Selenium::Rake::RemoteControlStopTask.new do |rc|
20         rc.host = "localhost"
21               rc.port = 4444
22               rc.timeout_in_seconds = 3 * 60
23     end
24 rescue LoadError
25     puts "Selenium not available"
26 end
27
28 namespace :sinatra do
29     task :start do
30       cmd = "ruby #{File.join(File.dirname(__FILE__),"../..", "test/dummy-host/host.rb")} &"
31       system cmd
32     end
33     task :stop do
34       system "ps a|grep dummy-host/host.rb|cut -c -6 | xargs kill -SIGTERM"
35     end
36 end
37
38 namespace :webric do
39     task :start do
40       cmd = "#{File.join(File.dirname(__FILE__),"../..", "script/server")} -p 4568 &"
41       system cmd
42     end
43     task :stop do
44       system "ps a|grep server|grep 4568|cut -c -6 | xargs kill -SIGTERM"
45     end
46 end
47
48 namespace :test do
49     # define test:ui:check task
50     Rake::TestTask.new(:"ui:check") do |t|
51               t.libs << "test"
52               t.pattern = 'test/ui/**/*_test.rb'
53               t.verbose = true
54     end
55
56     Rake::Task['test:ui:check'].comment = "Note: Selenium Server must be running"
57
58     # define test:ui task - start/shut down Selenium server component automatically
59     desc 'Run UI tests using Selenium testing framework'
60     if not $selenium_available
61       task :ui do 
62             $stderr.puts "ERROR: 'selenium-client' gem is missing, UI testing task (test:ui)"
63             $stderr.puts "       cannot be started. Install 'selenium-client' Ruby gem first."
64             exit 1
65         end
66     elsif !Gem.available? 'test-unit', '>=2.0.2'
67     task :ui do 
68             $stderr.puts "ERROR: 'test-unit' gem is missing, UI testing task (test:ui)"
69             $stderr.puts "       cannot be started. Install 'test-unit' Ruby gem first."
70             exit 1
71         end
72     else
73           task :ui => [:"webric:start",:"sinatra:start", :"selenium:rc:start", :"test:ui:check", :"selenium:rc:stop", :"sinatra:stop", :"webric:stop"]
74     end
75 end
76
77 # vim: ft=ruby