Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Chore: QoL improvements to Omnichannel E2E tests #28075

Merged
merged 13 commits into from
Feb 17, 2023
Original file line number Diff line number Diff line change
Expand Up @@ -23,21 +23,12 @@ test.describe('omnichannel-auto-onhold-chat-closing', () => {
let agent: { page: Page; poHomeChannel: HomeChannel };

test.beforeAll(async ({ api, browser }) => {
// make "user-1" an agent and manager
let statusCode = (await api.post('/livechat/users/agent', { username: 'user1' })).status();
await expect(statusCode).toBe(200);

// turn on auto selection routing
statusCode = (await api.post('/settings/Livechat_Routing_Method', { value: 'Auto_Selection' })).status();
await expect(statusCode).toBe(200);

// make auto close on-hold chats timeout to be 5 seconds
statusCode = (await api.post('/settings/Livechat_auto_close_on_hold_chats_timeout', { value: 5 })).status();
await expect(statusCode).toBe(200);

// allow agents to manually place chats on-hold
statusCode = (await api.post('/settings/Livechat_allow_manual_on_hold', { value: true })).status();
await expect(statusCode).toBe(200);
await Promise.all([
api.post('/livechat/users/agent', { username: 'user1' }).then((res) => expect(res.status()).toBe(200)),
api.post('/settings/Livechat_Routing_Method', { value: 'Auto_Selection' }).then((res) => expect(res.status()).toBe(200)),
api.post('/settings/Livechat_auto_close_on_hold_chats_timeout', { value: 5 }).then((res) => expect(res.status()).toBe(200)),
api.post('/settings/Livechat_allow_manual_on_hold', { value: true }).then((res) => expect(res.status()).toBe(200)),
]);

agent = await createAuxContext(browser, 'user1-session.json');
});
Expand Down Expand Up @@ -88,16 +79,12 @@ test.describe('omnichannel-auto-onhold-chat-closing', () => {
});

test.afterAll(async ({ api }) => {
// delete "user-1" from agents
let statusCode = (await api.delete('/livechat/users/agent/user1')).status();
await expect(statusCode).toBe(200);

// reset auto close on-hold chats timeout
statusCode = (await api.post('/settings/Livechat_auto_close_on_hold_chats_timeout', { value: 3600 })).status();
await expect(statusCode).toBe(200);
await Promise.all([
api.delete('/livechat/users/agent/user1').then((res) => expect(res.status()).toBe(200)),
api.post('/settings/Livechat_auto_close_on_hold_chats_timeout', { value: 3600 }).then((res) => expect(res.status()).toBe(200)),
api.post('/settings/Livechat_allow_manual_on_hold', { value: false }).then((res) => expect(res.status()).toBe(200)),
]);

// reset setting which allows agents to manually place chats on-hold
statusCode = (await api.post('/settings/Livechat_allow_manual_on_hold', { value: false })).status();
await expect(statusCode).toBe(200);
await agent.page.close();
});
});
Original file line number Diff line number Diff line change
Expand Up @@ -24,19 +24,12 @@ test.describe('omnichannel-auto-transfer-unanswered-chat', () => {
let agent2: { page: Page; poHomeChannel: HomeChannel };

test.beforeAll(async ({ api, browser }) => {
// make "user-1" & "user-2" an agent
let statusCode = (await api.post('/livechat/users/agent', { username: 'user1' })).status();
await expect(statusCode).toBe(200);
statusCode = (await api.post('/livechat/users/agent', { username: 'user2' })).status();
await expect(statusCode).toBe(200);

// turn on auto selection routing
statusCode = (await api.post('/settings/Livechat_Routing_Method', { value: 'Auto_Selection' })).status();
await expect(statusCode).toBe(200);

// make auto close on-hold chats timeout to be 5 seconds
statusCode = (await api.post('/settings/Livechat_auto_transfer_chat_timeout', { value: 5 })).status();
await expect(statusCode).toBe(200);
await Promise.all([
api.post('/livechat/users/agent', { username: 'user1' }).then((res) => expect(res.status()).toBe(200)),
api.post('/livechat/users/agent', { username: 'user2' }).then((res) => expect(res.status()).toBe(200)),
api.post('/settings/Livechat_Routing_Method', { value: 'Auto_Selection' }).then((res) => expect(res.status()).toBe(200)),
api.post('/settings/Livechat_auto_transfer_chat_timeout', { value: 5 }).then((res) => expect(res.status()).toBe(200)),
]);

agent1 = await createAuxContext(browser, 'user1-session.json');
agent2 = await createAuxContext(browser, 'user2-session.json');
Expand Down Expand Up @@ -72,16 +65,13 @@ test.describe('omnichannel-auto-transfer-unanswered-chat', () => {
});

test.afterAll(async ({ api }) => {
// delete "user-1" from agents
let statusCode = (await api.delete('/livechat/users/agent/user1')).status();
await expect(statusCode).toBe(200);

// delete "user-2" from agents
statusCode = (await api.delete('/livechat/users/agent/user2')).status();
await expect(statusCode).toBe(200);

// reset auto close on-hold chats timeout
statusCode = (await api.post('/settings/Livechat_auto_transfer_chat_timeout', { value: 0 })).status();
await expect(statusCode).toBe(200);
await Promise.all([
api.delete('/livechat/users/agent/user1').then((res) => expect(res.status()).toBe(200)),
api.delete('/livechat/users/agent/user2').then((res) => expect(res.status()).toBe(200)),
api.post('/settings/Livechat_auto_transfer_chat_timeout', { value: 0 }).then((res) => expect(res.status()).toBe(200)),
]);

await agent1.page.close();
await agent2.page.close();
});
});
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@ test.describe('Omnichannel Canned Responses Sidebar', () => {
test.afterAll(async ({ api }) => {
await api.delete('/livechat/users/agent/user1');
await api.delete('/livechat/users/manager/user1');
await agent.page.close();
});

test('Receiving a message from visitor', async ({ page }) => {
Expand Down
1 change: 1 addition & 0 deletions apps/meteor/tests/e2e/omnichannel-chat-history.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@ test.describe('Omnichannel chat histr', () => {
test.afterAll(async ({ api }) => {
await api.delete('/livechat/users/agent/user1');
await api.delete('/livechat/users/manager/user1');
await agent.page.close();
});

test('Receiving a message from visitor', async ({ page }) => {
Expand Down
1 change: 1 addition & 0 deletions apps/meteor/tests/e2e/omnichannel-contact-info.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@ test.describe('Omnichannel contact info', () => {
test.afterAll(async ({ api }) => {
await api.delete('/livechat/users/agent/user1');
await api.delete('/livechat/users/manager/user1');
await agent.page.close();
});

test('Receiving a message from visitor, and seeing its information', async ({ page }) => {
Expand Down
47 changes: 47 additions & 0 deletions apps/meteor/tests/e2e/omnichannel-departaments-ce.spec.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
import { faker } from '@faker-js/faker';
import type { Page } from '@playwright/test';

import { IS_EE } from './config/constants';
import { OmnichannelDepartments } from './page-objects';
import { test, expect } from './utils/test';

test.use({ storageState: 'admin-session.json' });

test.describe.serial('omnichannel-departments', () => {
test.skip(IS_EE, 'Community Edition Only');
let poOmnichannelDepartments: OmnichannelDepartments;

let departmentName: string;

test.beforeAll(async () => {
departmentName = faker.datatype.uuid();
});

test.beforeEach(async ({ page }: { page: Page }) => {
poOmnichannelDepartments = new OmnichannelDepartments(page);

await page.goto('/omnichannel');
await poOmnichannelDepartments.sidenav.linkDepartments.click();
});

test('CE departments', async () => {
await test.step('expect create new department', async () => {
await poOmnichannelDepartments.btnNew.click();
await poOmnichannelDepartments.btnEnabled.click();
await poOmnichannelDepartments.inputName.fill(departmentName);
await poOmnichannelDepartments.inputEmail.fill(faker.internet.email());
await poOmnichannelDepartments.btnSave.click();
await poOmnichannelDepartments.btnCloseToastSuccess.click();

await poOmnichannelDepartments.inputSearch.fill(departmentName);
await expect(poOmnichannelDepartments.firstRowInTable).toBeVisible();
});
await test.step('expect to not be possible adding a second department ', async () => {
await poOmnichannelDepartments.btnNew.click();

await expect(poOmnichannelDepartments.upgradeDepartmentsModal).toBeVisible();

await poOmnichannelDepartments.btnUpgradeDepartmentsModalClose.click();
});
});
});