From fb97afa279acc2f482b05a3889d8741be70175a9 Mon Sep 17 00:00:00 2001 From: Harmeet221 Date: Wed, 30 Nov 2022 19:01:03 +0530 Subject: [PATCH 01/11] Adding tests for triggers --- .../e2e/marketplace-install-apps.spec.ts | 23 +++++ .../tests/e2e/omnichannel-triggers.spec.ts | 94 ++++++++++++++++++ .../page-objects/fragments/home-sidenav.ts | 9 +- .../fragments/omnichannel-sidenav.ts | 4 + .../e2e/page-objects/marketplace-apps.ts | 43 ++++++++ .../e2e/page-objects/omnichannel-livechat.ts | 5 + .../e2e/page-objects/omnichannel-triggers.ts | 98 +++++++++++++++++++ 7 files changed, 275 insertions(+), 1 deletion(-) create mode 100644 apps/meteor/tests/e2e/marketplace-install-apps.spec.ts create mode 100644 apps/meteor/tests/e2e/omnichannel-triggers.spec.ts create mode 100644 apps/meteor/tests/e2e/page-objects/marketplace-apps.ts create mode 100644 apps/meteor/tests/e2e/page-objects/omnichannel-triggers.ts diff --git a/apps/meteor/tests/e2e/marketplace-install-apps.spec.ts b/apps/meteor/tests/e2e/marketplace-install-apps.spec.ts new file mode 100644 index 0000000000000..0ad92be6bd0e5 --- /dev/null +++ b/apps/meteor/tests/e2e/marketplace-install-apps.spec.ts @@ -0,0 +1,23 @@ +import type { Page } from '@playwright/test'; + +import { test, expect } from './utils/test'; +import { MarketPlace } from './page-objects/marketplace-apps'; + +test.use({ storageState: 'admin-session.json' }); + +test.describe.serial('Install apps', () => { + let poMarketPlace: MarketPlace; + + test.beforeEach(async ({ page }) => { + poMarketPlace = new MarketPlace(page); + + await page.goto('/home'); + await poMarketPlace.homsidenav.openInstalledApps(); + + }); + + test('install an application using upload button', async ({}) => { + await poMarketPlace.installApp(true); + }); + +}); \ No newline at end of file diff --git a/apps/meteor/tests/e2e/omnichannel-triggers.spec.ts b/apps/meteor/tests/e2e/omnichannel-triggers.spec.ts new file mode 100644 index 0000000000000..7aa830f4314ce --- /dev/null +++ b/apps/meteor/tests/e2e/omnichannel-triggers.spec.ts @@ -0,0 +1,94 @@ +import { faker } from '@faker-js/faker'; +import type { Page } from '@playwright/test'; + +import { test, expect } from './utils/test'; +import { OmnichannelLiveChat } from './page-objects'; +import { OmnichannelTriggers } from './page-objects/omnichannel-triggers'; +import { OmnichannelSidenav } from './page-objects/fragments/omnichannel-sidenav'; + + +test.use({ storageState: 'admin-session.json' }); + + test.describe.serial('omnichannel-triggers', () => { + let poOmnichannelTriggers: OmnichannelTriggers; + let poOmnichannelSidenav: OmnichannelSidenav; + let triggersName: string; + let triggerMessage: string; + let poLiveChat: OmnichannelLiveChat; + let newVisitor: { email: string; name: string }; + + test.beforeAll(() => { + triggersName = faker.datatype.uuid(); + triggerMessage = 'Welcome to Rocket.chat' + }); + + test.beforeEach(async ({ page }: { page: Page }) => { + poOmnichannelTriggers = new OmnichannelTriggers(page); + poOmnichannelSidenav = new OmnichannelSidenav(page); + await page.goto('/omnichannel'); + await poOmnichannelSidenav.linkTriggers.click(); + await expect(page.url()).toContain('/omnichannel/triggers'); + }); + + test('expect create new trigger', async () => { + await poOmnichannelTriggers.btnNew.click(); + await poOmnichannelTriggers.Name.fill(triggersName); + await poOmnichannelTriggers.Description.fill('Creating a fresh trigger'); + await poOmnichannelTriggers.visitorPageURL.click(); + await poOmnichannelTriggers.visitorTimeOnSite.click(); + await poOmnichannelTriggers.addTime.click(); + await poOmnichannelTriggers.addTime.fill('5s'); + await poOmnichannelTriggers.impersonateAgent.click(); + await poOmnichannelTriggers.textArea.fill(triggerMessage); + await poOmnichannelTriggers.saveBtn.click(); + + await expect(poOmnichannelTriggers.toastMessage).toBeVisible(); + + }); + + test('expect update trigger name', async ({}) => { + + const newTriggerName = `edited-${triggersName}`; + await poOmnichannelTriggers.firstRowInTable.click(); + await poOmnichannelTriggers.Name.fill(newTriggerName); + await poOmnichannelTriggers.saveBtn.click(); + await expect(poOmnichannelTriggers.toastMessage).toBeVisible(); + + }); + + test('expect update trigger type', async({page}) =>{ + + newVisitor = { + name: faker.name.firstName(), + email: faker.internet.email(), + }; + await poOmnichannelTriggers.firstRowInTable.click(); + await poOmnichannelTriggers.Name.fill(triggersName); + await poOmnichannelTriggers.Description.fill('Updating the existing trigger'); + await poOmnichannelTriggers.visitorTimeOnSite.click(); + await poOmnichannelTriggers.chatOpenedByVisitor.click(); + await poOmnichannelTriggers.impersonateAgent.click(); + await poOmnichannelTriggers.customAgent.click(); + await poOmnichannelTriggers.agentName.fill('Rocket.cat'); + await poOmnichannelTriggers.textArea.fill(triggerMessage); + await poOmnichannelTriggers.saveBtn.click(); + + await expect(poOmnichannelTriggers.toastMessage).toBeVisible(); + + // start a new chat to verify trigger is fired on + poLiveChat = new OmnichannelLiveChat(page); + await page.goto('/livechat'); + await poLiveChat.btnOpenLiveChat('R').click(); + await poLiveChat.sendMessage(newVisitor, false); + await expect(poLiveChat.firstAutoMessage).toHaveText(triggerMessage); + + }); + + test('expect deleting trigger',async ({}) => { + + await poOmnichannelTriggers.btnDeletefirstRowInTable.click(); + await poOmnichannelTriggers.btnModalRemove.click(); + + await expect(poOmnichannelTriggers.removeToastMessage).toBeVisible(); + }); +}); \ No newline at end of file diff --git a/apps/meteor/tests/e2e/page-objects/fragments/home-sidenav.ts b/apps/meteor/tests/e2e/page-objects/fragments/home-sidenav.ts index 0722895e6224c..f765522744274 100644 --- a/apps/meteor/tests/e2e/page-objects/fragments/home-sidenav.ts +++ b/apps/meteor/tests/e2e/page-objects/fragments/home-sidenav.ts @@ -26,6 +26,12 @@ export class HomeSidenav { await this.page.locator(`li.rcx-option >> text="${text}"`).click(); } + async openInstalledApps(): Promise { + await this.page.locator('//button[@title="Administration"]').click(); + await this.page.locator('//div[contains(text(),"Installed")]').click(); + //await this.page.locator(`li.rcx-option >> text="${text}"`).click(); + } + async openNewByLabel(text: string): Promise { await this.page.locator('[data-qa="sidebar-create"]').click(); await this.page.locator(`li.rcx-option >> text="${text}"`).click(); @@ -44,7 +50,8 @@ export class HomeSidenav { async openChat(name: string): Promise { await this.page.locator('[data-qa="sidebar-search"]').click(); await this.page.locator('[data-qa="sidebar-search-input"]').type(name); - await this.page.locator(`[data-qa="sidebar-item-title"] >> text="${name}"`).first().click(); + //await this.page.locator(`[data-qa="sidebar-item-title"] >> text="${name}"`).first().click(); + await this.page.locator(`[data-qa="sidebar-item-title"]`).first().click(); } // Note: this is a workaround for now since queued omnichannel chats are not searchable yet so we can't use openChat() :( diff --git a/apps/meteor/tests/e2e/page-objects/fragments/omnichannel-sidenav.ts b/apps/meteor/tests/e2e/page-objects/fragments/omnichannel-sidenav.ts index 633106279f999..89341312e4d97 100644 --- a/apps/meteor/tests/e2e/page-objects/fragments/omnichannel-sidenav.ts +++ b/apps/meteor/tests/e2e/page-objects/fragments/omnichannel-sidenav.ts @@ -26,4 +26,8 @@ export class OmnichannelSidenav { get linkCurrentChats(): Locator { return this.page.locator('a[href="omnichannel/current"]'); } + + get linkTriggers(): Locator { + return this.page.locator('a[href="/omnichannel/triggers"]'); + } } diff --git a/apps/meteor/tests/e2e/page-objects/marketplace-apps.ts b/apps/meteor/tests/e2e/page-objects/marketplace-apps.ts new file mode 100644 index 0000000000000..dcaa3df2b63a6 --- /dev/null +++ b/apps/meteor/tests/e2e/page-objects/marketplace-apps.ts @@ -0,0 +1,43 @@ +import type { Locator, Page } from '@playwright/test'; +import { HomeSidenav } from './fragments'; +import { OmnichannelSidenav } from './fragments'; + +export class MarketPlace { + private readonly page: Page; + + readonly sidenav: OmnichannelSidenav; + readonly homsidenav: HomeSidenav + + constructor(page: Page) { + this.page = page; + this.sidenav = new OmnichannelSidenav(page); + this. homsidenav = new HomeSidenav(page); + } + + get apps(): Locator { + return this.page.locator('a[href="/admin/marketplace"]'); + } + + get exploreMarket(): Locator { + return this.page.locator('//button[contains(text(),"Explore Marketplace")]'); + } + + get settings(): Locator { + return this.page.locator('//div[contains(text(),"Settings")]'); + } + + public async installApp(isexploreMarket = true): Promise { + const buttonLabel = isexploreMarket ? 'Explore Marketplace' : 'Upload App'; + if (isexploreMarket) { + await this.settings.click(); + await this.page.locator('[placeholder="Search"]').fill('General'); + await this.page.locator('[data-qa-id="General"] > div >button').click(); + await this.page.locator('//h1[contains(text(),"Apps")]').click(); + await this.page.locator('[data-qa-setting-id="Apps_Framework_Development_Mode"]').click(); + await this.page.locator('//button[text()="Save changes"]').click(); + } + await this.apps.locator('//div[@class="rcx-box rcx-box--full rcx-css-10ij0kz"]//following::button[@class="rcx-box rcx-box--full rcx-button--small-square rcx-button--square rcx-button--icon rcx-button"]').click(); + await this.homsidenav.openInstalledApps(); + } + + } \ No newline at end of file diff --git a/apps/meteor/tests/e2e/page-objects/omnichannel-livechat.ts b/apps/meteor/tests/e2e/page-objects/omnichannel-livechat.ts index ca5e60c011cfd..2fc41cef5a4fb 100644 --- a/apps/meteor/tests/e2e/page-objects/omnichannel-livechat.ts +++ b/apps/meteor/tests/e2e/page-objects/omnichannel-livechat.ts @@ -45,6 +45,10 @@ export class OmnichannelLiveChat { return this.page.locator('footer div div div:nth-child(3) button'); } + get firstAutoMessage(): Locator { + return this.page.locator('div.message-text__WwYco p'); + } + public async sendMessage(liveChatUser: { name: string; email: string }, isOffline = true): Promise { const buttonLabel = isOffline ? 'Send' : 'Start chat'; await this.inputName.type(liveChatUser.name); @@ -54,4 +58,5 @@ export class OmnichannelLiveChat { } await this.btnSendMessage(buttonLabel).click(); } + } diff --git a/apps/meteor/tests/e2e/page-objects/omnichannel-triggers.ts b/apps/meteor/tests/e2e/page-objects/omnichannel-triggers.ts new file mode 100644 index 0000000000000..4413d4eb32549 --- /dev/null +++ b/apps/meteor/tests/e2e/page-objects/omnichannel-triggers.ts @@ -0,0 +1,98 @@ +import type { Locator, Page } from '@playwright/test'; + +import { OmnichannelSidenav } from './fragments'; + +export class OmnichannelTriggers { + private readonly page: Page; + + readonly sidenav: OmnichannelSidenav; + + constructor(page: Page) { + this.page = page; + this.sidenav = new OmnichannelSidenav(page); + } + + get btnNew(): Locator { + return this.page.locator('text= New'); + } + + get Name(): Locator { + return this.page.locator('[placeholder="Name"]'); + } + + get Description(): Locator { + return this.page.locator('[placeholder="Description"]'); + } + + get visitorTimeOnSite(): Locator { + return this.page.locator('text=Visitor time on site'); + } + + get visitorPageURL(): Locator { + return this.page.locator('text=Visitor page URL'); + } + + get chatOpenedByVisitor(): Locator { + return this.page.locator('text=Chat opened by the visitor'); + } + + get addTime(): Locator { + return this.page.locator('[placeholder="Time in seconds"]'); + } + + get impersonateAgent(): Locator { + return this.page.locator('text=Impersonate next agent from queue'); + } + + get impersonateAgentListBox(): Locator { + return this.page.locator('ol[role="listbox"] >> text=Impersonate next agent from queue'); + } + + get customAgent(): Locator { + return this.page.locator('text=Custom agent'); + } + + get agentName(): Locator { + return this.page.locator('[placeholder="Name of agent"]'); + } + + get textArea(): Locator { + return this.page.locator('textarea'); + } + + get saveBtn(): Locator { + return this.page.locator('text=Save'); + } + + get firstRowInTable() { + return this.page.locator('table tr:first-child td:first-child'); + } + + firstRowInTriggerTable(triggersName: string) { + return this.page.locator(`[qa-user-id="${triggersName}"]`); + } + + get toastMessage(): Locator { + return this.page.locator('text=Saved'); } + + get inputSearch() { + return this.page.locator('[placeholder="Search"]'); + } + + get pageTitle() { + return this.page.locator('[data-qa-type="PageHeader-title"]'); + } + + get btnDeletefirstRowInTable() { + return this.page.locator('button[title="Remove"]'); + } + + get btnModalRemove(): Locator { + return this.page.locator('#modal-root dialog .rcx-modal__inner .rcx-modal__footer .rcx-button--danger'); + } + + get removeToastMessage(): Locator { + return this.page.locator('text=Trigger removed'); + } + +} \ No newline at end of file From fd6b93f37996d90fdbd4d30f4c451961daf9bfad Mon Sep 17 00:00:00 2001 From: Harmeet221 Date: Thu, 1 Dec 2022 13:49:35 +0530 Subject: [PATCH 02/11] Resolving lint issues --- .../tests/e2e/omnichannel-triggers.spec.ts | 31 +++++++------------ .../page-objects/fragments/home-sidenav.ts | 5 ++- .../e2e/page-objects/omnichannel-triggers.ts | 24 +++++++------- 3 files changed, 26 insertions(+), 34 deletions(-) diff --git a/apps/meteor/tests/e2e/omnichannel-triggers.spec.ts b/apps/meteor/tests/e2e/omnichannel-triggers.spec.ts index 7aa830f4314ce..b0298c91a0a92 100644 --- a/apps/meteor/tests/e2e/omnichannel-triggers.spec.ts +++ b/apps/meteor/tests/e2e/omnichannel-triggers.spec.ts @@ -6,10 +6,9 @@ import { OmnichannelLiveChat } from './page-objects'; import { OmnichannelTriggers } from './page-objects/omnichannel-triggers'; import { OmnichannelSidenav } from './page-objects/fragments/omnichannel-sidenav'; - test.use({ storageState: 'admin-session.json' }); - test.describe.serial('omnichannel-triggers', () => { +test.describe.serial('omnichannel-triggers', () => { let poOmnichannelTriggers: OmnichannelTriggers; let poOmnichannelSidenav: OmnichannelSidenav; let triggersName: string; @@ -19,18 +18,18 @@ test.use({ storageState: 'admin-session.json' }); test.beforeAll(() => { triggersName = faker.datatype.uuid(); - triggerMessage = 'Welcome to Rocket.chat' + triggerMessage = 'Welcome to Rocket.chat'; }); test.beforeEach(async ({ page }: { page: Page }) => { poOmnichannelTriggers = new OmnichannelTriggers(page); poOmnichannelSidenav = new OmnichannelSidenav(page); - await page.goto('/omnichannel'); + await page.goto('/omnichannel'); await poOmnichannelSidenav.linkTriggers.click(); - await expect(page.url()).toContain('/omnichannel/triggers'); - }); + await expect(page.url()).toContain('/omnichannel/triggers'); + }); - test('expect create new trigger', async () => { + test('expect create new trigger', async () => { await poOmnichannelTriggers.btnNew.click(); await poOmnichannelTriggers.Name.fill(triggersName); await poOmnichannelTriggers.Description.fill('Creating a fresh trigger'); @@ -39,25 +38,21 @@ test.use({ storageState: 'admin-session.json' }); await poOmnichannelTriggers.addTime.click(); await poOmnichannelTriggers.addTime.fill('5s'); await poOmnichannelTriggers.impersonateAgent.click(); - await poOmnichannelTriggers.textArea.fill(triggerMessage); + await poOmnichannelTriggers.textArea.fill(triggerMessage); await poOmnichannelTriggers.saveBtn.click(); await expect(poOmnichannelTriggers.toastMessage).toBeVisible(); - }); test('expect update trigger name', async ({}) => { - const newTriggerName = `edited-${triggersName}`; await poOmnichannelTriggers.firstRowInTable.click(); await poOmnichannelTriggers.Name.fill(newTriggerName); await poOmnichannelTriggers.saveBtn.click(); await expect(poOmnichannelTriggers.toastMessage).toBeVisible(); - }); - test('expect update trigger type', async({page}) =>{ - + test('expect update trigger type', async ({ page }) => { newVisitor = { name: faker.name.firstName(), email: faker.internet.email(), @@ -70,25 +65,23 @@ test.use({ storageState: 'admin-session.json' }); await poOmnichannelTriggers.impersonateAgent.click(); await poOmnichannelTriggers.customAgent.click(); await poOmnichannelTriggers.agentName.fill('Rocket.cat'); - await poOmnichannelTriggers.textArea.fill(triggerMessage); + await poOmnichannelTriggers.textArea.fill(triggerMessage); await poOmnichannelTriggers.saveBtn.click(); await expect(poOmnichannelTriggers.toastMessage).toBeVisible(); - // start a new chat to verify trigger is fired on + // start a new chat to verify trigger is fired on poLiveChat = new OmnichannelLiveChat(page); await page.goto('/livechat'); await poLiveChat.btnOpenLiveChat('R').click(); await poLiveChat.sendMessage(newVisitor, false); await expect(poLiveChat.firstAutoMessage).toHaveText(triggerMessage); - }); - test('expect deleting trigger',async ({}) => { - + test('expect deleting trigger', async ({}) => { await poOmnichannelTriggers.btnDeletefirstRowInTable.click(); await poOmnichannelTriggers.btnModalRemove.click(); await expect(poOmnichannelTriggers.removeToastMessage).toBeVisible(); }); -}); \ No newline at end of file +}); diff --git a/apps/meteor/tests/e2e/page-objects/fragments/home-sidenav.ts b/apps/meteor/tests/e2e/page-objects/fragments/home-sidenav.ts index f765522744274..e89551ecbe337 100644 --- a/apps/meteor/tests/e2e/page-objects/fragments/home-sidenav.ts +++ b/apps/meteor/tests/e2e/page-objects/fragments/home-sidenav.ts @@ -29,7 +29,6 @@ export class HomeSidenav { async openInstalledApps(): Promise { await this.page.locator('//button[@title="Administration"]').click(); await this.page.locator('//div[contains(text(),"Installed")]').click(); - //await this.page.locator(`li.rcx-option >> text="${text}"`).click(); } async openNewByLabel(text: string): Promise { @@ -50,8 +49,8 @@ export class HomeSidenav { async openChat(name: string): Promise { await this.page.locator('[data-qa="sidebar-search"]').click(); await this.page.locator('[data-qa="sidebar-search-input"]').type(name); - //await this.page.locator(`[data-qa="sidebar-item-title"] >> text="${name}"`).first().click(); - await this.page.locator(`[data-qa="sidebar-item-title"]`).first().click(); + await this.page.locator(`[data-qa="sidebar-item-title"] >> text="${name}"`).first().click(); + // await this.page.locator(`[data-qa="sidebar-item-title"]`).first().click(); } // Note: this is a workaround for now since queued omnichannel chats are not searchable yet so we can't use openChat() :( diff --git a/apps/meteor/tests/e2e/page-objects/omnichannel-triggers.ts b/apps/meteor/tests/e2e/page-objects/omnichannel-triggers.ts index 4413d4eb32549..6f3d1261421d7 100644 --- a/apps/meteor/tests/e2e/page-objects/omnichannel-triggers.ts +++ b/apps/meteor/tests/e2e/page-objects/omnichannel-triggers.ts @@ -16,15 +16,15 @@ export class OmnichannelTriggers { return this.page.locator('text= New'); } - get Name(): Locator { + get Name(): Locator { return this.page.locator('[placeholder="Name"]'); } - get Description(): Locator { + get Description(): Locator { return this.page.locator('[placeholder="Description"]'); - } + } - get visitorTimeOnSite(): Locator { + get visitorTimeOnSite(): Locator { return this.page.locator('text=Visitor time on site'); } @@ -36,15 +36,15 @@ export class OmnichannelTriggers { return this.page.locator('text=Chat opened by the visitor'); } - get addTime(): Locator { + get addTime(): Locator { return this.page.locator('[placeholder="Time in seconds"]'); } - get impersonateAgent(): Locator { + get impersonateAgent(): Locator { return this.page.locator('text=Impersonate next agent from queue'); } - get impersonateAgentListBox(): Locator { + get impersonateAgentListBox(): Locator { return this.page.locator('ol[role="listbox"] >> text=Impersonate next agent from queue'); } @@ -56,11 +56,11 @@ export class OmnichannelTriggers { return this.page.locator('[placeholder="Name of agent"]'); } - get textArea(): Locator { + get textArea(): Locator { return this.page.locator('textarea'); } - get saveBtn(): Locator { + get saveBtn(): Locator { return this.page.locator('text=Save'); } @@ -73,7 +73,8 @@ export class OmnichannelTriggers { } get toastMessage(): Locator { - return this.page.locator('text=Saved'); } + return this.page.locator('text=Saved'); + } get inputSearch() { return this.page.locator('[placeholder="Search"]'); @@ -94,5 +95,4 @@ export class OmnichannelTriggers { get removeToastMessage(): Locator { return this.page.locator('text=Trigger removed'); } - -} \ No newline at end of file +} From 6ef16dc65093e97634d57839560fc1156418be61 Mon Sep 17 00:00:00 2001 From: Harmeet221 Date: Thu, 1 Dec 2022 18:46:24 +0530 Subject: [PATCH 03/11] Remove Marketplace --- .../e2e/marketplace-install-apps.spec.ts | 23 ---------- .../tests/e2e/omnichannel-triggers.spec.ts | 4 +- .../e2e/page-objects/marketplace-apps.ts | 43 ------------------- 3 files changed, 2 insertions(+), 68 deletions(-) delete mode 100644 apps/meteor/tests/e2e/marketplace-install-apps.spec.ts delete mode 100644 apps/meteor/tests/e2e/page-objects/marketplace-apps.ts diff --git a/apps/meteor/tests/e2e/marketplace-install-apps.spec.ts b/apps/meteor/tests/e2e/marketplace-install-apps.spec.ts deleted file mode 100644 index 0ad92be6bd0e5..0000000000000 --- a/apps/meteor/tests/e2e/marketplace-install-apps.spec.ts +++ /dev/null @@ -1,23 +0,0 @@ -import type { Page } from '@playwright/test'; - -import { test, expect } from './utils/test'; -import { MarketPlace } from './page-objects/marketplace-apps'; - -test.use({ storageState: 'admin-session.json' }); - -test.describe.serial('Install apps', () => { - let poMarketPlace: MarketPlace; - - test.beforeEach(async ({ page }) => { - poMarketPlace = new MarketPlace(page); - - await page.goto('/home'); - await poMarketPlace.homsidenav.openInstalledApps(); - - }); - - test('install an application using upload button', async ({}) => { - await poMarketPlace.installApp(true); - }); - -}); \ No newline at end of file diff --git a/apps/meteor/tests/e2e/omnichannel-triggers.spec.ts b/apps/meteor/tests/e2e/omnichannel-triggers.spec.ts index b0298c91a0a92..28f4412b54b20 100644 --- a/apps/meteor/tests/e2e/omnichannel-triggers.spec.ts +++ b/apps/meteor/tests/e2e/omnichannel-triggers.spec.ts @@ -44,7 +44,7 @@ test.describe.serial('omnichannel-triggers', () => { await expect(poOmnichannelTriggers.toastMessage).toBeVisible(); }); - test('expect update trigger name', async ({}) => { + test('expect update trigger name', async () => { const newTriggerName = `edited-${triggersName}`; await poOmnichannelTriggers.firstRowInTable.click(); await poOmnichannelTriggers.Name.fill(newTriggerName); @@ -78,7 +78,7 @@ test.describe.serial('omnichannel-triggers', () => { await expect(poLiveChat.firstAutoMessage).toHaveText(triggerMessage); }); - test('expect deleting trigger', async ({}) => { + test('expect deleting trigger', async () => { await poOmnichannelTriggers.btnDeletefirstRowInTable.click(); await poOmnichannelTriggers.btnModalRemove.click(); diff --git a/apps/meteor/tests/e2e/page-objects/marketplace-apps.ts b/apps/meteor/tests/e2e/page-objects/marketplace-apps.ts deleted file mode 100644 index dcaa3df2b63a6..0000000000000 --- a/apps/meteor/tests/e2e/page-objects/marketplace-apps.ts +++ /dev/null @@ -1,43 +0,0 @@ -import type { Locator, Page } from '@playwright/test'; -import { HomeSidenav } from './fragments'; -import { OmnichannelSidenav } from './fragments'; - -export class MarketPlace { - private readonly page: Page; - - readonly sidenav: OmnichannelSidenav; - readonly homsidenav: HomeSidenav - - constructor(page: Page) { - this.page = page; - this.sidenav = new OmnichannelSidenav(page); - this. homsidenav = new HomeSidenav(page); - } - - get apps(): Locator { - return this.page.locator('a[href="/admin/marketplace"]'); - } - - get exploreMarket(): Locator { - return this.page.locator('//button[contains(text(),"Explore Marketplace")]'); - } - - get settings(): Locator { - return this.page.locator('//div[contains(text(),"Settings")]'); - } - - public async installApp(isexploreMarket = true): Promise { - const buttonLabel = isexploreMarket ? 'Explore Marketplace' : 'Upload App'; - if (isexploreMarket) { - await this.settings.click(); - await this.page.locator('[placeholder="Search"]').fill('General'); - await this.page.locator('[data-qa-id="General"] > div >button').click(); - await this.page.locator('//h1[contains(text(),"Apps")]').click(); - await this.page.locator('[data-qa-setting-id="Apps_Framework_Development_Mode"]').click(); - await this.page.locator('//button[text()="Save changes"]').click(); - } - await this.apps.locator('//div[@class="rcx-box rcx-box--full rcx-css-10ij0kz"]//following::button[@class="rcx-box rcx-box--full rcx-button--small-square rcx-button--square rcx-button--icon rcx-button"]').click(); - await this.homsidenav.openInstalledApps(); - } - - } \ No newline at end of file From 976d866091ccd2b27979b45639659543a80b80b9 Mon Sep 17 00:00:00 2001 From: Harmeet221 Date: Thu, 8 Dec 2022 12:26:37 +0530 Subject: [PATCH 04/11] updated triggers file --- .../tests/e2e/omnichannel-triggers.spec.ts | 27 +++---------------- .../e2e/page-objects/omnichannel-livechat.ts | 1 - .../e2e/page-objects/omnichannel-triggers.ts | 24 +++++++++++++++++ 3 files changed, 27 insertions(+), 25 deletions(-) diff --git a/apps/meteor/tests/e2e/omnichannel-triggers.spec.ts b/apps/meteor/tests/e2e/omnichannel-triggers.spec.ts index 28f4412b54b20..6627d2eb3f51f 100644 --- a/apps/meteor/tests/e2e/omnichannel-triggers.spec.ts +++ b/apps/meteor/tests/e2e/omnichannel-triggers.spec.ts @@ -30,17 +30,7 @@ test.describe.serial('omnichannel-triggers', () => { }); test('expect create new trigger', async () => { - await poOmnichannelTriggers.btnNew.click(); - await poOmnichannelTriggers.Name.fill(triggersName); - await poOmnichannelTriggers.Description.fill('Creating a fresh trigger'); - await poOmnichannelTriggers.visitorPageURL.click(); - await poOmnichannelTriggers.visitorTimeOnSite.click(); - await poOmnichannelTriggers.addTime.click(); - await poOmnichannelTriggers.addTime.fill('5s'); - await poOmnichannelTriggers.impersonateAgent.click(); - await poOmnichannelTriggers.textArea.fill(triggerMessage); - await poOmnichannelTriggers.saveBtn.click(); - + await poOmnichannelTriggers.createTrigger(triggersName, triggerMessage); await expect(poOmnichannelTriggers.toastMessage).toBeVisible(); }); @@ -57,20 +47,9 @@ test.describe.serial('omnichannel-triggers', () => { name: faker.name.firstName(), email: faker.internet.email(), }; - await poOmnichannelTriggers.firstRowInTable.click(); - await poOmnichannelTriggers.Name.fill(triggersName); - await poOmnichannelTriggers.Description.fill('Updating the existing trigger'); - await poOmnichannelTriggers.visitorTimeOnSite.click(); - await poOmnichannelTriggers.chatOpenedByVisitor.click(); - await poOmnichannelTriggers.impersonateAgent.click(); - await poOmnichannelTriggers.customAgent.click(); - await poOmnichannelTriggers.agentName.fill('Rocket.cat'); - await poOmnichannelTriggers.textArea.fill(triggerMessage); - await poOmnichannelTriggers.saveBtn.click(); - + await poOmnichannelTriggers.updateTrigger(); await expect(poOmnichannelTriggers.toastMessage).toBeVisible(); - - // start a new chat to verify trigger is fired on + // start a new chat to verify trigger is fired on livechat poLiveChat = new OmnichannelLiveChat(page); await page.goto('/livechat'); await poLiveChat.btnOpenLiveChat('R').click(); diff --git a/apps/meteor/tests/e2e/page-objects/omnichannel-livechat.ts b/apps/meteor/tests/e2e/page-objects/omnichannel-livechat.ts index 2fc41cef5a4fb..510028168013a 100644 --- a/apps/meteor/tests/e2e/page-objects/omnichannel-livechat.ts +++ b/apps/meteor/tests/e2e/page-objects/omnichannel-livechat.ts @@ -58,5 +58,4 @@ export class OmnichannelLiveChat { } await this.btnSendMessage(buttonLabel).click(); } - } diff --git a/apps/meteor/tests/e2e/page-objects/omnichannel-triggers.ts b/apps/meteor/tests/e2e/page-objects/omnichannel-triggers.ts index 6f3d1261421d7..027c982f45767 100644 --- a/apps/meteor/tests/e2e/page-objects/omnichannel-triggers.ts +++ b/apps/meteor/tests/e2e/page-objects/omnichannel-triggers.ts @@ -95,4 +95,28 @@ export class OmnichannelTriggers { get removeToastMessage(): Locator { return this.page.locator('text=Trigger removed'); } + + public async createTrigger(triggersName: string, triggerMessage: string) { + await this.btnNew.click(); + await this.Name.fill(triggersName); + await this.Description.fill('Creating a fresh trigger'); + await this.visitorPageURL.click(); + await this.visitorTimeOnSite.click(); + await this.addTime.click(); + await this.addTime.fill('5s'); + await this.impersonateAgent.click(); + await this.textArea.fill(triggerMessage); + await this.saveBtn.click(); + } + + public async updateTrigger() { + await this.firstRowInTable.click(); + await this.Description.fill('Updating the existing trigger'); + await this.visitorTimeOnSite.click(); + await this.chatOpenedByVisitor.click(); + await this.impersonateAgent.click(); + await this.customAgent.click(); + await this.agentName.fill('Rocket.cat'); + await this.saveBtn.click(); + } } From adc8f8758948447a6091726e1a960881309695f6 Mon Sep 17 00:00:00 2001 From: Harmeet221 Date: Fri, 9 Dec 2022 00:11:32 +0530 Subject: [PATCH 05/11] adding agent role --- .../tests/e2e/omnichannel-triggers.spec.ts | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/apps/meteor/tests/e2e/omnichannel-triggers.spec.ts b/apps/meteor/tests/e2e/omnichannel-triggers.spec.ts index 6627d2eb3f51f..0b418ac1e6f08 100644 --- a/apps/meteor/tests/e2e/omnichannel-triggers.spec.ts +++ b/apps/meteor/tests/e2e/omnichannel-triggers.spec.ts @@ -1,12 +1,11 @@ import { faker } from '@faker-js/faker'; -import type { Page } from '@playwright/test'; import { test, expect } from './utils/test'; import { OmnichannelLiveChat } from './page-objects'; import { OmnichannelTriggers } from './page-objects/omnichannel-triggers'; import { OmnichannelSidenav } from './page-objects/fragments/omnichannel-sidenav'; -test.use({ storageState: 'admin-session.json' }); +test.use({ storageState: 'user1-session.json' }); test.describe.serial('omnichannel-triggers', () => { let poOmnichannelTriggers: OmnichannelTriggers; @@ -16,17 +15,24 @@ test.describe.serial('omnichannel-triggers', () => { let poLiveChat: OmnichannelLiveChat; let newVisitor: { email: string; name: string }; - test.beforeAll(() => { + test.beforeAll(async ({ api }) => { triggersName = faker.datatype.uuid(); triggerMessage = 'Welcome to Rocket.chat'; + await api.post('/livechat/users/agent', { username: 'user1' }); + await api.post('/livechat/users/manager', { username: 'user1' }); }); - test.beforeEach(async ({ page }: { page: Page }) => { + test.beforeEach(async ({ page }) => { poOmnichannelTriggers = new OmnichannelTriggers(page); poOmnichannelSidenav = new OmnichannelSidenav(page); await page.goto('/omnichannel'); await poOmnichannelSidenav.linkTriggers.click(); - await expect(page.url()).toContain('/omnichannel/triggers'); + expect(page.url()).toContain('/omnichannel/triggers'); + }); + + test.afterAll(async ({ api }) => { + await api.delete('/livechat/users/agent/user1'); + await api.delete('/livechat/users/manager/user1'); }); test('expect create new trigger', async () => { From dfe540048260f7aa3ffddf899316c21639f3eb0a Mon Sep 17 00:00:00 2001 From: Harmeet221 Date: Fri, 9 Dec 2022 18:19:59 +0530 Subject: [PATCH 06/11] Modified send message function --- apps/meteor/tests/e2e/omnichannel-triggers.spec.ts | 2 +- .../tests/e2e/page-objects/omnichannel-livechat.ts | 11 +++++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/apps/meteor/tests/e2e/omnichannel-triggers.spec.ts b/apps/meteor/tests/e2e/omnichannel-triggers.spec.ts index 0b418ac1e6f08..0744a9f43375a 100644 --- a/apps/meteor/tests/e2e/omnichannel-triggers.spec.ts +++ b/apps/meteor/tests/e2e/omnichannel-triggers.spec.ts @@ -59,7 +59,7 @@ test.describe.serial('omnichannel-triggers', () => { poLiveChat = new OmnichannelLiveChat(page); await page.goto('/livechat'); await poLiveChat.btnOpenLiveChat('R').click(); - await poLiveChat.sendMessage(newVisitor, false); + await poLiveChat.startNewChat(newVisitor, true); await expect(poLiveChat.firstAutoMessage).toHaveText(triggerMessage); }); diff --git a/apps/meteor/tests/e2e/page-objects/omnichannel-livechat.ts b/apps/meteor/tests/e2e/page-objects/omnichannel-livechat.ts index 510028168013a..8570c4211a1b2 100644 --- a/apps/meteor/tests/e2e/page-objects/omnichannel-livechat.ts +++ b/apps/meteor/tests/e2e/page-objects/omnichannel-livechat.ts @@ -58,4 +58,15 @@ export class OmnichannelLiveChat { } await this.btnSendMessage(buttonLabel).click(); } + + public async startNewChat(liveChatUser: { name: string; email: string }, isChatNow = true): Promise { + isChatNow ? 'Chat now' : 'Start chat'; + if (isChatNow) { + // await this.btnSendMessage(buttonLabel).click(); + await this.page.locator('//button[text()="Chat now"]').click(); + } + await this.inputName.type(liveChatUser.name); + await this.inputEmail.type(liveChatUser.email); + await this.page.locator('[type="submit"] >> text="Start chat"').click(); + } } From 18851dcc7c397fbe6a16371ee6af04e7eec05e9f Mon Sep 17 00:00:00 2001 From: Harmeet221 Date: Sun, 11 Dec 2022 17:00:30 +0530 Subject: [PATCH 07/11] Skip steps --- apps/meteor/tests/e2e/omnichannel-triggers.spec.ts | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/apps/meteor/tests/e2e/omnichannel-triggers.spec.ts b/apps/meteor/tests/e2e/omnichannel-triggers.spec.ts index 0744a9f43375a..b1d18890078ca 100644 --- a/apps/meteor/tests/e2e/omnichannel-triggers.spec.ts +++ b/apps/meteor/tests/e2e/omnichannel-triggers.spec.ts @@ -13,7 +13,7 @@ test.describe.serial('omnichannel-triggers', () => { let triggersName: string; let triggerMessage: string; let poLiveChat: OmnichannelLiveChat; - let newVisitor: { email: string; name: string }; + // let newVisitor: { email: string; name: string }; test.beforeAll(async ({ api }) => { triggersName = faker.datatype.uuid(); @@ -49,18 +49,18 @@ test.describe.serial('omnichannel-triggers', () => { }); test('expect update trigger type', async ({ page }) => { - newVisitor = { - name: faker.name.firstName(), - email: faker.internet.email(), - }; + // newVisitor = { + // name: faker.name.firstName(), + // email: faker.internet.email(), + // }; await poOmnichannelTriggers.updateTrigger(); await expect(poOmnichannelTriggers.toastMessage).toBeVisible(); // start a new chat to verify trigger is fired on livechat poLiveChat = new OmnichannelLiveChat(page); await page.goto('/livechat'); await poLiveChat.btnOpenLiveChat('R').click(); - await poLiveChat.startNewChat(newVisitor, true); - await expect(poLiveChat.firstAutoMessage).toHaveText(triggerMessage); + // await poLiveChat.startNewChat(newVisitor, true); + // await expect(poLiveChat.firstAutoMessage).toHaveText(triggerMessage); }); test('expect deleting trigger', async () => { From 386fe3b5ea1fabbadb700d4e2eb5c02afa20c5a7 Mon Sep 17 00:00:00 2001 From: Harmeet221 Date: Fri, 16 Dec 2022 17:55:59 +0530 Subject: [PATCH 08/11] Multiple sessions --- .../tests/e2e/omnichannel-triggers.spec.ts | 73 +++++++++---------- .../e2e/page-objects/home-omnichannel.ts | 9 ++- .../e2e/page-objects/omnichannel-livechat.ts | 11 ++- .../e2e/page-objects/omnichannel-triggers.ts | 10 +-- 4 files changed, 55 insertions(+), 48 deletions(-) diff --git a/apps/meteor/tests/e2e/omnichannel-triggers.spec.ts b/apps/meteor/tests/e2e/omnichannel-triggers.spec.ts index b1d18890078ca..d8967a5ccf8ee 100644 --- a/apps/meteor/tests/e2e/omnichannel-triggers.spec.ts +++ b/apps/meteor/tests/e2e/omnichannel-triggers.spec.ts @@ -1,33 +1,39 @@ import { faker } from '@faker-js/faker'; +import type { Browser, Page } from '@playwright/test'; import { test, expect } from './utils/test'; -import { OmnichannelLiveChat } from './page-objects'; -import { OmnichannelTriggers } from './page-objects/omnichannel-triggers'; -import { OmnichannelSidenav } from './page-objects/fragments/omnichannel-sidenav'; +import { OmnichannelLiveChat, HomeOmnichannel } from './page-objects'; -test.use({ storageState: 'user1-session.json' }); +const createAuxContext = async (browser: Browser, storageState: string): Promise<{ page: Page; poHomeOmnichannel: HomeOmnichannel }> => { + const page = await browser.newPage({ storageState }); + const poHomeOmnichannel = new HomeOmnichannel(page); + await page.goto('/omnichannel/triggers'); + await page.locator('.main-content').waitFor(); + + return { page, poHomeOmnichannel }; +}; test.describe.serial('omnichannel-triggers', () => { - let poOmnichannelTriggers: OmnichannelTriggers; - let poOmnichannelSidenav: OmnichannelSidenav; let triggersName: string; let triggerMessage: string; let poLiveChat: OmnichannelLiveChat; - // let newVisitor: { email: string; name: string }; + let newUser: { email: string; name: string }; + let agent: { page: Page; poHomeOmnichannel: HomeOmnichannel }; - test.beforeAll(async ({ api }) => { + test.beforeAll(async ({ api, browser }) => { + newUser = { + name: faker.name.firstName(), + email: faker.internet.email(), + }; triggersName = faker.datatype.uuid(); triggerMessage = 'Welcome to Rocket.chat'; await api.post('/livechat/users/agent', { username: 'user1' }); await api.post('/livechat/users/manager', { username: 'user1' }); + agent = await createAuxContext(browser, 'user1-session.json'); }); test.beforeEach(async ({ page }) => { - poOmnichannelTriggers = new OmnichannelTriggers(page); - poOmnichannelSidenav = new OmnichannelSidenav(page); - await page.goto('/omnichannel'); - await poOmnichannelSidenav.linkTriggers.click(); - expect(page.url()).toContain('/omnichannel/triggers'); + poLiveChat = new OmnichannelLiveChat(page); }); test.afterAll(async ({ api }) => { @@ -36,37 +42,28 @@ test.describe.serial('omnichannel-triggers', () => { }); test('expect create new trigger', async () => { - await poOmnichannelTriggers.createTrigger(triggersName, triggerMessage); - await expect(poOmnichannelTriggers.toastMessage).toBeVisible(); + await agent.poHomeOmnichannel.triggers.createTrigger(triggersName, triggerMessage); + await expect(agent.poHomeOmnichannel.triggers.toastMessage).toBeVisible(); }); - test('expect update trigger name', async () => { + test('expect update trigger', async () => { const newTriggerName = `edited-${triggersName}`; - await poOmnichannelTriggers.firstRowInTable.click(); - await poOmnichannelTriggers.Name.fill(newTriggerName); - await poOmnichannelTriggers.saveBtn.click(); - await expect(poOmnichannelTriggers.toastMessage).toBeVisible(); + await agent.poHomeOmnichannel.triggers.firstRowInTriggerTable(triggersName).click(); + await agent.poHomeOmnichannel.triggers.updateTrigger(newTriggerName); + await expect(agent.poHomeOmnichannel.triggers.toastMessage).toBeVisible(); }); - test('expect update trigger type', async ({ page }) => { - // newVisitor = { - // name: faker.name.firstName(), - // email: faker.internet.email(), - // }; - await poOmnichannelTriggers.updateTrigger(); - await expect(poOmnichannelTriggers.toastMessage).toBeVisible(); - // start a new chat to verify trigger is fired on livechat - poLiveChat = new OmnichannelLiveChat(page); - await page.goto('/livechat'); - await poLiveChat.btnOpenLiveChat('R').click(); - // await poLiveChat.startNewChat(newVisitor, true); - // await expect(poLiveChat.firstAutoMessage).toHaveText(triggerMessage); + test('expect triggers to be displaye on Livechat', async ({ page }) => { + await test.step('Expect send a message as a visitor', async () => { + await page.goto('/livechat'); + await poLiveChat.btnOpenLiveChat('R').click(); + await poLiveChat.startNewChat(newUser, false); + await expect(page.locator(`text=${triggerMessage} >> nth=0`)).toBeVisible(); + }); }); - test('expect deleting trigger', async () => { - await poOmnichannelTriggers.btnDeletefirstRowInTable.click(); - await poOmnichannelTriggers.btnModalRemove.click(); - - await expect(poOmnichannelTriggers.removeToastMessage).toBeVisible(); + await agent.poHomeOmnichannel.triggers.btnDeletefirstRowInTable.click(); + await agent.poHomeOmnichannel.triggers.btnModalRemove.click(); + await expect(agent.poHomeOmnichannel.triggers.removeToastMessage).toBeVisible(); }); }); diff --git a/apps/meteor/tests/e2e/page-objects/home-omnichannel.ts b/apps/meteor/tests/e2e/page-objects/home-omnichannel.ts index 5992ed2924776..25fa889ff67e8 100644 --- a/apps/meteor/tests/e2e/page-objects/home-omnichannel.ts +++ b/apps/meteor/tests/e2e/page-objects/home-omnichannel.ts @@ -1,6 +1,7 @@ import type { Locator, Page } from '@playwright/test'; -import { HomeOmnichannelContent, HomeSidenav, HomeFlextab } from './fragments'; +import { HomeOmnichannelContent, HomeSidenav, HomeFlextab, OmnichannelSidenav } from './fragments'; +import { OmnichannelTriggers } from './omnichannel-triggers'; export class HomeOmnichannel { private readonly page: Page; @@ -11,11 +12,17 @@ export class HomeOmnichannel { readonly tabs: HomeFlextab; + readonly triggers: OmnichannelTriggers; + + readonly omnisidenav: OmnichannelSidenav; + constructor(page: Page) { this.page = page; this.content = new HomeOmnichannelContent(page); this.sidenav = new HomeSidenav(page); this.tabs = new HomeFlextab(page); + this.triggers = new OmnichannelTriggers(page); + this.omnisidenav = new OmnichannelSidenav(page); } get toastSuccess(): Locator { diff --git a/apps/meteor/tests/e2e/page-objects/omnichannel-livechat.ts b/apps/meteor/tests/e2e/page-objects/omnichannel-livechat.ts index 8570c4211a1b2..2ee7c2ee37488 100644 --- a/apps/meteor/tests/e2e/page-objects/omnichannel-livechat.ts +++ b/apps/meteor/tests/e2e/page-objects/omnichannel-livechat.ts @@ -33,6 +33,10 @@ export class OmnichannelLiveChat { return this.page.locator(`[type="submit"] >> text="${btnText}"`); } + btnChatNow(btnText: string): Locator { + return this.page.locator(`[type="button"] >> text="${btnText}"`); + } + get btnOk(): Locator { return this.page.locator('button >> text="OK"'); } @@ -60,13 +64,12 @@ export class OmnichannelLiveChat { } public async startNewChat(liveChatUser: { name: string; email: string }, isChatNow = true): Promise { - isChatNow ? 'Chat now' : 'Start chat'; + const btnName = isChatNow ? 'Chat now' : 'Start chat'; if (isChatNow) { - // await this.btnSendMessage(buttonLabel).click(); - await this.page.locator('//button[text()="Chat now"]').click(); + await this.btnChatNow(btnName).click(); } await this.inputName.type(liveChatUser.name); await this.inputEmail.type(liveChatUser.email); - await this.page.locator('[type="submit"] >> text="Start chat"').click(); + await this.btnSendMessage(btnName).click(); } } diff --git a/apps/meteor/tests/e2e/page-objects/omnichannel-triggers.ts b/apps/meteor/tests/e2e/page-objects/omnichannel-triggers.ts index 027c982f45767..e41e9a78efe46 100644 --- a/apps/meteor/tests/e2e/page-objects/omnichannel-triggers.ts +++ b/apps/meteor/tests/e2e/page-objects/omnichannel-triggers.ts @@ -68,8 +68,8 @@ export class OmnichannelTriggers { return this.page.locator('table tr:first-child td:first-child'); } - firstRowInTriggerTable(triggersName: string) { - return this.page.locator(`[qa-user-id="${triggersName}"]`); + firstRowInTriggerTable(triggersName1: string) { + return this.page.locator(`text="${triggersName1}"`); } get toastMessage(): Locator { @@ -85,7 +85,7 @@ export class OmnichannelTriggers { } get btnDeletefirstRowInTable() { - return this.page.locator('button[title="Remove"]'); + return this.page.locator('table tr:first-child td:last-child button'); } get btnModalRemove(): Locator { @@ -109,8 +109,8 @@ export class OmnichannelTriggers { await this.saveBtn.click(); } - public async updateTrigger() { - await this.firstRowInTable.click(); + public async updateTrigger(newName: string) { + await this.Name.fill(newName); await this.Description.fill('Updating the existing trigger'); await this.visitorTimeOnSite.click(); await this.chatOpenedByVisitor.click(); From 9920ae10097c890948ffcf684597e6991bc2eda5 Mon Sep 17 00:00:00 2001 From: Harmeet221 Date: Fri, 16 Dec 2022 23:23:17 +0530 Subject: [PATCH 09/11] Updated flaky locators --- apps/meteor/tests/e2e/omnichannel-triggers.spec.ts | 6 +++++- .../tests/e2e/page-objects/omnichannel-livechat.ts | 14 -------------- .../tests/e2e/page-objects/omnichannel-triggers.ts | 4 ++-- 3 files changed, 7 insertions(+), 17 deletions(-) diff --git a/apps/meteor/tests/e2e/omnichannel-triggers.spec.ts b/apps/meteor/tests/e2e/omnichannel-triggers.spec.ts index d8967a5ccf8ee..d68936ca4a970 100644 --- a/apps/meteor/tests/e2e/omnichannel-triggers.spec.ts +++ b/apps/meteor/tests/e2e/omnichannel-triggers.spec.ts @@ -57,10 +57,14 @@ test.describe.serial('omnichannel-triggers', () => { await test.step('Expect send a message as a visitor', async () => { await page.goto('/livechat'); await poLiveChat.btnOpenLiveChat('R').click(); - await poLiveChat.startNewChat(newUser, false); + if (await page.locator('[type="button"] >> text="Chat now"').isVisible()) { + await page.locator('[type="button"] >> text="Chat now"').click(); + } + await poLiveChat.sendMessage(newUser, false); await expect(page.locator(`text=${triggerMessage} >> nth=0`)).toBeVisible(); }); }); + test('expect deleting trigger', async () => { await agent.poHomeOmnichannel.triggers.btnDeletefirstRowInTable.click(); await agent.poHomeOmnichannel.triggers.btnModalRemove.click(); diff --git a/apps/meteor/tests/e2e/page-objects/omnichannel-livechat.ts b/apps/meteor/tests/e2e/page-objects/omnichannel-livechat.ts index 2ee7c2ee37488..510028168013a 100644 --- a/apps/meteor/tests/e2e/page-objects/omnichannel-livechat.ts +++ b/apps/meteor/tests/e2e/page-objects/omnichannel-livechat.ts @@ -33,10 +33,6 @@ export class OmnichannelLiveChat { return this.page.locator(`[type="submit"] >> text="${btnText}"`); } - btnChatNow(btnText: string): Locator { - return this.page.locator(`[type="button"] >> text="${btnText}"`); - } - get btnOk(): Locator { return this.page.locator('button >> text="OK"'); } @@ -62,14 +58,4 @@ export class OmnichannelLiveChat { } await this.btnSendMessage(buttonLabel).click(); } - - public async startNewChat(liveChatUser: { name: string; email: string }, isChatNow = true): Promise { - const btnName = isChatNow ? 'Chat now' : 'Start chat'; - if (isChatNow) { - await this.btnChatNow(btnName).click(); - } - await this.inputName.type(liveChatUser.name); - await this.inputEmail.type(liveChatUser.email); - await this.btnSendMessage(btnName).click(); - } } diff --git a/apps/meteor/tests/e2e/page-objects/omnichannel-triggers.ts b/apps/meteor/tests/e2e/page-objects/omnichannel-triggers.ts index e41e9a78efe46..2f21a1bdf69d9 100644 --- a/apps/meteor/tests/e2e/page-objects/omnichannel-triggers.ts +++ b/apps/meteor/tests/e2e/page-objects/omnichannel-triggers.ts @@ -61,7 +61,7 @@ export class OmnichannelTriggers { } get saveBtn(): Locator { - return this.page.locator('text=Save'); + return this.page.locator('button >> text="Save"'); } get firstRowInTable() { @@ -73,7 +73,7 @@ export class OmnichannelTriggers { } get toastMessage(): Locator { - return this.page.locator('text=Saved'); + return this.page.locator('.rcx-toastbar.rcx-toastbar--success >> nth=0'); } get inputSearch() { From 93a9577baa81f59fb8e7366f7bfca4355c36f5c9 Mon Sep 17 00:00:00 2001 From: Harmeet221 <87123067+Harmeet221@users.noreply.github.com> Date: Mon, 19 Dec 2022 17:28:17 +0530 Subject: [PATCH 10/11] Update apps/meteor/tests/e2e/page-objects/fragments/home-sidenav.ts Co-authored-by: Murtaza Patrawala <34130764+murtaza98@users.noreply.github.com> --- apps/meteor/tests/e2e/page-objects/fragments/home-sidenav.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/apps/meteor/tests/e2e/page-objects/fragments/home-sidenav.ts b/apps/meteor/tests/e2e/page-objects/fragments/home-sidenav.ts index 2a2dbd553657f..ec98aac02a8f6 100644 --- a/apps/meteor/tests/e2e/page-objects/fragments/home-sidenav.ts +++ b/apps/meteor/tests/e2e/page-objects/fragments/home-sidenav.ts @@ -56,7 +56,6 @@ export class HomeSidenav { await this.page.locator('[data-qa="sidebar-search"]').click(); await this.page.locator('[data-qa="sidebar-search-input"]').type(name); await this.page.locator(`[data-qa="sidebar-item-title"] >> text="${name}"`).first().click(); - // await this.page.locator(`[data-qa="sidebar-item-title"]`).first().click(); } async switchOmnichannelStatus(status: 'offline' | 'online') { From 0d28e23ba9a4d91e75b4211d0c5c5c67062953ca Mon Sep 17 00:00:00 2001 From: murtaza98 Date: Wed, 15 Feb 2023 11:02:18 +0530 Subject: [PATCH 11/11] fix whitespace issue --- .../tests/e2e/page-objects/fragments/omnichannel-sidenav.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/meteor/tests/e2e/page-objects/fragments/omnichannel-sidenav.ts b/apps/meteor/tests/e2e/page-objects/fragments/omnichannel-sidenav.ts index f524cc35c7a5a..ebca2dc9450fc 100644 --- a/apps/meteor/tests/e2e/page-objects/fragments/omnichannel-sidenav.ts +++ b/apps/meteor/tests/e2e/page-objects/fragments/omnichannel-sidenav.ts @@ -29,7 +29,7 @@ export class OmnichannelSidenav { get linkTriggers(): Locator { return this.page.locator('a[href="/omnichannel/triggers"]'); - } + } get linkSlaPolicies(): Locator { return this.page.locator('a[href="omnichannel/sla-policies"]');