Moved back to selenium-webdriver for browser testing.

This commit is contained in:
Martin Edenhofer 2013-02-23 23:54:48 +01:00
parent b899c03f93
commit e35ac9b468
11 changed files with 116 additions and 58 deletions

View file

@ -72,7 +72,6 @@ group :development, :test do
gem 'simplecov-rcov'
# UI tests w/ Selenium
#gem 'selenium-webdriver'
gem 'watir-webdriver'
gem 'selenium-webdriver'
end

View file

@ -1,17 +1,17 @@
# encoding: utf-8
require 'browser_test_helper'
class AaaGettingStarted < ActiveSupport::TestCase
test 'getting started' do
class AaaGettingStartedTest < TestCase
def test_getting_started
tests = [
{
:name => 'start',
:instance => Watir::Browser.new,
:url => 'http://localhost:3000/#getting_started',
:instance => browser_instance,
:url => browser_url + '/#getting_started',
:action => [
{
:execute => 'wait',
:value => 6,
:value => 1,
},
{
:execute => 'check',

View file

@ -1,13 +1,13 @@
# encoding: utf-8
require 'browser_test_helper'
class Auth < ActiveSupport::TestCase
test 'authentication' do
class AuthTest < TestCase
def test_authentication
tests = [
{
:name => 'start',
:instance => Watir::Browser.new,
:url => 'http://localhost:3000',
:instance => browser_instance,
:url => browser_url,
:action => [
{
:execute => 'check',

View file

@ -1,13 +1,13 @@
# encoding: utf-8
require 'browser_test_helper'
class AuthMaster < ActiveSupport::TestCase
test 'authentication' do
class AuthMasterTest < TestCase
def test_authentication
tests = [
{
:name => 'start',
:instance => Watir::Browser.new,
:url => 'http://localhost:3000',
:instance => browser_instance,
:url => browser_url,
:action => [
{
:execute => 'check',

View file

@ -1,19 +1,19 @@
# encoding: utf-8
require 'browser_test_helper'
class Chat < ActiveSupport::TestCase
test 'websocket' do
class ChatTest < TestCase
def test_websocket
message = 'message 1äöüß ' + rand(99999999999999999).to_s
tests = [
{
:name => 'start',
:instance1 => Watir::Browser.new,
:instance2 => Watir::Browser.new,
:instance1 => browser_instance,
:instance2 => browser_instance,
:instance1_username => 'master@example.com',
:instance1_password => 'test',
:instance2_username => 'master@example.com',
:instance2_password => 'test',
:url => 'http://localhost:3000',
:url => browser_url,
:action => [
{
:where => :instance1,
@ -27,7 +27,24 @@ class Chat < ActiveSupport::TestCase
:css => '#login',
:result => false,
},
{
:where => :instance1,
:execute => 'click',
:css => '#chat_toogle',
},
{
:execute => 'wait',
:value => 4,
},
{
:where => :instance1,
:execute => 'click',
:css => '#chat_toogle',
},
{
:execute => 'wait',
:value => 1,
},
{
:where => :instance1,
:execute => 'click',
@ -47,7 +64,7 @@ class Chat < ActiveSupport::TestCase
},
{
:execute => 'wait',
:value => 3,
:value => 6,
},
{
:where => :instance1,
@ -63,10 +80,10 @@ class Chat < ActiveSupport::TestCase
:value => message,
:match_result => true,
},
{
:execute => 'wait',
:value => 10,
},
# {
# :execute => 'wait',
# :value => 1,
# },
],
},
]

View file

@ -1,8 +1,8 @@
# encoding: utf-8
require 'browser_test_helper'
class CustomerTicketCreate < ActiveSupport::TestCase
test 'customer ticket create' do
class CustomerTicketCreateTest < TestCase
def test_customer_ticket_create
tests = [
{
:name => 'customer ticket create',

View file

@ -1,8 +1,8 @@
# encoding: utf-8
require 'browser_test_helper'
class Preferences < ActiveSupport::TestCase
test 'preferences' do
class PreferencesTest < TestCase
def test_preferences
tests = [
{
:name => 'preferences',

View file

@ -1,8 +1,8 @@
# encoding: utf-8
require 'browser_test_helper'
class TestSetting < ActiveSupport::TestCase
test 'setting' do
class SettingTest < TestCase
def test_setting
tests = [
{
:name => 'setting',

View file

@ -1,23 +1,19 @@
# encoding: utf-8
require 'browser_test_helper'
class Signup < ActiveSupport::TestCase
test 'signup' do
class SignupTest < TestCase
def test_signup
signup_user_email = 'signup-test-' + rand(999999).to_s + '@example.com'
tests = [
{
:name => 'start',
:instance => Watir::Browser.new,
:url => 'http://localhost:3000',
:instance => browser_instance,
:url => browser_url,
:action => [
{
:execute => 'click',
:css => 'a[href="#signup"]',
},
{
:execute => 'wait',
:value => 1,
},
{
:execute => 'check',
:css => '#form-signup',
@ -59,7 +55,7 @@ class Signup < ActiveSupport::TestCase
},
{
:execute => 'wait',
:value => 3,
:value => 2,
},
# check action

View file

@ -1,17 +1,50 @@
ENV["RAILS_ENV"] = "test"
require File.expand_path('../../config/environment', __FILE__)
require 'rails/test_help'
require 'watir-webdriver'
#require 'watir-webdriver'
require 'selenium-webdriver'
class ActiveSupport::TestCase
class TestCase < Test::Unit::TestCase
def browser_url
ENV['BROWSER_URL'] || 'http://localhost:3000'
end
def browser_instance
if !@browsers
@browsers = []
end
if !ENV['REMOTE_URL']
browser = Selenium::WebDriver.for :firefox
@browsers.push browser
return browser
end
# return Watir::Browser.new if !ENV['REMOTE_URL']
caps = Selenium::WebDriver::Remote::Capabilities.send( ENV['BROWSER'] )
caps.platform = ENV['BROWSER_OS'] || 'Windows 2008'
caps.version = ENV['BROWSER_VERSION'] || '8'
Selenium::WebDriver.for(
:remote,
:url => ENV['REMOTE_URL'],
:desired_capabilities => caps,
)
end
def teardown
return if !@browsers
@browsers.each{ |browser|
browser.close
}
end
# Add more helper methods to be used by all tests here...
def browser_login(data)
all_tests = [
{
:name => 'login',
:instance => data[:instance] || Watir::Browser.new,
:url => data[:url] || 'http://localhost:3000',
:instance => data[:instance] || browser_instance,
:url => data[:url] || browser_url,
:action => [
{
:execute => 'wait',
@ -99,7 +132,7 @@ class ActiveSupport::TestCase
instance = test[:instance]
end
if test[:url]
instance.goto( test[:url] )
instance.get( test[:url] )
end
if test[:action]
test[:action].each { |action|
@ -119,32 +152,45 @@ class ActiveSupport::TestCase
def browser_element_action(test, action, instance)
if action[:css]
element = instance.element( { :css => action[:css] } )
begin
element = instance.find_element( { :css => action[:css] } )
rescue
element = nil
end
if action[:result] == false
assert( !element.exists?, "(#{test[:name]}) Element with css '#{action[:css]}' exists" )
assert( !element, "(#{test[:name]}) Element with css '#{action[:css]}' exists" )
else
assert( element.exists?, "(#{test[:name]}) Element with css '#{action[:css]}' doesn't exist" )
assert( element, "(#{test[:name]}) Element with css '#{action[:css]}' doesn't exist" )
end
elsif action[:element] == :url
if instance.url =~ /#{Regexp.quote(action[:result])}/
assert( true, "(#{test[:name]}) url #{instance.url} is matching #{action[:result]}" )
if instance.current_url =~ /#{Regexp.quote(action[:result])}/
assert( true, "(#{test[:name]}) url #{instance.current_url} is matching #{action[:result]}" )
else
assert( false, "(#{test[:name]}) url #{instance.url} is not matching #{action[:result]}" )
assert( false, "(#{test[:name]}) url #{instance.current_url} is not matching #{action[:result]}" )
end
else
assert( false, "(#{test[:name]}) unknow selector for '#{action[:element]}'" )
end
if action[:execute] == 'set'
element.to_subtype.set( action[:value] )
element.send_keys( action[:value] )
elsif action[:execute] == 'select'
element.to_subtype.select( action[:value] )
dropdown = Selenium::WebDriver::Support::Select.new(element)
dropdown.select_by(:text, action[:value])
elsif action[:execute] == 'click'
element.click
elsif action[:execute] == 'send_key'
element.send_keys action[:value]
elsif action[:execute] == 'match'
if action[:css] =~ /select/
success = element.to_subtype.selected?(action[:value])
dropdown = Selenium::WebDriver::Support::Select.new(element)
success = false
if dropdown.selected_options
dropdown.selected_options.each {|option|
if option.text == action[:value]
success = true
end
}
end
if action[:match_result]
if success
assert( true, "(#{test[:name]}) matching '#{action[:value]}' in select list" )
@ -159,8 +205,8 @@ class ActiveSupport::TestCase
end
end
else
if action[:css] =~ /input|textarea/i
text = element.to_subtype.value
if action[:css] =~ /input/i
text = element.attribute('value')
else
text = element.text
end

View file

@ -96,4 +96,4 @@ class TagTest < ActiveSupport::TestCase
assert( !list.include?( test[:tag_add][:item] ), "Tag entry destroyed")
}
end
end
end