230 lines
4.9 KiB
Ruby
230 lines
4.9 KiB
Ruby
# Copyright (C) 2012-2021 Zammad Foundation, http://zammad-foundation.org/
|
|
|
|
require 'browser_test_helper'
|
|
|
|
class KeyboardShortcutsTest < TestCase
|
|
def test_navigation
|
|
@browser = browser_instance
|
|
login(
|
|
username: 'admin@example.com',
|
|
password: 'test',
|
|
url: browser_url,
|
|
)
|
|
tasks_close_all
|
|
sleep 2
|
|
|
|
# show shortkeys
|
|
shortcut(key: 'h')
|
|
|
|
# ff issue, sometimes shortcut is not fired in browser test env
|
|
if ENV['BROWSER'] && ENV['BROWSER'] =~ %r{firefox}i
|
|
exists = false
|
|
(1..4).each do |_count|
|
|
sleep 1
|
|
next if !@browser.find_elements(css: '.modal')[0]
|
|
|
|
exists = true
|
|
end
|
|
if !exists
|
|
reload
|
|
sleep 4
|
|
shortcut(key: 'h')
|
|
(1..4).each do |_count|
|
|
sleep 1
|
|
next if !@browser.find_elements(css: '.modal')[0]
|
|
|
|
exists = true
|
|
end
|
|
end
|
|
if !exists
|
|
shortcut(key: 'h')
|
|
end
|
|
end
|
|
|
|
modal_ready
|
|
# hide shortkeys
|
|
shortcut(key: 'h')
|
|
modal_disappear
|
|
|
|
# show shortkeys
|
|
shortcut(key: 'h')
|
|
modal_ready
|
|
|
|
# show notifications
|
|
shortcut(key: 'a')
|
|
watch_for(
|
|
css: '.js-notificationsContainer .js-header',
|
|
value: 'Notification',
|
|
timeout: 10,
|
|
)
|
|
|
|
shortcut(key: 'a')
|
|
watch_for_disappear(
|
|
css: '.js-notificationsContainer .js-header',
|
|
value: 'Notification',
|
|
timeout: 2,
|
|
)
|
|
|
|
# go to overviews
|
|
shortcut(key: 'o')
|
|
watch_for(
|
|
css: '.active.content',
|
|
value: 'My assigned Tickets',
|
|
timeout: 2,
|
|
)
|
|
|
|
# go to dashboard
|
|
shortcut(key: 'd')
|
|
watch_for(
|
|
css: '.active.content',
|
|
value: 'My Stats',
|
|
timeout: 2,
|
|
)
|
|
|
|
# go to new ticket
|
|
shortcut(key: 'n')
|
|
watch_for(
|
|
css: '.active.content',
|
|
value: 'New Ticket',
|
|
timeout: 2,
|
|
)
|
|
|
|
# close again
|
|
shortcut(key: 'w')
|
|
|
|
watch_for_disappear(
|
|
css: '.active.content',
|
|
value: 'New Ticket',
|
|
timeout: 2,
|
|
)
|
|
|
|
ticket1 = ticket_create(
|
|
data: {
|
|
customer: 'nico',
|
|
group: 'Users',
|
|
title: 'Test Ticket for Shortcuts - ABC123',
|
|
body: 'Test Ticket Body for Shortcuts - ABC123',
|
|
},
|
|
)
|
|
sleep 5
|
|
|
|
# close again
|
|
shortcut(key: 'w')
|
|
watch_for_disappear(
|
|
css: '.active.content',
|
|
value: ticket1[:number],
|
|
timeout: 2,
|
|
)
|
|
|
|
# search it
|
|
shortcut(key: 's')
|
|
window_keys(value: ticket1[:number])
|
|
exists(css: '#navigation .search.open')
|
|
sleep 2
|
|
window_keys(value: :arrow_down)
|
|
window_keys(value: :arrow_down)
|
|
window_keys(value: :enter)
|
|
watch_for(
|
|
css: '.active.content',
|
|
value: ticket1[:number],
|
|
timeout: 2,
|
|
)
|
|
exists_not(css: '#navigation .search.open')
|
|
|
|
# open ticket
|
|
shortcut(key: 's')
|
|
window_keys(value: ticket1[:number])
|
|
sleep 2
|
|
window_keys(value: :arrow_down)
|
|
window_keys(value: :arrow_down)
|
|
window_keys(value: :enter)
|
|
|
|
# open new ticket
|
|
shortcut(key: 'n')
|
|
watch_for(
|
|
css: '.active.content',
|
|
value: 'New Ticket',
|
|
timeout: 2,
|
|
)
|
|
|
|
tab_count = @browser.find_elements(css: '#navigation .tasks .task').count
|
|
assert_equal(2, tab_count)
|
|
|
|
# tab is tab
|
|
shortcut(key: :tab)
|
|
watch_for(
|
|
css: '.active.content',
|
|
value: ticket1[:number],
|
|
timeout: 2,
|
|
)
|
|
shortcut(key: 'm')
|
|
shortcut(key: 'j')
|
|
window_keys(value: 'some note')
|
|
sleep 1
|
|
shortcut(key: :enter)
|
|
watch_for(
|
|
css: '.active.content .ticket-article',
|
|
value: 'some note',
|
|
timeout: 6,
|
|
)
|
|
exists(css: '.active.content .ticket-article .internal-border')
|
|
|
|
shortcut(key: 'g')
|
|
window_keys(value: 'some reply')
|
|
sleep 1
|
|
shortcut(key: :enter)
|
|
watch_for(
|
|
css: '.active.content .ticket-article',
|
|
value: 'some reply',
|
|
timeout: 6,
|
|
)
|
|
|
|
shortcut(key: 'c')
|
|
watch_for(
|
|
css: '.active.content .sidebar-content .edit',
|
|
value: 'closed',
|
|
timeout: 6,
|
|
)
|
|
|
|
# open online notification
|
|
@browser_agent = browser_instance
|
|
login(
|
|
browser: @browser_agent,
|
|
username: 'agent1@example.com',
|
|
password: 'test',
|
|
url: browser_url,
|
|
)
|
|
ticket2 = ticket_create(
|
|
browser: @browser_agent,
|
|
data: {
|
|
customer: 'nico',
|
|
group: 'Users',
|
|
title: 'Test Ticket for Shortcuts II - ABC123',
|
|
body: 'Test Ticket Body for Shortcuts II - ABC123',
|
|
},
|
|
)
|
|
sleep 5
|
|
shortcut(key: 'a')
|
|
# flanky
|
|
watch_for(
|
|
css: '.js-notificationsContainer',
|
|
value: 'Test Ticket for Shortcuts II',
|
|
timeout: 10,
|
|
)
|
|
window_keys(value: :arrow_down)
|
|
window_keys(value: :enter)
|
|
watch_for(
|
|
css: '.active.content',
|
|
value: ticket2[:number],
|
|
timeout: 3,
|
|
)
|
|
|
|
shortcut(key: 'e')
|
|
watch_for(
|
|
css: 'body',
|
|
value: 'login',
|
|
timeout: 4,
|
|
)
|
|
|
|
end
|
|
end
|