From aea5dd643a5b8687ca4960d9affc769d084a2d1a Mon Sep 17 00:00:00 2001 From: Martin Edenhofer Date: Thu, 25 Jul 2013 11:11:20 +0200 Subject: [PATCH] Selenium adjustments. --- .../agent_ticket_actions_level1_test.rb | 144 ++---------------- .../agent_ticket_actions_level2_test.rb | 87 +---------- .../agent_ticket_actions_level3_test.rb | 76 +-------- .../agent_ticket_actions_level4_test.rb | 64 ++------ test/browser/auth_customer_test.rb | 3 + test/browser/taskbar_session_test.rb | 30 ++-- test/browser/taskbar_task_test.rb | 16 +- test/browser_test_helper.rb | 126 ++++++++++----- 8 files changed, 152 insertions(+), 394 deletions(-) diff --git a/test/browser/agent_ticket_actions_level1_test.rb b/test/browser/agent_ticket_actions_level1_test.rb index 83f8eb319..8d3df0f6d 100644 --- a/test/browser/agent_ticket_actions_level1_test.rb +++ b/test/browser/agent_ticket_actions_level1_test.rb @@ -10,73 +10,13 @@ class AgentTicketActionLevel1Test < TestCase { :execute => 'close_all_tasks', }, + + # create ticket { - :execute => 'click', - :css => 'a[href="#new"]', - }, - { - :execute => 'click', - :css => 'a[href="#ticket_create/call_inbound"]', - }, - { - :execute => 'wait', - :value => 5, - }, - { - :execute => 'check', - :css => '.active .ticket_create', - :result => true, - }, - { - :execute => 'wait', - :value => 1, - }, - { - :execute => 'set', - :css => '.active .ticket_create input[name="customer_id_autocompletion"]', - :value => 'ma', - }, - { - :execute => 'wait', - :value => 4, - }, - { - :execute => 'sendkey', - :css => '.active .ticket_create input[name="customer_id_autocompletion"]', - :value => :arrow_down, - }, - { - :execute => 'sendkey', - :css => '.active .ticket_create input[name="customer_id_autocompletion"]', - :value => :tab, - }, - { - :execute => 'select', - :css => '.active .ticket_create select[name="group_id"]', - :value => 'Users', - }, - { - :execute => 'set', - :css => '.active .ticket_create input[name="subject"]', - :value => 'some subject 123äöü', - }, - { - :execute => 'set', - :css => '.active .ticket_create textarea[name="body"]', - :value => 'some body 123äöü', - }, - { - :execute => 'click', - :css => '.active .form-actions button[type="submit"]', - }, - { - :execute => 'wait', - :value => 6, - }, - { - :execute => 'check', - :element => :url, - :result => '#ticket/zoom/', + :execute => 'create_ticket', + :group => 'Users', + :subject => 'some subject 123äöü', + :body => 'some body 123äöü', }, # check ticket @@ -136,73 +76,13 @@ class AgentTicketActionLevel1Test < TestCase { :name => 'agent ticket create 2', :action => [ + + # create ticket { - :execute => 'click', - :css => 'a[href="#new"]', - }, - { - :execute => 'click', - :css => 'a[href="#ticket_create/call_inbound"]', - }, - { - :execute => 'wait', - :value => 5, - }, - { - :execute => 'check', - :css => '.active .ticket_create', - :result => true, - }, - { - :execute => 'wait', - :value => 1, - }, - { - :execute => 'set', - :css => '.active .ticket_create input[name="customer_id_autocompletion"]', - :value => 'ma', - }, - { - :execute => 'wait', - :value => 4, - }, - { - :execute => 'sendkey', - :css => '.active .ticket_create input[name="customer_id_autocompletion"]', - :value => :arrow_down, - }, - { - :execute => 'sendkey', - :css => '.active .ticket_create input[name="customer_id_autocompletion"]', - :value => :tab, - }, - { - :execute => 'select', - :css => '.active .ticket_create select[name="group_id"]', - :value => 'Users', - }, - { - :execute => 'set', - :css => '.active .ticket_create input[name="subject"]', - :value => 'test to merge', - }, - { - :execute => 'set', - :css => '.active .ticket_create textarea[name="body"]', - :value => 'some body 123äöü 222', - }, - { - :execute => 'click', - :css => '.active .form-actions button[type="submit"]', - }, - { - :execute => 'wait', - :value => 6, - }, - { - :execute => 'check', - :element => :url, - :result => '#ticket/zoom/', + :execute => 'create_ticket', + :group => 'Users', + :subject => 'test to merge', + :body => 'some body 123äöü 222', }, # check ticket diff --git a/test/browser/agent_ticket_actions_level2_test.rb b/test/browser/agent_ticket_actions_level2_test.rb index ef7619f0b..6a6214e19 100644 --- a/test/browser/agent_ticket_actions_level2_test.rb +++ b/test/browser/agent_ticket_actions_level2_test.rb @@ -27,84 +27,10 @@ class AgentTicketActionsLevel2Test < TestCase # create ticket { :where => :instance1, - :execute => 'click', - :css => 'a[href="#new"]', - }, - { - :where => :instance1, - :execute => 'click', - :css => 'a[href="#ticket_create/call_inbound"]', - }, - { - :execute => 'wait', - :value => 5, - }, - { - :where => :instance1, - :execute => 'check', - :css => '.active .ticket_create', - :result => true, - }, - { - :where => :instance1, - :execute => 'set', - :css => '.active .ticket_create input[name="customer_id_autocompletion"]', - :value => 'ma', - }, - { - :execute => 'wait', - :value => 4, - }, - { - :where => :instance1, - :execute => 'sendkey', - :css => '.active .ticket_create input[name="customer_id_autocompletion"]', - :value => :arrow_down, - }, - { - :where => :instance1, - :execute => 'sendkey', - :css => '.active .ticket_create input[name="customer_id_autocompletion"]', - :value => :tab, - }, - { - :where => :instance1, - :execute => 'select', - :css => '.active .ticket_create select[name="group_id"]', - :value => 'Users', - }, - { - :where => :instance1, - :execute => 'set', - :css => '.active .ticket_create input[name="subject"]', - :value => 'some level 2 subject 123äöü', - }, - { - :where => :instance1, - :execute => 'set', - :css => '.active .ticket_create textarea[name="body"]', - :value => 'some level 2 body 123äöü', - }, - { - :where => :instance1, - :execute => 'click', - :css => '.active .form-actions button[type="submit"]', - }, - { - :execute => 'wait', - :value => 5, - }, - { - :where => :instance1, - :execute => 'check', - :css => '#login', - :result => false, - }, - { - :where => :instance1, - :execute => 'check', - :element => :url, - :result => '#ticket/zoom/', + :execute => 'create_ticket', + :group => 'Users', + :subject => 'some level 2 subject 123äöü', + :body => 'some level 2 body 123äöü', }, # check ticket @@ -118,7 +44,7 @@ class AgentTicketActionsLevel2Test < TestCase # remember old ticket where we want to merge to { - :where => :instance1, + :where => :instance1, :execute => 'match', :css => '.active .ticket-zoom small', :value => '^(.*)$', @@ -218,10 +144,9 @@ class AgentTicketActionsLevel2Test < TestCase }, { :execute => 'wait', - :value => 1, + :value => 3, }, - # set body in edit area { :where => :instance2, diff --git a/test/browser/agent_ticket_actions_level3_test.rb b/test/browser/agent_ticket_actions_level3_test.rb index 6dd0e4412..5a7693c99 100644 --- a/test/browser/agent_ticket_actions_level3_test.rb +++ b/test/browser/agent_ticket_actions_level3_test.rb @@ -27,78 +27,10 @@ class AgentTicketActionsLevel3Test < TestCase # create ticket { :where => :instance1, - :execute => 'click', - :css => 'a[href="#new"]', - }, - { - :where => :instance1, - :execute => 'click', - :css => 'a[href="#ticket_create/call_inbound"]', - }, - { - :execute => 'wait', - :value => 5, - }, - { - :where => :instance1, - :execute => 'check', - :css => '.active .ticket_create', - :result => true, - }, - { - :where => :instance1, - :execute => 'set', - :css => '.active .ticket_create input[name="customer_id_autocompletion"]', - :value => 'ma', - }, - { - :execute => 'wait', - :value => 4, - }, - { - :where => :instance1, - :execute => 'sendkey', - :css => '.active .ticket_create input[name="customer_id_autocompletion"]', - :value => :arrow_down, - }, - { - :where => :instance1, - :execute => 'sendkey', - :css => '.active .ticket_create input[name="customer_id_autocompletion"]', - :value => :tab, - }, - { - :where => :instance1, - :execute => 'select', - :css => '.active .ticket_create select[name="group_id"]', - :value => 'Users', - }, - { - :where => :instance1, - :execute => 'set', - :css => '.active .ticket_create input[name="subject"]', - :value => 'some level 3 subject 123äöü', - }, - { - :where => :instance1, - :execute => 'set', - :css => '.active .ticket_create textarea[name="body"]', - :value => 'some level 3 body 123äöü', - }, - { - :where => :instance1, - :execute => 'click', - :css => '.active .form-actions button[type="submit"]', - }, - { - :execute => 'wait', - :value => 6, - }, - { - :where => :instance1, - :execute => 'check', - :element => :url, - :result => '#ticket/zoom/', + :execute => 'create_ticket', + :group => 'Users', + :subject => 'some level 3 subject 123äöü', + :body => 'some level 3 body 123äöü', }, # check ticket diff --git a/test/browser/agent_ticket_actions_level4_test.rb b/test/browser/agent_ticket_actions_level4_test.rb index bef712df1..1000f05a5 100644 --- a/test/browser/agent_ticket_actions_level4_test.rb +++ b/test/browser/agent_ticket_actions_level4_test.rb @@ -10,67 +10,21 @@ class AgentTicketActionLevel4Test < TestCase { :execute => 'close_all_tasks', }, + + # create ticket { - :execute => 'click', - :css => 'a[href="#new"]', - }, - { - :execute => 'click', - :css => 'a[href="#ticket_create/call_inbound"]', + :execute => 'create_ticket', + :group => 'Users', + :subject => 'some subject 4 - 123äöü', + :body => 'some body 4 - 123äöü', + :do_not_submit => true, }, { :execute => 'wait', - :value => 5, - }, - { - :execute => 'check', - :css => '.active .ticket_create', - :result => true, - }, - { - :execute => 'wait', - :value => 1, - }, - { - :execute => 'set', - :css => '.active .ticket_create input[name="customer_id_autocompletion"]', - :value => 'ma', - }, - { - :execute => 'wait', - :value => 4, - }, - { - :execute => 'sendkey', - :css => '.active .ticket_create input[name="customer_id_autocompletion"]', - :value => :arrow_down, - }, - { - :execute => 'sendkey', - :css => '.active .ticket_create input[name="customer_id_autocompletion"]', - :value => :tab, - }, - { - :execute => 'select', - :css => '.active .ticket_create select[name="group_id"]', - :value => 'Users', - }, - { - :execute => 'set', - :css => '.active .ticket_create input[name="subject"]', - :value => 'some subject 4 - 123äöü', - }, - { - :execute => 'set', - :css => '.active .ticket_create textarea[name="body"]', - :value => 'some body 4 - 123äöü', - }, - { - :execute => 'wait', - :value => 7, + :value => 6, }, - # reload instances, verify again + # reload instances, verify autosave { :execute => 'reload', }, diff --git a/test/browser/auth_customer_test.rb b/test/browser/auth_customer_test.rb index 324639d31..e2b8970b6 100644 --- a/test/browser/auth_customer_test.rb +++ b/test/browser/auth_customer_test.rb @@ -176,6 +176,9 @@ class AuthTest < TestCase :element => :cookie, :value => 'expires=>.+?\d{4}.+?,', }, + { + :execute => 'logout', + }, ], }, ] diff --git a/test/browser/taskbar_session_test.rb b/test/browser/taskbar_session_test.rb index d8bd5176d..bd3ad4aa7 100644 --- a/test/browser/taskbar_session_test.rb +++ b/test/browser/taskbar_session_test.rb @@ -5,13 +5,13 @@ class TaskbarSessionTest < TestCase def test_current_session_a_same_agent tests = [ { - :name => 'start', - :instance1 => browser_instance, - :instance2 => browser_instance, - :instance1_username => 'agent1@example.com', - :instance1_password => 'test', - :instance2_username => 'agent1@example.com', - :instance2_password => 'test', + :name => 'check taken over session block screen with same user', + :instance1 => browser_instance, + :instance2 => browser_instance, + :instance1_username => 'agent1@example.com', + :instance1_password => 'test', + :instance2_username => 'agent1@example.com', + :instance2_password => 'test', :url => browser_url, :action => [ { @@ -41,14 +41,14 @@ class TaskbarSessionTest < TestCase def test_current_session_b_different_agent tests = [ { - :name => 'start', - :instance1 => browser_instance, - :instance2 => browser_instance, - :instance1_username => 'master@example.com', - :instance1_password => 'test', - :instance2_username => 'agent1@example.com', - :instance2_password => 'test', - :url => browser_url, + :name => 'check taken over session block screen with same user', + :instance1 => browser_instance, + :instance2 => browser_instance, + :instance1_username => 'master@example.com', + :instance1_password => 'test', + :instance2_username => 'agent1@example.com', + :instance2_password => 'test', + :url => browser_url, :action => [ { :execute => 'wait', diff --git a/test/browser/taskbar_task_test.rb b/test/browser/taskbar_task_test.rb index abace4fdf..da6c082f5 100644 --- a/test/browser/taskbar_task_test.rb +++ b/test/browser/taskbar_task_test.rb @@ -118,7 +118,12 @@ class TaskbarTaskTest < TestCase }, { :execute => 'wait', - :value => 3, + :value => 4, + }, + { + :execute => 'set', + :css => '.active .ticket_create textarea[name="body"]', + :value => 'INBOUND BODY TEST#1', }, { :execute => 'click', @@ -137,6 +142,15 @@ class TaskbarTaskTest < TestCase :css => '.active .ticket_create input[name="subject"]', :value => 'OUTBOUND TEST#1', }, + { + :execute => 'wait', + :value => 1, + }, + { + :execute => 'set', + :css => '.active .ticket_create textarea[name="body"]', + :value => 'OUTBOUND BODY TEST#1', + }, { :execute => 'wait', :value => 12, diff --git a/test/browser_test_helper.rb b/test/browser_test_helper.rb index 81f8b4dc8..05a9c8331 100644 --- a/test/browser_test_helper.rb +++ b/test/browser_test_helper.rb @@ -30,7 +30,12 @@ class TestCase < Test::Unit::TestCase return local_browser end - caps = Selenium::WebDriver::Remote::Capabilities.send( browser ) + caps = Selenium::WebDriver::Remote::Capabilities.send( + browser, + #:forceCreateProcess => true, + #:ensureCleanSession => true, + #:internetExplorerSwitches => 'InetCpl.cpl,ClearMyTracksByProcess 2', + ) caps.platform = ENV['BROWSER_OS'] || 'Windows 2008' caps.version = ENV['BROWSER_VERSION'] || '8' local_browser = Selenium::WebDriver.for( @@ -70,36 +75,9 @@ class TestCase < Test::Unit::TestCase :url => data[:url] || browser_url, :action => [ { - :execute => 'wait', - :value => 2, - }, - { - :execute => 'check', - :css => '#login', - :result => true, - }, - { - :execute => 'set', - :css => 'input[name="username"]', - :value => data[:username] || 'nicole.braun@zammad.org', - }, - { - :execute => 'set', - :css => 'input[name="password"]', - :value => data[:password] || 'test' - }, - { - :execute => 'click', - :css => '#login button', - }, - { - :execute => 'wait', - :value => 2, - }, - { - :execute => 'check', - :css => '#login', - :result => false, + :execute => 'login', + :username => data[:username] || 'nicole.braun@zammad.org', + :password => data[:password] || 'test' }, ], }, @@ -175,8 +153,8 @@ class TestCase < Test::Unit::TestCase end def browser_element_action(test, action, instance) -puts "NOTICE: " + action.inspect - sleep 0.2 +puts "NOTICE #{Time.now.to_s}: " + action.inspect + sleep 0.1 if action[:css] if action[:css].match '###stack###' action[:css].gsub! '###stack###', @stack @@ -225,9 +203,80 @@ puts "NOTICE: " + action.inspect return elsif action[:element] == :alert element = instance.switch_to.alert + elsif action[:execute] == 'login' + sleep 1 + login = instance.find_element( { :css => '#login' } ) + if !login + assert( false, "(#{test[:name]}) no login box found!" ) + return + end + element = instance.find_element( { :css => '#login input[name="username"]' } ) + element.clear + element.send_keys( action[:username] ) + element = instance.find_element( { :css => '#login input[name="password"]' } ) + element.clear + element.send_keys( action[:password] ) + instance.find_element( { :css => '#login button' } ).click + sleep 4 + return + elsif action[:execute] == 'logout' + instance.find_element( { :css => 'a[href="#current_user"]' } ).click + sleep 0.1 + instance.find_element( { :css => 'a[href="#logout"]' } ).click + sleep 2 + login = instance.find_element( { :css => '#login' } ) + if !login + assert( false, "(#{test[:name]}) no login box found!" ) + return + end + assert( true, "(#{test[:name]}) logout" ) + return + elsif action[:execute] == 'create_ticket' + instance.find_element( { :css => 'a[href="#new"]' } ).click + instance.find_element( { :css => 'a[href="#ticket_create/call_inbound"]' } ).click + sleep 4 + element = instance.find_element( { :css => '.active .ticket_create' } ) + if !element + assert( false, "(#{test[:name]}) no ticket create screen found!" ) + return + end + sleep 5 + element = instance.find_element( { :css => '.active .ticket_create input[name="customer_id_autocompletion"]' } ) + element.clear + element.send_keys( 'ma' ) + sleep 4 + element = instance.find_element( { :css => '.active .ticket_create input[name="customer_id_autocompletion"]' } ) + element.send_keys( :arrow_down ) + sleep 0.2 + element = instance.find_element( { :css => '.active .ticket_create input[name="customer_id_autocompletion"]' } ) + element.send_keys( :tab ) + sleep 0.1 + element = instance.find_element( { :css => '.active .ticket_create select[name="group_id"]' } ) + dropdown = Selenium::WebDriver::Support::Select.new(element) + dropdown.select_by( :text, action[:group]) + sleep 0.1 + element = instance.find_element( { :css => '.active .ticket_create input[name="subject"]' } ) + element.clear + element.send_keys( action[:subject] ) + sleep 0.1 + element = instance.find_element( { :css => '.active .ticket_create textarea[name="body"]' } ) + element.clear + element.send_keys( action[:body] ) + if action[:do_not_submit] + assert( true, "(#{test[:name]}) ticket created without submit" ) + return + end + sleep 0.1 + instance.find_element( { :css => '.active .form-actions button[type="submit"]' } ).click + sleep 6 + if instance.current_url !~ /#{Regexp.quote('#ticket/zoom/')}/ + assert( true, "(#{test[:name]}) ticket creation failed, can't get zoom url" ) + return + end + assert( true, "(#{test[:name]}) ticket created" ) + return elsif action[:execute] == 'close_all_tasks' -# while true - for i in 1..100 + for i in 1..100 begin element = instance.find_element( { :css => '.taskbar [data-type="close"]' } ) if element @@ -240,10 +289,14 @@ puts "NOTICE: " + action.inspect break end end + assert( true, "(#{test[:name]}) all tasks closed" ) + return elsif action[:execute] == 'navigate' instance.navigate.to( action[:to] ) + return elsif action[:execute] == 'reload' instance.navigate.refresh + return elsif action[:execute] == 'js' result = instance.execute_script( action[:value] ) elsif action[:link] @@ -351,9 +404,6 @@ puts "NOTICE: " + action.inspect end end elsif action[:execute] == 'check' - elsif action[:execute] == 'close_all_tasks' - elsif action[:execute] == 'navigate' - elsif action[:execute] == 'reload' elsif action[:execute] == 'js' else assert( false, "(#{test[:name]}) unknow action '#{action[:execute]}'" )