From 1e6989f6d140e97f2e01cde5050895c6b4c3b969 Mon Sep 17 00:00:00 2001 From: Martin Edenhofer Date: Mon, 23 Feb 2015 14:02:46 +0100 Subject: [PATCH] Improved speed of tests. --- test/browser/agent_user_profile_test.rb | 273 +++++++++------------ test/browser/manage_test.rb | 300 ++++++++---------------- test/browser_test_helper.rb | 125 +++++++++- 3 files changed, 326 insertions(+), 372 deletions(-) diff --git a/test/browser/agent_user_profile_test.rb b/test/browser/agent_user_profile_test.rb index 1dc7b10bd..751d6ea71 100644 --- a/test/browser/agent_user_profile_test.rb +++ b/test/browser/agent_user_profile_test.rb @@ -4,185 +4,128 @@ require 'browser_test_helper' class AgentUserProfileTest < TestCase def test_search_and_edit_verify_in_second message = 'comment 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 => 'close_all_tasks', - }, - { - :where => :instance2, - :execute => 'close_all_tasks', - }, - { - :where => :instance1, - :execute => 'search_user', - :term => 'Braun', - }, - { - :where => :instance2, - :execute => 'search_user', - :term => 'Braun', - }, - # update note - { - :where => :instance1, - :execute => 'set', - :css => '.active [data-name="note"]', - :value => message, - }, - { - :where => :instance1, - :execute => 'click', - :css => '.active .profile', - }, - { - :where => :instance1, - :execute => 'wait', - :value => 3, - }, + browser1 = browser_instance + login( + :browser => browser1, + :username => 'master@example.com', + :password => 'test', + :url => browser_url, + ) + tasks_close_all( + :browser => browser1, + ) - # verify - { - :where => :instance2, - :execute => 'match', - :css => '.active .profile-window', - :value => message, - :match_result => true, - }, - ], - }, - ] - browser_double_test(tests) + browser2 = browser_instance + login( + :browser => browser2, + :username => 'agent1@example.com', + :password => 'test', + :url => browser_url, + ) + tasks_close_all( + :browser => browser2, + ) + + user_open_by_search( + :browser => browser1, + :value => 'Braun', + ) + user_open_by_search( + :browser => browser2, + :value => 'Braun', + ) + + # update note + set( + :browser => browser1, + :css => '.active [data-name="note"]', + :value => message, + ) + click( + :browser => browser1, + :css => '.active .profile', + ) + + watch_for( + :browser => browser2, + :css => '.active .profile-window', + :value => message, + ) end def test_search_and_edit_in_one message = '1 ' + rand(99999999).to_s - tests = [ - { - :name => 'search and edit', - :action => [ - { - :execute => 'close_all_tasks', - }, - # search and open user - { - :execute => 'search_user', - :term => 'Braun', - }, - { - :execute => 'match', - :css => '.active .profile-window', - :value => 'note', - :match_result => true, - }, - { - :execute => 'match', - :css => '.active .profile-window', - :value => 'email', - :match_result => true, + @browser = browser_instance + login( + :username => 'master@example.com', + :password => 'test', + :url => browser_url, + ) + tasks_close_all() - }, + # search and open user + user_open_by_search( :value => 'Braun' ) - # update note - { - :execute => 'set', - :css => '.active [data-name="note"]', - :value => 'some note 123' - }, - { - :execute => 'click', - :css => '.active .profile', - }, - { - :execute => 'wait', - :value => 1, - }, + watch_for( + :css => '.active .profile-window', + :value => 'note', + ) + watch_for( + :css => '.active .profile-window', + :value => 'email', + ) - # check and change note again in edit screen - { - :execute => 'click', - :css => '.active .js-action .select-arrow', - }, - { - :execute => 'click', - :css => '.active .js-action a[data-type="edit"]', - }, - { - :execute => 'wait', - :value => 1, - }, - { - :execute => 'match', - :css => '.active .modal', - :value => 'note', - :match_result => true, - }, - { - :execute => 'match', - :css => '.active .modal', - :value => 'some note 123', - :match_result => true, - }, - { - :execute => 'set', - :css => '.active .modal [data-name="note"]', - :value => 'some note abc' - }, - { - :execute => 'click', - :css => '.active .modal button.js-submit', - }, - { - :execute => 'wait', - :value => 4, - }, - { - :execute => 'match', - :css => '.active .profile-window', - :value => 'some note abc', - :match_result => true, - }, + # update note + set( + :css => '.active [data-name="note"]', + :value => 'some note 123', + ) - # create new ticket - { - :execute => 'create_ticket', - :group => 'Users', - :subject => 'user profile check ' + message, - :body => 'user profile check ' + message, - }, - { - :execute => 'wait', - :value => 4, - }, + click( :css => '.active .profile' ) + sleep 2 - # switch to org tab, verify if ticket is shown - { - :execute => 'search_user', - :term => 'Braun', - }, + # check and change note again in edit screen + click( :css => '.active .js-action .select-arrow' ) + click( :css => '.active .js-action a[data-type="edit"]' ) - { - :execute => 'match', - :css => '.active .profile-window', - :value => 'user profile check ' + message, - :match_result => true, - }, + watch_for( + :css => '.active .modal', + :value => 'note', + ) + watch_for( + :css => '.active .modal', + :value => 'some note 123', + ) - ], + set( + :css => '.modal [data-name="note"]', + :value => 'some note abc', + ) + click( :css => '.active .modal button.js-submit' ) + + watch_for( + :css => '.active .profile-window', + :value => 'some note abc', + ) + + # create new ticket + ticket_create( + :data => { + :customer => 'nico', + :group => 'Users', + :title => 'user profile check ' + message, + :body => 'user profile check ' + message, }, - ] - browser_signle_test_with_login(tests, { :username => 'master@example.com' }) + ) + sleep 1 + + # switch to org tab, verify if ticket is shown + user_open_by_search( :value => 'Braun' ) + watch_for( + :css => '.active .profile-window', + :value => 'user profile check ' + message, + ) end end \ No newline at end of file diff --git a/test/browser/manage_test.rb b/test/browser/manage_test.rb index 95d827015..f11282cf6 100644 --- a/test/browser/manage_test.rb +++ b/test/browser/manage_test.rb @@ -3,215 +3,103 @@ require 'browser_test_helper' class ManageTest < TestCase def test_user - random = 'manage-test-' + rand(999999).to_s + random = 'manage-test-' + rand(999999).to_s user_email = random + '@example.com' - # user - tests = [ - { - :name => 'user', - :action => [ - { - :execute => 'click', - :css => 'a[href="#manage"]', - }, - { - :execute => 'click', - :css => 'a[href="#manage/users"]', - }, - { - :execute => 'create_user', - :login => 'some login' + random, - :firstname => 'Manage Firstname' + random, - :lastname => 'Manage Lastname' + random, - :email => user_email, - :password => 'some-pass', - }, - { - :execute => 'set', - :css => '.content .js-search', - :value => user_email, - }, - { - :execute => 'watch_for', - :area => 'body', - :value => random, - }, - { - :execute => 'click', - :css => '.table-overview tr:last-child td', - }, - { - :execute => 'wait', - :value => 2, - }, - { - :execute => 'set', - :css => '.modal input[name="lastname"]', - :value => '2Manage Lastname' + random, - }, - { - :execute => 'click', - :css => '.modal button.js-submit', - }, - { - :execute => 'watch_for', - :area => 'body', - :value => '2Manage Lastname' + random, - }, - { - :execute => 'wait', - :value => 1, - }, - ], - }, - { - :name => 'sla', - :action => [ - { - :execute => 'click', - :css => 'a[href="#manage"]', - }, - { - :execute => 'click', - :css => 'a[href="#manage/slas"]', - }, - { - :execute => 'wait', - :value => 2, - }, - { - :execute => 'click', - :css => 'a[data-type="new"]', - }, - { - :execute => 'wait', - :value => 2, - }, - { - :execute => 'set', - :css => '.modal input[name=name]', - :value => 'some sla' + random, - }, - { - :execute => 'set', - :css => '.modal input[name="first_response_time"]', - :value => 61, - }, - { - :execute => 'click', - :css => '.modal button.js-submit', - }, - { - :execute => 'watch_for', - :area => 'body', - :value => random, - }, - { - :execute => 'wait', - :value => 3, - }, - { - :execute => 'click', - :css => '.table-overview tr:last-child td', - }, - { - :execute => 'wait', - :value => 1, - }, - { - :execute => 'set', - :css => '.modal input[name=name]', - :value => 'some sla update ' + random, - }, - { - :execute => 'set', - :css => '.modal input[name="first_response_time"]', - :value => 121, - }, - { - :execute => 'click', - :css => '.modal button.js-submit', - }, - { - :execute => 'watch_for', - :area => 'body table', - :value => 'some sla update ' + random, - }, - { - :execute => 'wait', - :value => 4, - }, - { - :execute => 'click', - :css => 'a[data-type="destroy"]:last-child', - }, - { - :execute => 'wait', - :value => 2, - }, - { - :execute => 'click', - :css => '.modal button.js-submit', - }, - { - :execute => 'wait', - :value => 3, - }, - { - :execute => 'match', - :css => 'body', - :value => 'some sla update ' + random, - :match_result => false, - }, - { - :execute => 'click', - :css => 'a[href="#manage"]', - }, - { - :execute => 'click', - :css => 'a[href="#manage/slas"]', - }, - { - :execute => 'wait', - :value => 2, - }, - { - :execute => 'match', - :css => 'body', - :value => 'some sla update ' + random, - :match_result => false, - }, - { - :execute => 'reload', - }, - { - :execute => 'wait', - :value => 2, - }, - { - :execute => 'click', - :css => 'a[href="#manage"]', - }, - { - :execute => 'click', - :css => 'a[href="#manage/slas"]', - }, - { - :execute => 'wait', - :value => 2, - }, - { - :execute => 'match', - :css => 'body', - :value => 'some sla update ' + random, - :match_result => false, - }, + # user management + @browser = browser_instance + login( + :username => 'master@example.com', + :password => 'test', + :url => browser_url, + ) - ], + click( :css => 'a[href="#manage"]' ) + click( :css => 'a[href="#manage/users"]' ) - }, - ] - browser_signle_test_with_login(tests, { :username => 'master@example.com' }) + user_create( + :data => { + :login => 'some login' + random, + :firstname => 'Manage Firstname' + random, + :lastname => 'Manage Lastname' + random, + :email => user_email, + :password => 'some-pass', + } + ) + + click( :css => '.table-overview tr:last-child td' ) + sleep 2 + + set( + :css => '.modal input[name="lastname"]', + :value => '2Manage Lastname' + random, + ) + click( :css => '.modal button.js-submit' ) + + watch_for( + :css => 'body', + :value => '2Manage Lastname' + random, + ) + + # sla + sla_create( + :data => { + :name => 'some sla' + random, + :first_response_time => 61 + } + ) + watch_for( + :css => 'body', + :value => random, + ) + sleep 1 + + click( :css => '.table-overview tr:last-child td' ) + sleep 1 + + set( + :css => '.modal input[name=name]', + :value => 'some sla update ' + random, + ) + set( + :css => '.modal input[name="first_response_time"]', + :value => 121, + ) + click( :css => '.modal button.js-submit' ) + + watch_for( + :css => 'body', + :value => 'some sla update ' + random, + ) + sleep 4 + + click( :css => 'a[data-type="destroy"]:last-child' ) + sleep 2 + + click( :css => '.modal button.js-submit' ) + sleep 4 + match_not( + :css => 'body', + :value => 'some sla update ' + random, + ) + + click( :css => 'a[href="#manage"]' ) + click( :css => 'a[href="#manage/slas"]' ) + sleep 2 + match_not( + :css => 'body', + :value => 'some sla update ' + random, + ) + + relaod() + sleep 2 + + click( :css => 'a[href="#manage"]' ) + click( :css => 'a[href="#manage/slas"]' ) + sleep 2 + match_not( + :css => 'body', + :value => 'some sla update ' + random, + ) end end diff --git a/test/browser_test_helper.rb b/test/browser_test_helper.rb index 28c19c3e0..3d13dacd8 100644 --- a/test/browser_test_helper.rb +++ b/test/browser_test_helper.rb @@ -632,7 +632,7 @@ class TestCase < Test::Unit::TestCase :data => { :customer => 'nico', :group => 'Users', - :subject => 'overview #1', + :title => 'overview #1', :body => 'overview #1', }, :do_not_submit => true, @@ -887,6 +887,129 @@ class TestCase < Test::Unit::TestCase overviews end +=begin + + user_open_by_search( + :browser => browser2, + :value => 'some value', + ) + +=end + + def user_open_by_search(params = {}) + instance = params[:browser] || @browser + + element = instance.find_elements( { :css => '#global-search' } )[0] + element.click + element.clear + element.send_keys( params[:value] ) + sleep 3 + element = instance.find_element( { :partial_link_text => params[:value] } ).click + name = instance.find_elements( { :css => '.active h1' } )[0].text + if name !~ /#{params[:value]}/ + raise "unable to search/find user #{params[:value]}!" + end + assert( true, "user #{params[:term]} found" ) + true + end + +=begin + + user_create( + :browser => browser2, + :data => { + :login => 'some login' + random, + :firstname => 'Manage Firstname' + random, + :lastname => 'Manage Lastname' + random, + :email => user_email, + :password => 'some-pass', + }, + ) + +=end + + def user_create(params = {}) + instance = params[:browser] || @browser + data = params[:data] + + instance.find_elements( { :css => 'a[href="#manage"]' } )[0].click + instance.find_elements( { :css => 'a[href="#manage/users"]' } )[0].click + sleep 2 + instance.find_elements( { :css => 'a[data-type="new"]' } )[0].click + sleep 2 + element = instance.find_elements( { :css => '.modal input[name=firstname]' } )[0] + element.clear + element.send_keys( data[:firstname] ) + element = instance.find_elements( { :css => '.modal input[name=lastname]' } )[0] + element.clear + element.send_keys( data[:lastname] ) + element = instance.find_elements( { :css => '.modal input[name=email]' } )[0] + element.clear + element.send_keys( data[:email] ) + element = instance.find_elements( { :css => '.modal input[name=password]' } )[0] + element.clear + element.send_keys( data[:password] ) + element = instance.find_elements( { :css => '.modal input[name=password_confirm]' } )[0] + element.clear + element.send_keys( data[:password] ) + instance.find_elements( { :css => '.modal input[name="role_ids"][value="3"]' } )[0].click + instance.find_elements( { :css => '.modal button.js-submit' } )[0].click + + sleep 2 + set( + :browser => instance, + :css => '.content .js-search', + :value => data[:email], + ) + watch_for( + :browser => instance, + :css => 'body', + :value => data[:lastname], + ) + + assert( true, "user created" ) + end + +=begin + + sla_create( + :browser => browser2, + :data => { + :name => 'some sla' + random, + :first_response_time => 61 + }, + ) + +=end + + def sla_create(params = {}) + instance = params[:browser] || @browser + data = params[:data] + + instance.find_elements( { :css => 'a[href="#manage"]' } )[0].click + instance.find_elements( { :css => 'a[href="#manage/slas"]' } )[0].click + sleep 2 + instance.find_elements( { :css => 'a[data-type="new"]' } )[0].click + sleep 2 + element = instance.find_elements( { :css => '.modal input[name=name]' } )[0] + element.clear + element.send_keys( data[:name] ) + element = instance.find_elements( { :css => '.modal input[name=first_response_time]' } )[0] + element.clear + element.send_keys( data[:first_response_time] ) + instance.find_elements( { :css => '.modal button.js-submit' } )[0].click + (1..8).each {|loop| + element = instance.find_elements( { :css => 'body' } )[0] + text = element.text + if text =~ /#{Regexp.quote(data[:name])}/ + assert( true, "sla created" ) + return true + end + sleep 1 + } + raise "sla creation failed" + end + # Add more helper methods to be used by all tests here... def browser_login(data) all_tests = [