Test stabilization: Improved handling of modal dialogs.

This commit is contained in:
Thorsten Eckel 2018-07-25 09:27:36 +02:00
parent 5727c571ff
commit 7a40517cb4
22 changed files with 105 additions and 165 deletions

View file

@ -47,10 +47,7 @@ class AgentOrganizationProfileTest < TestCase
click(css: '.active .js-action .icon-arrow-down', fast: true)
click(css: '.active .js-action [data-type="edit"]')
watch_for(
css: '.active .modal',
value: 'note',
)
modal_ready()
watch_for(
css: '.active .modal',
value: note,
@ -65,6 +62,7 @@ class AgentOrganizationProfileTest < TestCase
value: 'some note abc',
)
click(css: '.active .modal button.js-submit')
modal_disappear()
watch_for(
css: '.active .profile-window',
@ -80,15 +78,14 @@ class AgentOrganizationProfileTest < TestCase
# change lastname back
click(css: '.active .js-action .icon-arrow-down', fast: true)
click(css: '.active .js-action [data-type="edit"]')
watch_for(
css: '.active .modal',
value: 'note',
)
modal_ready()
set(
css: '.modal [name="name"]',
value: 'Zammad Foundation',
)
click(css: '.active .modal button.js-submit')
modal_disappear()
verify_task(
data: {

View file

@ -162,15 +162,15 @@ class AgentTicketAttachmentTest < TestCase
# submit form
click(css: '.content.active .js-submit')
sleep 2
# check warning
modal_ready()
match(
css: '.content.active .modal',
value: 'missing',
)
click(css: '.content.active .modal .js-cancel')
sleep 2
modal_disappear()
ticket_update(
data: {
@ -259,7 +259,7 @@ class AgentTicketAttachmentTest < TestCase
# modify customer
click(browser: browser1, css: '.content.active .sidebar[data-tab="customer"] .js-actions .dropdown-toggle')
click(browser: browser1, css: '.content.active .sidebar[data-tab="customer"] .js-actions [data-type="customer-edit"]')
sleep 2
modal_ready(browser: browser1)
set(browser: browser1, css: '.modal [name="address"]', value: 'some new address')
click(browser: browser1, css: '.modal .js-submit')
modal_disappear(browser: browser1)
@ -279,7 +279,7 @@ class AgentTicketAttachmentTest < TestCase
# change org of customer, check if org is shown in sidebar
click(browser: browser1, css: '.content.active .sidebar[data-tab="customer"] .js-actions .dropdown-toggle')
click(browser: browser1, css: '.content.active .sidebar[data-tab="customer"] .js-actions [data-type="customer-edit"]')
sleep 2
modal_ready(browser: browser1)
set(browser: browser1, css: '.modal .js-input', value: 'zammad')
click(browser: browser1, css: '.modal .js-input')
click(browser: browser1, css: '.modal .js-option')

View file

@ -177,9 +177,7 @@ class AgentTicketCreateResetCustomerSelectionTest < TestCase
click(css: '.content.active .tabsSidebar .sidebar[data-tab="customer"] .js-actions')
click(css: '.content.active .tabsSidebar .sidebar[data-tab="customer"] .js-actions li[data-type="customer-change"]')
watch_for(
css: '.content.active .modal',
)
modal_ready()
exists_not(
css: '.content.active .modal .user_autocompletion.form-group.has-error',

View file

@ -46,7 +46,8 @@ class AgentTicketLinkTest < TestCase
click(
css: '.content.active .links .js-add',
)
sleep 2
modal_ready()
set(
css: '.content.active .modal-body [name="ticket_number"]',

View file

@ -58,11 +58,8 @@ class AgentTicketMergeTest < TestCase
# merge tickets
click( css: '.active div[data-tab="ticket"] .js-actions .icon-arrow-down' )
click( css: '.active div[data-tab="ticket"] .js-actions [data-type="ticket-merge"]' )
watch_for(
css: '.modal',
value: 'merge',
)
modal_ready()
set(
css: '.modal input[name="master_ticket_number"]',
value: ticket1[:number],
@ -115,11 +112,8 @@ class AgentTicketMergeTest < TestCase
# merge tickets
click( css: '.active div[data-tab="ticket"] .js-actions .icon-arrow-down' )
click( css: '.active div[data-tab="ticket"] .js-actions [data-type="ticket-merge"]' )
watch_for(
css: '.modal',
value: 'merge',
)
modal_ready()
set(
css: '.modal input[name="master_ticket_number"]',
value: ticket3[:number],

View file

@ -96,10 +96,8 @@ class AgentTicketOverviewLevel0Test < TestCase
# click options and enable number and article count
click(css: '.content.active [data-type="settings"]')
watch_for(
css: '.modal h1',
value: 'Edit',
)
modal_ready()
check(
css: '.modal input[value="number"]',
)
@ -156,10 +154,8 @@ class AgentTicketOverviewLevel0Test < TestCase
# disable number and article count
click(css: '.content.active [data-type="settings"]')
watch_for(
css: '.modal h1',
value: 'Edit',
)
modal_ready()
uncheck(
css: '.modal input[value="number"]',
)

View file

@ -254,7 +254,11 @@ class AgentTicketTagTest < TestCase
browser: browser2,
js: "$('.content.active .js-name:contains(\"tag3\")').click()",
)
sleep 2
modal_ready(
browser: browser2,
)
set(
browser: browser2,
css: '.modal [name="name"]',
@ -308,7 +312,11 @@ class AgentTicketTagTest < TestCase
browser: browser2,
js: "$('.content.active .js-name:contains(\"tag5\")').closest('tr').find('.js-delete').click()",
)
sleep 2
modal_ready(
browser: browser2,
)
click(
browser: browser2,
css: '.modal .js-submit',

View file

@ -227,7 +227,8 @@ class AgentTicketTextModuleTest < TestCase
browser: browser2,
css: '.active div[data-tab="ticket"] .js-actions [data-type="customer-change"]',
)
sleep 1
modal_ready(browser: browser2)
ticket_customer_select(
browser: browser2,
@ -240,10 +241,7 @@ class AgentTicketTextModuleTest < TestCase
css: '.modal-content .js-submit',
)
watch_for_disappear(
browser: browser2,
css: '.modal',
)
modal_disappear(browser: browser2)
set(
browser: browser2,

View file

@ -41,11 +41,7 @@ class AgentTicketTimeAccountingTest < TestCase
click(
css: '.active .js-submit',
)
watch_for(
css: '.content.active .modal',
value: 'Time Accounting',
)
modal_ready()
set(
css: '.content.active .modal [name=time_unit]',
value: '4',
@ -53,10 +49,8 @@ class AgentTicketTimeAccountingTest < TestCase
click(
css: '.content.active .modal .js-submit',
)
watch_for_disappear(
css: '.content.active .modal',
value: 'Time Accounting',
)
modal_disappear()
watch_for(
css: '.content.active .js-timeUnit',
value: '4',
@ -80,11 +74,7 @@ class AgentTicketTimeAccountingTest < TestCase
click(
css: '.active .js-submit',
)
watch_for(
css: '.content.active .modal',
value: 'Time Accounting',
)
modal_ready()
set(
css: '.content.active .modal [name=time_unit]',
value: '4,6',
@ -92,10 +82,8 @@ class AgentTicketTimeAccountingTest < TestCase
click(
css: '.content.active .modal .js-submit',
)
watch_for_disappear(
css: '.content.active .modal',
value: 'Time Accounting',
)
modal_disappear()
watch_for(
css: '.content.active .js-timeUnit',
value: '4.6',
@ -111,10 +99,7 @@ class AgentTicketTimeAccountingTest < TestCase
css: '.active .js-submit',
)
watch_for(
css: '.content.active .modal',
value: 'Time Accounting',
)
modal_ready()
set(
css: '.content.active .modal [name=time_unit]',
value: '4abc',
@ -132,10 +117,7 @@ class AgentTicketTimeAccountingTest < TestCase
click(
css: '.content.active .modal .js-submit',
)
watch_for_disappear(
css: '.content.active .modal',
value: 'Time Accounting',
)
modal_disappear()
watch_for(
css: '.content.active .js-timeUnit',
value: '8.6',
@ -198,29 +180,18 @@ class AgentTicketTimeAccountingTest < TestCase
click(
css: '.active .js-submit',
)
watch_for(
css: '.content.active .modal',
value: 'Time Accounting',
)
modal_ready()
# Click outside the modal to make it disappear
execute(
js: 'document.elementFromPoint(300, 100).click();',
)
watch_for_disappear(
css: '.content.active .modal',
value: 'Time Accounting',
)
modal_disappear()
click(
css: '.active .js-submit',
)
watch_for(
css: '.content.active .modal',
value: 'Time Accounting',
)
modal_ready()
set(
css: '.content.active .modal [name=time_unit]',
value: '4',
@ -228,10 +199,7 @@ class AgentTicketTimeAccountingTest < TestCase
click(
css: '.content.active .modal .js-submit',
)
watch_for_disappear(
css: '.content.active .modal',
value: 'Time Accounting',
)
modal_disappear()
# disable time accounting
click(

View file

@ -52,18 +52,14 @@ class AgentTicketZoomHideTest < TestCase
css: '.attachment-icon img',
)
watch_for(
css: 'body > .modal',
)
modal_ready()
# Now go to a previous ticket and confirm that the modal disappears
location(
url: browser_url + '/#ticket/zoom/1',
)
sleep 2
exists_not(
css: 'body > .modal',
)
modal_disappear()
end
def teardown

View file

@ -35,11 +35,7 @@ class AgentUserManageTest < TestCase
sleep 0.5
click(css: '.content.active .newTicket .recipientList-entry.js-objectNew')
watch_for(
css: '.content.active .modal',
timeout: 1,
)
modal_ready()
set(
css: '.content.active .modal input[name="firstname"]',
value: firstname,
@ -54,6 +50,8 @@ class AgentUserManageTest < TestCase
)
click(css: '.content.active .modal button.js-submit')
modal_disappear()
sleep 4
# check is used to check selected
@ -170,10 +168,7 @@ class AgentUserManageTest < TestCase
click(css: '.content.active .tabsSidebar .sidebar[data-tab="customer"] .js-actions')
click(css: '.content.active .tabsSidebar .sidebar[data-tab="customer"] .js-actions li[data-type="customer-change"]')
watch_for(
css: '.content.active .modal',
)
modal_ready()
click(css: '.content.active .modal [name="customer_id_completion"]')
# check if pulldown is open, it's not working stable via selenium
@ -230,10 +225,7 @@ class AgentUserManageTest < TestCase
)
click(css: '.content.active .modal button.js-submit')
watch_for_disappear(
css: '.content.active .modal',
)
modal_disappear()
watch_for(
css: '.content.active .tabsSidebar .sidebar[data-tab="customer"]',

View file

@ -43,10 +43,7 @@ class AgentUserProfileTest < TestCase
click(css: '.active .js-action .icon-arrow-down', fast: true)
click(css: '.active .js-action [data-type="edit"]')
watch_for(
css: '.active .modal',
value: 'note',
)
modal_ready()
watch_for(
css: '.active .modal',
value: 'some note 123',
@ -61,6 +58,7 @@ class AgentUserProfileTest < TestCase
value: 'some note abc',
)
click(css: '.active .modal button.js-submit')
modal_disappear()
watch_for(
css: '.active .profile-window',
@ -76,15 +74,14 @@ class AgentUserProfileTest < TestCase
# change lastname back
click(css: '.active .js-action .icon-arrow-down', fast: true)
click(css: '.active .js-action [data-type="edit"]')
watch_for(
css: '.active .modal',
value: 'note',
)
modal_ready()
set(
css: '.modal [name="lastname"]',
value: 'Braun',
)
click(css: '.active .modal button.js-submit')
modal_disappear()
verify_task(
data: {

View file

@ -462,6 +462,8 @@ class ChatTest < TestCase
browser: agent,
css: '.active .js-settings',
)
modal_ready(browser: agent)
set(
browser: agent,
css: '.modal [name="chat::phrase::1"]',

View file

@ -23,7 +23,9 @@ class FirstStepsTest < TestCase
# invite agent (with more then one group)
click(css: '.active.content .js-inviteAgent')
sleep 4
modal_ready()
set(
css: '.modal [name="firstname"]',
value: 'Bob',
@ -49,10 +51,11 @@ class FirstStepsTest < TestCase
css: 'body div.modal',
value: 'Sending',
)
modal_disappear()
# invite customer
click(css: '.active.content .js-inviteCustomer')
sleep 4
modal_ready()
set(
css: '.modal [name="firstname"]',
value: 'Client',
@ -81,12 +84,14 @@ class FirstStepsTest < TestCase
css: 'body div.modal',
value: 'Sending',
)
modal_disappear()
# test ticket
click(
css: '.active.content .js-testTicket',
fast: true,
)
modal_ready()
watch_for(
css: 'body div.modal',
value: 'A Test Ticket has been created',
@ -99,6 +104,8 @@ class FirstStepsTest < TestCase
css: 'body div.modal',
value: 'Test Ticket',
)
modal_disappear()
execute(
js: '$(".active.content .sidebar").show()',
)

View file

@ -37,27 +37,15 @@ class KeyboardShortcutsTest < TestCase
shortcut(key: 'h')
end
end
watch_for(
css: '.modal',
value: 'Keyboard Shortcuts',
timeout: 6,
)
modal_ready()
# hide shortkeys
shortcut(key: 'h')
watch_for_disappear(
css: '.modal',
value: 'Keyboard Shortcuts',
timeout: 2,
)
modal_disappear()
# show shortkeys
shortcut(key: 'h')
watch_for(
css: '.modal',
value: 'Keyboard Shortcuts',
timeout: 2,
)
modal_ready()
# show notifications
shortcut(key: 'a')

View file

@ -39,15 +39,12 @@ class MaintenanceModeTest < TestCase
)
# check warning
watch_for(
browser: browser1,
css: '.content.active .modal .modal-header',
value: 'confirm',
)
modal_ready(browser: browser1)
click(
browser: browser1,
css: '.content.active .modal .js-submit',
)
modal_disappear(browser: browser1)
watch_for(
browser: browser2,
@ -127,15 +124,12 @@ class MaintenanceModeTest < TestCase
)
# check warning
watch_for(
browser: browser1,
css: '.content.active .modal .modal-header',
value: 'confirm',
)
modal_ready(browser: browser1)
click(
browser: browser1,
css: '.content.active .modal .js-submit',
)
modal_disappear(browser: browser1)
watch_for(
browser: browser2,

View file

@ -50,6 +50,7 @@ class MaintenanceSessionMessageTest < TestCase
css: '.content.active .js-Message button.js-submit',
)
modal_ready(browser: browser2)
watch_for(
browser: browser2,
css: '.modal',
@ -71,6 +72,7 @@ class MaintenanceSessionMessageTest < TestCase
browser: browser2,
css: 'div.modal-header .js-close',
)
modal_disappear(browser: browser2)
# check #2
click(
@ -98,6 +100,7 @@ class MaintenanceSessionMessageTest < TestCase
css: '.content.active .js-Message button.js-submit',
)
modal_ready(browser: browser2)
watch_for(
browser: browser2,
css: '.modal',
@ -119,6 +122,7 @@ class MaintenanceSessionMessageTest < TestCase
browser: browser2,
css: 'div.modal-header .js-close',
)
modal_disappear(browser: browser2)
# check #3
click(
@ -149,6 +153,7 @@ class MaintenanceSessionMessageTest < TestCase
css: '.content.active .js-Message button.js-submit',
)
modal_ready(browser: browser2)
watch_for(
browser: browser2,
css: '.modal',

View file

@ -28,13 +28,14 @@ class ManageTest < TestCase
)
click(css: '.table-overview tr:last-child td')
sleep 2
modal_ready()
set(
css: '.modal input[name="lastname"]',
value: "2Manage Lastname#{random}",
)
click(css: '.modal button.js-submit')
modal_disappear()
watch_for(
css: 'body',
@ -55,8 +56,8 @@ class ManageTest < TestCase
sleep 1
click(css: '.content:not(.hide) .action:last-child .js-edit')
sleep 1
modal_ready()
set(
css: '.modal input[name=name]',
value: "some sla update #{random}",
@ -66,6 +67,7 @@ class ManageTest < TestCase
value: '2:01',
)
click(css: '.modal button.js-submit')
modal_disappear()
watch_for(
css: 'body',

View file

@ -16,11 +16,8 @@ class PreferencesTokenAccessTest < TestCase
click(css: 'a[href="#profile/token_access"]')
click(css: '.content.active .js-create')
watch_for(
css: '.modal .modal-title',
value: 'Add a Personal Access Token'
)
modal_ready()
set(
css: '.content.active .modal .js-input',
value: 'Some App#1',
@ -37,6 +34,8 @@ class PreferencesTokenAccessTest < TestCase
value: 'Your New Personal Access Token'
)
click(css: '.modal .js-submit')
modal_disappear()
watch_for(
css: '.content.active .js-tokenList',
value: 'Some App#1'
@ -47,10 +46,8 @@ class PreferencesTokenAccessTest < TestCase
)
click(css: '.content.active .js-create')
watch_for(
css: '.modal .modal-title',
value: 'Add a Personal Access Token'
)
modal_ready()
set(
css: '.content.active .modal .js-input',
value: 'Some App#2',
@ -63,12 +60,16 @@ class PreferencesTokenAccessTest < TestCase
value: 'Your New Personal Access Token'
)
click(css: '.modal .js-submit')
modal_disappear()
watch_for(
css: '.content.active .js-tokenList',
value: 'Some App#2'
)
click(css: '.content.active .js-tokenList a')
modal_ready()
watch_for(
css: '.content.active .modal .modal-header',
value: 'confirm',
@ -76,6 +77,7 @@ class PreferencesTokenAccessTest < TestCase
click(
css: '.content.active .modal .js-submit',
)
modal_disappear()
watch_for_disappear(
css: '.content.active .js-tokenList',
value: 'Some App#2'

View file

@ -63,11 +63,9 @@ class SignupPasswordChangeAndResetTest < TestCase
execute(
js: 'App.Event.trigger("user_signup_verify", App.Session.get())',
)
watch_for(
css: '.modal',
value: 'Account not verified',
)
modal_ready()
click(css: '.modal .js-submit')
execute(
js: 'App.Auth.logout()',
)
@ -83,9 +81,7 @@ class SignupPasswordChangeAndResetTest < TestCase
css: '#content',
value: 'Your email address has been verified',
)
exists_not(
css: '.modal',
)
modal_disappear()
sleep 2
# change password

View file

@ -283,13 +283,14 @@ class TranslationTest < TestCase
)
click(css: '.content.active .js-syncChanges')
modal_ready()
watch_for(
css: '.content.active .modal',
value: 'Letzte Übersetzung laden',
)
watch_for_disappear(
css: '.content.active .modal',
timeout: 6 * 60,
modal_disappear(
timeout: 6.minutes,
)
click(css: 'a[href="#current_user"]')

View file

@ -39,7 +39,6 @@ class AgentProfilePermissionsTest < TestCase
click(css: '.content.active .js-action [data-type="edit"]')
modal_ready()
watch_for(
css: '.content.active .modal',
value: 'some note 123',
@ -54,6 +53,7 @@ class AgentProfilePermissionsTest < TestCase
value: 'some note abc',
)
click(css: '.content.active .modal button.js-submit')
modal_disappear()
watch_for(
css: '.content.active .profile-window',
@ -71,12 +71,12 @@ class AgentProfilePermissionsTest < TestCase
click(css: '.content.active .js-action [data-type="edit"]')
modal_ready()
set(
css: '.modal [name="lastname"]',
value: 'Braun',
)
click(css: '.content.active .modal button.js-submit')
modal_disappear()
verify_task(
data: {
@ -188,18 +188,16 @@ class AgentProfilePermissionsTest < TestCase
click(css: '.content.active .sidebar[data-tab="customer"] .js-actions [data-type="customer-edit"]')
modal_ready()
set(
css: '.modal [name="lastname"]',
value: 'B2',
)
set(
css: '.modal [data-name="note"]',
value: 'some note abc',
)
click(css: '.content.active .modal button.js-submit')
modal_disappear()
watch_for(
css: '.content.active .sidebar[data-tab="customer"] .sidebar-block [data-name="note"]',
@ -216,7 +214,6 @@ class AgentProfilePermissionsTest < TestCase
click(css: 'li[data-type="customer-edit"]')
modal_ready()
set(
css: '.modal [name="lastname"]',
value: 'Braun',
@ -226,6 +223,7 @@ class AgentProfilePermissionsTest < TestCase
value: 'some note abc',
)
click(css: '.content.active .modal button.js-submit')
modal_disappear()
watch_for(
css: '.content.active .sidebar[data-tab="customer"] .sidebar-block [data-name="note"]',
@ -279,7 +277,6 @@ class AgentProfilePermissionsTest < TestCase
click(css: '.content.active .js-action [data-type="edit"]')
modal_ready()
set(
css: '.modal [name="lastname"]',
value: 'B2',
@ -289,6 +286,7 @@ class AgentProfilePermissionsTest < TestCase
value: 'some note abc',
)
click(css: '.content.active .modal button.js-submit')
modal_disappear()
watch_for(
css: '.content.active .profile-window',
@ -306,7 +304,6 @@ class AgentProfilePermissionsTest < TestCase
click(css: '.content.active .js-action [data-type="edit"]')
modal_ready()
set(
css: '.modal [name="lastname"]',
value: 'Braun',
@ -316,6 +313,7 @@ class AgentProfilePermissionsTest < TestCase
value: 'note',
)
click(css: '.content.active .modal button.js-submit')
modal_disappear()
verify_task(
data: {