trabajo-afectivo/test/browser/keyboard_shortcuts_test.rb
2021-10-06 15:06:49 +02:00

229 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: '#login',
value: 'username',
timeout: 4,
)
end
end