mirror of
https://github.com/zammad/zammad
synced 2026-05-24 09:48:36 +00:00
738 lines
16 KiB
Ruby
738 lines
16 KiB
Ruby
# encoding: utf-8
|
|
require 'browser_test_helper'
|
|
|
|
class ChatTest < TestCase
|
|
|
|
def test_basic
|
|
agent = browser_instance
|
|
login(
|
|
browser: agent,
|
|
username: 'master@example.com',
|
|
password: 'test',
|
|
url: browser_url,
|
|
)
|
|
tasks_close_all(
|
|
browser: agent,
|
|
)
|
|
|
|
# disable chat
|
|
click(
|
|
browser: agent,
|
|
css: 'a[href="#manage"]',
|
|
)
|
|
click(
|
|
browser: agent,
|
|
css: 'a[href="#channels/chat"]',
|
|
)
|
|
switch(
|
|
browser: agent,
|
|
css: '#content .js-chatSetting',
|
|
type: 'off',
|
|
)
|
|
|
|
# nav bar shuld be gone
|
|
sleep 2
|
|
exists_not(
|
|
browser: agent,
|
|
css: 'a[href="#customer_chat"]',
|
|
)
|
|
sleep 15
|
|
|
|
customer = browser_instance
|
|
location(
|
|
browser: customer,
|
|
url: "#{browser_url}/assets/chat/znuny.html?port=#{ENV['WS_PORT']}",
|
|
)
|
|
sleep 4
|
|
exists_not(
|
|
browser: customer,
|
|
css: '.zammad-chat',
|
|
)
|
|
match(
|
|
browser: customer,
|
|
css: '.settings',
|
|
value: '{"state":"chat_disabled"}',
|
|
)
|
|
click(
|
|
browser: agent,
|
|
css: 'a[href="#manage"]',
|
|
)
|
|
click(
|
|
browser: agent,
|
|
css: 'a[href="#channels/chat"]',
|
|
)
|
|
switch(
|
|
browser: agent,
|
|
css: '#content .js-chatSetting',
|
|
type: 'on',
|
|
)
|
|
sleep 15 # wait for rerendering
|
|
switch(
|
|
browser: agent,
|
|
css: '#navigation .js-switch',
|
|
type: 'off',
|
|
)
|
|
click(
|
|
browser: agent,
|
|
css: 'a[href="#customer_chat"]',
|
|
wait: 2,
|
|
)
|
|
match_not(
|
|
browser: agent,
|
|
css: '.active.content',
|
|
value: 'disabled',
|
|
)
|
|
|
|
reload(
|
|
browser: customer,
|
|
)
|
|
sleep 4
|
|
exists_not(
|
|
browser: customer,
|
|
css: '.zammad-chat',
|
|
)
|
|
match_not(
|
|
browser: customer,
|
|
css: '.settings',
|
|
value: '{"state":"chat_disabled"}',
|
|
)
|
|
match(
|
|
browser: customer,
|
|
css: '.settings',
|
|
value: '{"event":"chat_status_customer","data":{"state":"offline"}}',
|
|
)
|
|
click(
|
|
browser: agent,
|
|
css: 'a[href="#customer_chat"]',
|
|
)
|
|
switch(
|
|
browser: agent,
|
|
css: '#navigation .js-switch',
|
|
type: 'on',
|
|
)
|
|
reload(
|
|
browser: customer,
|
|
)
|
|
watch_for(
|
|
browser: customer,
|
|
css: '.zammad-chat',
|
|
timeout: 5,
|
|
)
|
|
match_not(
|
|
browser: customer,
|
|
css: '.settings',
|
|
value: '{"state":"chat_disabled"}',
|
|
)
|
|
match_not(
|
|
browser: customer,
|
|
css: '.settings',
|
|
value: '{"event":"chat_status_customer","data":{"state":"offline"}}',
|
|
)
|
|
match(
|
|
browser: customer,
|
|
css: '.settings',
|
|
value: '"data":{"state":"online"}',
|
|
)
|
|
|
|
# init chat
|
|
click(
|
|
browser: customer,
|
|
css: '.js-chat-open',
|
|
)
|
|
exists(
|
|
browser: customer,
|
|
css: '.zammad-chat-is-shown',
|
|
)
|
|
watch_for(
|
|
browser: customer,
|
|
css: '.zammad-chat',
|
|
value: '(waiting|warte)',
|
|
)
|
|
watch_for(
|
|
browser: agent,
|
|
css: '.js-chatMenuItem .counter',
|
|
value: '1',
|
|
)
|
|
click(
|
|
browser: customer,
|
|
css: '.js-chat-toggle',
|
|
)
|
|
watch_for_disappear(
|
|
browser: customer,
|
|
css: '.zammad-chat',
|
|
value: '(waiting|warte)',
|
|
)
|
|
watch_for_disappear(
|
|
browser: agent,
|
|
css: '.js-chatMenuItem .counter',
|
|
)
|
|
|
|
end
|
|
|
|
def test_basic_usecase1
|
|
agent = browser_instance
|
|
login(
|
|
browser: agent,
|
|
username: 'master@example.com',
|
|
password: 'test',
|
|
url: browser_url,
|
|
)
|
|
tasks_close_all(
|
|
browser: agent,
|
|
)
|
|
click(
|
|
browser: agent,
|
|
css: 'a[href="#customer_chat"]',
|
|
)
|
|
agent.find_elements( { css: '.active .chat-window .js-disconnect' } ).each(&:click)
|
|
agent.find_elements( { css: '.active .chat-window .js-close' } ).each(&:click)
|
|
|
|
customer = browser_instance
|
|
location(
|
|
browser: customer,
|
|
url: "#{browser_url}/assets/chat/znuny.html?port=#{ENV['WS_PORT']}",
|
|
)
|
|
watch_for(
|
|
browser: customer,
|
|
css: '.zammad-chat',
|
|
timeout: 5,
|
|
)
|
|
click(
|
|
browser: customer,
|
|
css: '.js-chat-open',
|
|
)
|
|
exists(
|
|
browser: customer,
|
|
css: '.zammad-chat-is-shown',
|
|
)
|
|
watch_for(
|
|
browser: customer,
|
|
css: '.zammad-chat',
|
|
value: '(waiting|warte)',
|
|
)
|
|
|
|
click(
|
|
browser: agent,
|
|
css: '.active .js-acceptChat',
|
|
)
|
|
sleep 2
|
|
exists_not(
|
|
browser: agent,
|
|
css: '.active .chat-window .chat-status.is-modified',
|
|
)
|
|
set(
|
|
browser: agent,
|
|
css: '.active .chat-window .js-customerChatInput',
|
|
value: 'my name is me',
|
|
)
|
|
click(
|
|
browser: agent,
|
|
css: '.active .chat-window .js-send',
|
|
)
|
|
watch_for(
|
|
browser: customer,
|
|
css: '.zammad-chat .zammad-chat-agent-status',
|
|
value: 'online',
|
|
)
|
|
watch_for(
|
|
browser: customer,
|
|
css: '.zammad-chat',
|
|
value: 'my name is me',
|
|
)
|
|
set(
|
|
browser: customer,
|
|
css: '.zammad-chat .zammad-chat-input',
|
|
value: 'my name is customer',
|
|
)
|
|
click(
|
|
browser: customer,
|
|
css: '.zammad-chat .zammad-chat-send',
|
|
)
|
|
watch_for(
|
|
browser: agent,
|
|
css: '.active .chat-window',
|
|
value: 'my name is customer',
|
|
)
|
|
exists(
|
|
browser: agent,
|
|
css: '.active .chat-window .chat-status.is-modified',
|
|
)
|
|
click(
|
|
browser: agent,
|
|
css: '.active .chat-window .js-customerChatInput',
|
|
)
|
|
exists_not(
|
|
browser: agent,
|
|
css: '.active .chat-window .chat-status.is-modified',
|
|
)
|
|
click(
|
|
browser: customer,
|
|
css: '.js-chat-toggle',
|
|
)
|
|
watch_for(
|
|
browser: agent,
|
|
css: '.active .chat-window',
|
|
value: 'closed the conversation',
|
|
)
|
|
end
|
|
|
|
def test_basic_usecase2
|
|
agent = browser_instance
|
|
login(
|
|
browser: agent,
|
|
username: 'master@example.com',
|
|
password: 'test',
|
|
url: browser_url,
|
|
)
|
|
tasks_close_all(
|
|
browser: agent,
|
|
)
|
|
click(
|
|
browser: agent,
|
|
css: 'a[href="#customer_chat"]',
|
|
)
|
|
agent.find_elements( { css: '.active .chat-window .js-disconnect' } ).each(&:click)
|
|
agent.find_elements( { css: '.active .chat-window .js-close' } ).each(&:click)
|
|
|
|
customer = browser_instance
|
|
location(
|
|
browser: customer,
|
|
url: "#{browser_url}/assets/chat/znuny.html?port=#{ENV['WS_PORT']}",
|
|
)
|
|
watch_for(
|
|
browser: customer,
|
|
css: '.zammad-chat',
|
|
timeout: 5,
|
|
)
|
|
click(
|
|
browser: customer,
|
|
css: '.js-chat-open',
|
|
)
|
|
exists(
|
|
browser: customer,
|
|
css: '.zammad-chat-is-shown',
|
|
)
|
|
watch_for(
|
|
browser: customer,
|
|
css: '.zammad-chat',
|
|
value: '(waiting|warte)',
|
|
)
|
|
click(
|
|
browser: agent,
|
|
css: '.active .js-acceptChat',
|
|
)
|
|
sleep 2
|
|
exists_not(
|
|
browser: agent,
|
|
css: '.active .chat-window .chat-status.is-modified',
|
|
)
|
|
|
|
# keep focus outside of chat window to check .chat-status.is-modified later
|
|
click(
|
|
browser: agent,
|
|
css: '#global-search',
|
|
)
|
|
watch_for(
|
|
browser: customer,
|
|
css: '.zammad-chat .zammad-chat-agent-status',
|
|
value: 'online',
|
|
)
|
|
set(
|
|
browser: customer,
|
|
css: '.zammad-chat .zammad-chat-input',
|
|
value: 'my name is customer',
|
|
)
|
|
click(
|
|
browser: customer,
|
|
css: '.zammad-chat .zammad-chat-send',
|
|
)
|
|
watch_for(
|
|
browser: agent,
|
|
css: '.active .chat-window',
|
|
value: 'my name is customer',
|
|
)
|
|
exists(
|
|
browser: agent,
|
|
css: '.active .chat-window .chat-status.is-modified',
|
|
)
|
|
set(
|
|
browser: agent,
|
|
css: '.active .chat-window .js-customerChatInput',
|
|
value: 'my name is me',
|
|
)
|
|
exists_not(
|
|
browser: agent,
|
|
css: '.active .chat-window .chat-status.is-modified',
|
|
)
|
|
click(
|
|
browser: agent,
|
|
css: '.active .chat-window .js-send',
|
|
)
|
|
watch_for(
|
|
browser: customer,
|
|
css: '.zammad-chat',
|
|
value: 'my name is me',
|
|
)
|
|
click(
|
|
browser: agent,
|
|
css: '.active .chat-window .js-disconnect',
|
|
)
|
|
click(
|
|
browser: agent,
|
|
css: '.active .chat-window .js-close',
|
|
)
|
|
watch_for(
|
|
browser: customer,
|
|
css: '.zammad-chat .zammad-chat-agent-status',
|
|
value: 'offline',
|
|
)
|
|
watch_for(
|
|
browser: customer,
|
|
css: '.zammad-chat',
|
|
value: 'Chat closed by',
|
|
)
|
|
click(
|
|
browser: customer,
|
|
css: '.zammad-chat .js-chat-toggle',
|
|
)
|
|
watch_for_disappear(
|
|
browser: customer,
|
|
css: '.zammad-chat-is-open',
|
|
)
|
|
agent.find_elements( { css: '.active .chat-window .js-disconnect' } ).each(&:click)
|
|
agent.find_elements( { css: '.active .chat-window .js-close' } ).each(&:click)
|
|
sleep 2
|
|
click(
|
|
browser: customer,
|
|
css: '.js-chat-open',
|
|
)
|
|
exists(
|
|
browser: customer,
|
|
css: '.zammad-chat-is-shown',
|
|
)
|
|
watch_for(
|
|
browser: customer,
|
|
css: '.zammad-chat',
|
|
value: '(waiting|warte)',
|
|
)
|
|
click(
|
|
browser: agent,
|
|
css: '.active .js-acceptChat',
|
|
)
|
|
sleep 2
|
|
exists_not(
|
|
browser: agent,
|
|
css: '.active .chat-window .chat-status.is-modified',
|
|
)
|
|
exists(
|
|
browser: agent,
|
|
css: '.active .chat-window .chat-status',
|
|
)
|
|
end
|
|
|
|
def test_basic_usecase3
|
|
agent = browser_instance
|
|
login(
|
|
browser: agent,
|
|
username: 'master@example.com',
|
|
password: 'test',
|
|
url: browser_url,
|
|
)
|
|
tasks_close_all(
|
|
browser: agent,
|
|
)
|
|
click(
|
|
browser: agent,
|
|
css: 'a[href="#customer_chat"]',
|
|
)
|
|
agent.find_elements( { css: '.active .chat-window .js-disconnect' } ).each(&:click)
|
|
agent.find_elements( { css: '.active .chat-window .js-close' } ).each(&:click)
|
|
|
|
# set chat preferences
|
|
click(
|
|
browser: agent,
|
|
css: '.active .js-settings',
|
|
)
|
|
set(
|
|
browser: agent,
|
|
css: '.modal [name="chat::phrase::1"]',
|
|
value: 'Hi Stranger!;My Greeting',
|
|
)
|
|
click(
|
|
browser: agent,
|
|
css: '.modal .js-submit',
|
|
)
|
|
|
|
customer = browser_instance
|
|
location(
|
|
browser: customer,
|
|
url: "#{browser_url}/assets/chat/znuny.html?port=#{ENV['WS_PORT']}",
|
|
)
|
|
watch_for(
|
|
browser: customer,
|
|
css: '.zammad-chat',
|
|
timeout: 5,
|
|
)
|
|
click(
|
|
browser: customer,
|
|
css: '.js-chat-open',
|
|
)
|
|
exists(
|
|
browser: customer,
|
|
css: '.zammad-chat-is-shown',
|
|
)
|
|
watch_for(
|
|
browser: agent,
|
|
css: '.active .js-badgeWaitingCustomers',
|
|
value: '1',
|
|
)
|
|
click(
|
|
browser: agent,
|
|
css: '.active .js-acceptChat',
|
|
)
|
|
watch_for(
|
|
browser: customer,
|
|
css: '.zammad-chat',
|
|
value: 'Hi Stranger|My Greeting',
|
|
)
|
|
watch_for(
|
|
browser: customer,
|
|
css: '.zammad-chat .zammad-chat-agent-status',
|
|
value: 'online',
|
|
)
|
|
set(
|
|
browser: agent,
|
|
css: '.active .chat-window .js-customerChatInput',
|
|
value: 'my name is me',
|
|
)
|
|
click(
|
|
browser: agent,
|
|
css: '.active .chat-window .js-send',
|
|
)
|
|
watch_for(
|
|
browser: customer,
|
|
css: '.zammad-chat',
|
|
value: 'my name is me',
|
|
)
|
|
set(
|
|
browser: customer,
|
|
css: '.zammad-chat .zammad-chat-input',
|
|
value: 'my name is customer',
|
|
)
|
|
click(
|
|
browser: customer,
|
|
css: '.zammad-chat .zammad-chat-send',
|
|
)
|
|
watch_for(
|
|
browser: agent,
|
|
css: '.active .chat-window',
|
|
value: 'my name is customer',
|
|
)
|
|
click(
|
|
browser: agent,
|
|
css: '.active .chat-window .js-customerChatInput',
|
|
)
|
|
reload(
|
|
browser: customer,
|
|
)
|
|
exists(
|
|
browser: customer,
|
|
css: '.zammad-chat',
|
|
)
|
|
watch_for(
|
|
browser: customer,
|
|
css: '.zammad-chat',
|
|
value: 'Hi Stranger|My Greeting',
|
|
)
|
|
watch_for(
|
|
browser: customer,
|
|
css: '.zammad-chat',
|
|
value: 'my name is me',
|
|
)
|
|
watch_for(
|
|
browser: customer,
|
|
css: '.zammad-chat',
|
|
value: 'my name is customer',
|
|
)
|
|
click(
|
|
browser: customer,
|
|
css: '.js-chat-toggle',
|
|
)
|
|
watch_for(
|
|
browser: agent,
|
|
css: '.active .chat-window',
|
|
value: 'closed the conversation',
|
|
)
|
|
end
|
|
|
|
def test_timeouts
|
|
agent = browser_instance
|
|
login(
|
|
browser: agent,
|
|
username: 'master@example.com',
|
|
password: 'test',
|
|
url: browser_url,
|
|
)
|
|
tasks_close_all(
|
|
browser: agent,
|
|
)
|
|
click(
|
|
browser: agent,
|
|
css: 'a[href="#customer_chat"]',
|
|
)
|
|
agent.find_elements( { css: '.active .chat-window .js-disconnect' } ).each(&:click)
|
|
agent.find_elements( { css: '.active .chat-window .js-close' } ).each(&:click)
|
|
|
|
exists(
|
|
browser: agent,
|
|
css: '#navigation .js-switch input[checked]'
|
|
)
|
|
|
|
# no customer action, hide widget
|
|
customer = browser_instance
|
|
location(
|
|
browser: customer,
|
|
url: "#{browser_url}/assets/chat/znuny.html?port=#{ENV['WS_PORT']}",
|
|
)
|
|
watch_for(
|
|
browser: customer,
|
|
css: '.zammad-chat',
|
|
timeout: 5,
|
|
)
|
|
watch_for_disappear(
|
|
browser: customer,
|
|
css: '.zammad-chat',
|
|
timeout: 95,
|
|
)
|
|
|
|
# no agent action, show sorry screen
|
|
reload(
|
|
browser: customer,
|
|
)
|
|
exists(
|
|
browser: customer,
|
|
css: '.zammad-chat',
|
|
)
|
|
click(
|
|
browser: customer,
|
|
css: '.js-chat-open',
|
|
)
|
|
watch_for(
|
|
browser: customer,
|
|
css: '.zammad-chat',
|
|
value: '(waiting|warte)',
|
|
timeout: 35,
|
|
)
|
|
watch_for(
|
|
browser: customer,
|
|
css: '.zammad-chat',
|
|
value: '(takes longer|dauert länger)',
|
|
timeout: 120,
|
|
)
|
|
|
|
# check if agent is offline, idle timeout, chat not answered
|
|
exists_not(
|
|
browser: agent,
|
|
css: '#navigation .js-switch input[checked]'
|
|
)
|
|
switch(
|
|
browser: agent,
|
|
css: '#navigation .js-switch',
|
|
type: 'on',
|
|
)
|
|
|
|
# no customer action, show sorry screen
|
|
reload(
|
|
browser: customer,
|
|
)
|
|
exists(
|
|
browser: customer,
|
|
css: '.zammad-chat',
|
|
)
|
|
click(
|
|
browser: customer,
|
|
css: '.js-chat-open',
|
|
)
|
|
watch_for(
|
|
browser: agent,
|
|
css: '.js-chatMenuItem .counter',
|
|
value: '1',
|
|
)
|
|
click(
|
|
browser: agent,
|
|
css: '.active .js-acceptChat',
|
|
)
|
|
sleep 2
|
|
set(
|
|
browser: agent,
|
|
css: '.active .chat-window .js-customerChatInput',
|
|
value: 'agent is asking',
|
|
)
|
|
click(
|
|
browser: agent,
|
|
css: '.active .chat-window .js-send',
|
|
)
|
|
watch_for(
|
|
browser: customer,
|
|
css: '.zammad-chat',
|
|
value: 'agent is asking',
|
|
)
|
|
watch_for(
|
|
browser: customer,
|
|
css: '.zammad-chat',
|
|
value: '(Since you didn\'t respond|Da Sie in den letzten)',
|
|
timeout: 150,
|
|
)
|
|
|
|
agent.find_elements( { css: '.active .chat-window .js-close' } ).each(&:click)
|
|
sleep 2
|
|
click(
|
|
browser: customer,
|
|
css: '.js-restart',
|
|
)
|
|
sleep 5
|
|
click(
|
|
browser: customer,
|
|
css: '.js-chat-open',
|
|
)
|
|
exists(
|
|
browser: customer,
|
|
css: '.zammad-chat-is-shown',
|
|
)
|
|
watch_for(
|
|
browser: customer,
|
|
css: '.zammad-chat',
|
|
value: '(waiting|warte)',
|
|
)
|
|
click(
|
|
browser: agent,
|
|
css: '.active .js-acceptChat',
|
|
)
|
|
sleep 2
|
|
exists(
|
|
browser: agent,
|
|
css: '.active .chat-window .chat-status',
|
|
)
|
|
set(
|
|
browser: agent,
|
|
css: '.active .chat-window .js-customerChatInput',
|
|
value: 'my name is me',
|
|
)
|
|
click(
|
|
browser: agent,
|
|
css: '.active .chat-window .js-send',
|
|
)
|
|
watch_for(
|
|
browser: customer,
|
|
css: '.zammad-chat .zammad-chat-agent-status',
|
|
value: 'online',
|
|
)
|
|
watch_for(
|
|
browser: customer,
|
|
css: '.zammad-chat',
|
|
value: 'my name is me',
|
|
)
|
|
|
|
end
|
|
|
|
end
|