Skip to content

Commit

Permalink
Chore: QoL improvements to Omnichannel E2E tests (#28075)
Browse files Browse the repository at this point in the history
Co-authored-by: Guilherme Gazzo <guilhermegazzo@gmail.com>
  • Loading branch information
KevLehman and ggazzo committed Feb 17, 2023
1 parent 0ba5821 commit 7b756aa
Show file tree
Hide file tree
Showing 16 changed files with 338 additions and 260 deletions.
37 changes: 12 additions & 25 deletions apps/meteor/tests/e2e/omnichannel-auto-onhold-chat-closing.spec.ts
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();
});
});
});

0 comments on commit 7b756aa

Please sign in to comment.