Improved browser tests.

This commit is contained in:
Martin Edenhofer 2013-06-18 23:36:07 +02:00
parent 2954685696
commit c2a7c6a3fc
3 changed files with 403 additions and 1 deletions

View file

@ -1,7 +1,7 @@
# encoding: utf-8 # encoding: utf-8
require 'browser_test_helper' require 'browser_test_helper'
class AgentTicketActionSimpleTest < TestCase class AgentTicketActionLevel1Test < TestCase
def test_agent_ticket def test_agent_ticket
tests = [ tests = [
{ {

View file

@ -0,0 +1,394 @@
# encoding: utf-8
require 'browser_test_helper'
class AgentTicketActionsLevel2Test < TestCase
def test_websocket
message = 'message 1äöüß ' + rand(99999999999999999).to_s
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,
:action => [
{
:where => :instance1,
:execute => 'check',
:css => '#login',
:result => false,
},
{
:where => :instance2,
:execute => 'check',
:css => '#login',
:result => false,
},
{
:execute => 'wait',
:value => 1,
},
{
:where => :instance1,
:execute => 'close_all_tasks',
},
{
:where => :instance2,
:execute => 'close_all_tasks',
},
# 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,
},
{
:execute => 'wait',
:value => 1,
},
{
: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 <b>subject</b> 123äöü',
},
{
:where => :instance1,
:execute => 'set',
:css => '.active .ticket_create textarea[name="body"]',
:value => 'some level 2 <b>body</b> 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/',
},
# check ticket
{
:where => :instance1,
:execute => 'match',
:css => '.active div.article',
:value => 'some level 2 <b>body</b> 123äöü',
:match_result => true,
},
# remember old ticket where we want to merge to
{
:where => :instance1,
:execute => 'match',
:css => '.active .ticket-zoom small',
:value => '^(.*)$',
:no_quote => true,
:match_result => true,
},
# open ticket in second browser
{
:where => :instance2,
:execute => 'set',
:css => '#global-search',
:value => '###stack###',
},
{
:execute => 'wait',
:value => 3,
},
{
:where => :instance2,
:execute => 'click',
:link => '###stack###',
# :css => 'a:contains(\'###stack###\')',
},
{
:execute => 'wait',
:value => 3,
},
{
:where => :instance2,
:execute => 'match',
:css => '.active div.article',
:value => 'some level 2 <b>body</b> 123äöü',
:match_result => true,
},
# change title in second browser
{
:where => :instance2,
:execute => 'sendkey',
:css => '.active .ticket-title-update',
:value => 'TTT',
},
{
:where => :instance2,
:execute => 'sendkey',
:css => '.active .ticket-title-update',
:value => :tab,
},
# set body in edit area
{
:where => :instance2,
:execute => 'set',
:css => '.active .ticket-answer textarea[name="body"]',
:value => 'some level 2 <b>body</b> in instance 2',
},
{
:where => :instance1,
:execute => 'set',
:css => '.active .ticket-answer textarea[name="body"]',
:value => 'some level 2 <b>body</b> in instance 1',
},
# change task and page title in second browser
{
:execute => 'wait',
:value => 1,
},
{
:where => :instance2,
:execute => 'match',
:css => '.taskbar .active .task',
:value => 'TTTsome level 2 <b>subject</b> 123äöü',
:match_result => true,
},
{
:where => :instance2,
:element => :title,
:value => 'TTTsome level 2 <b>subject</b> 123äöü',
},
# change task and page title in first browser
{
:execute => 'wait',
:value => 30,
},
{
:where => :instance1,
:execute => 'match',
:css => '.active .ticket-title-update',
:value => 'TTTsome level 2 <b>subject</b> 123äöü',
:match_result => true,
},
{
:where => :instance2,
:execute => 'match',
:css => '.taskbar .active .task',
:value => 'TTTsome level 2 <b>subject</b> 123äöü',
:match_result => true,
},
{
:where => :instance1,
:element => :title,
:value => 'TTTsome level 2 <b>subject</b> 123äöü',
},
{
:where => :instance2,
:element => :title,
:value => 'TTTsome level 2 <b>subject</b> 123äöü',
},
# verify text in input body
{
:where => :instance1,
:execute => 'match',
:css => '.active .ticket-answer textarea[name="body"]',
:value => 'some level 2 <b>body</b> in instance 1',
:match_result => true,
},
{
:where => :instance2,
:execute => 'match',
:css => '.active .ticket-answer textarea[name="body"]',
:value => 'some level 2 <b>body</b> in instance 2',
:match_result => true,
},
# add new article
{
:where => :instance1,
:execute => 'select',
:css => '.active .ticket-answer select[name="ticket_article_type_id"]',
:value => 'note',
},
{
:where => :instance1,
:execute => 'set',
:css => '.active .ticket-answer textarea[name="body"]',
:value => 'some update 4711',
},
{
:where => :instance1,
:execute => 'click',
:css => '.active button',
},
{
:execute => 'wait',
:value => 4,
},
{
:where => :instance1,
:execute => 'match',
:css => 'body',
:value => 'some update 4711',
:match_result => true,
},
# verify empty text in input body
{
:where => :instance1,
:execute => 'match',
:css => '.active .ticket-answer textarea[name="body"]',
:value => '',
:match_result => true,
},
{
:where => :instance2,
:execute => 'match',
:css => '.active .ticket-answer textarea[name="body"]',
:value => 'some level 2 <b>body</b> in instance 2',
:match_result => true,
},
# reload instances, verify again
{
:where => :instance1,
:execute => 'reload',
},
{
:where => :instance2,
:execute => 'reload',
},
# wait till application become ready
{
:execute => 'wait',
:value => 8,
},
{
:where => :instance1,
:execute => 'match',
:css => '.active .ticket-title-update',
:value => 'TTTsome level 2 <b>subject</b> 123äöü',
:match_result => true,
},
{
:where => :instance2,
:execute => 'match',
:css => '.taskbar .active .task',
:value => 'TTTsome level 2 <b>subject</b> 123äöü',
:match_result => true,
},
{
:where => :instance1,
:element => :title,
:value => 'TTTsome level 2 <b>subject</b> 123äöü',
},
{
:where => :instance2,
:element => :title,
:value => 'TTTsome level 2 <b>subject</b> 123äöü',
},
# verify update
{
:where => :instance1,
:execute => 'match',
:css => 'body',
:value => 'some update 4711',
:match_result => true,
},
{
:where => :instance2,
:execute => 'match',
:css => 'body',
:value => 'some update 4711',
:match_result => true,
},
# verify empty text in input body
{
:where => :instance1,
:execute => 'match',
:css => '.active .ticket-answer textarea[name="body"]',
:value => '',
:match_result => true,
},
{
:where => :instance2,
:execute => 'match',
:css => '.active .ticket-answer textarea[name="body"]',
:value => 'some level 2 <b>body</b> in instance 2',
:match_result => true,
},
],
},
]
browser_double_test(tests)
end
end

View file

@ -185,6 +185,14 @@ class TestCase < Test::Unit::TestCase
else else
assert( false, "(#{test[:name]}) url #{instance.current_url} is not matching #{action[:result]}" ) assert( false, "(#{test[:name]}) url #{instance.current_url} is not matching #{action[:result]}" )
end end
elsif action[:element] == :title
title = instance.title
if title =~ /#{action[:value]}/i
assert( true, "(#{test[:name]}) matching '#{action[:value]}' in title" )
else
assert( false, "(#{test[:name]}) not matching '#{action[:value]}' in title" )
end
return
elsif action[:element] == :alert elsif action[:element] == :alert
element = instance.switch_to.alert element = instance.switch_to.alert
elsif action[:execute] == 'close_all_tasks' elsif action[:execute] == 'close_all_tasks'