Skip to content

Commit

Permalink
Add chat tests
Browse files Browse the repository at this point in the history
Signed-off-by: Jasmin <[email protected]>
  • Loading branch information
JasminMus committed May 20, 2024
1 parent f98765a commit 9b1a593
Show file tree
Hide file tree
Showing 6 changed files with 168 additions and 18 deletions.
12 changes: 12 additions & 0 deletions tests/sanity/tests/API/Api.ts
Original file line number Diff line number Diff line change
Expand Up @@ -58,4 +58,16 @@ export class ApiEndpoint {
const response = await this.request.post(url, { data: payload, headers })
return await response.json()
}

async leaveWorkspace (email: string, username: string, password: string): Promise<any> {
const token = await this.loginAndGetToken(username, password)
const url = AccountUrl
const payload = {
method: 'leaveWorkspace',
params: [email]
}
const headers = this.getDefaultHeaders(token)
const response = await this.request.post(url, { data: payload, headers })
return await response.json()
}
}
123 changes: 112 additions & 11 deletions tests/sanity/tests/chat/chat.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -34,8 +34,9 @@ test.describe('channel tests', () => {
api = new ApiEndpoint(request)
await api.createAccount(data.userName, '1234', data.firstName, data.lastName)
await api.createWorkspaceWithLogin(data.workspaceName, data.userName, '1234')
await (await page.goto(`${PlatformURI}/workbench/${data.workspaceName}`))?.finished()
await (await page.goto(`${PlatformURI}`))?.finished()
await loginPage.login(data.userName, '1234')
await (await page.goto(`${PlatformURI}/workbench/${data.workspaceName}`))?.finished()
})

test('create new private channel and check if the messages stays on it', async ({ browser, page }) => {
Expand All @@ -45,13 +46,13 @@ test.describe('channel tests', () => {
await chunterPage.createPrivateChannel(data.channelName, true)
await channelPage.checkIfChannelDefaultExist(true, data.channelName)
await channelPage.sendMessage('Test message')
await channelPage.checkMessageExist('Test message', true)
await channelPage.checkMessageExist('Test message', true, 'Test message')
await channelPage.clickChannel('general')
await channelPage.checkMessageExist('Test message', false)
await channelPage.checkMessageExist('Test message', false, 'Test message')
await channelPage.clickChannel(data.channelName)
await channelPage.checkMessageExist('Test message', true)
await channelPage.checkMessageExist('Test message', true, 'Test message')
await page.reload()
await channelPage.checkMessageExist('Test message', true)
await channelPage.checkMessageExist('Test message', true, 'Test message')
})

test('create new public channel and check if the messages stays on it', async ({ browser, page }) => {
Expand All @@ -61,13 +62,13 @@ test.describe('channel tests', () => {
await chunterPage.createPrivateChannel(data.channelName, false)
await channelPage.checkIfChannelDefaultExist(true, data.channelName)
await channelPage.sendMessage('Test message')
await channelPage.checkMessageExist('Test message', true)
await channelPage.checkMessageExist('Test message', true, 'Test message')
await channelPage.clickChannel('general')
await channelPage.checkMessageExist('Test message', false)
await channelPage.checkMessageExist('Test message', false, 'Test message')
await channelPage.clickChannel(data.channelName)
await channelPage.checkMessageExist('Test message', true)
await channelPage.checkMessageExist('Test message', true, 'Test message')
await page.reload()
await channelPage.checkMessageExist('Test message', true)
await channelPage.checkMessageExist('Test message', true, 'Test message')
})

test('create new private channel tests and check if the new user have access to it', async ({ browser, page }) => {
Expand All @@ -77,7 +78,7 @@ test.describe('channel tests', () => {
await chunterPage.createPrivateChannel(data.channelName, true)
await channelPage.checkIfChannelDefaultExist(true, data.channelName)
await channelPage.sendMessage('Test message')
await channelPage.checkMessageExist('Test message', true)
await channelPage.checkMessageExist('Test message', true, 'Test message')
await leftSideMenuPage.openProfileMenu()
await leftSideMenuPage.inviteToWorkspace()
await leftSideMenuPage.getInviteLink()
Expand Down Expand Up @@ -106,7 +107,33 @@ test.describe('channel tests', () => {
await chunterPage.createPrivateChannel(data.channelName, false)
await channelPage.checkIfChannelDefaultExist(true, data.channelName)
await channelPage.sendMessage('Test message')
await channelPage.checkMessageExist('Test message', true)
await channelPage.checkMessageExist('Test message', true, 'Test message')
await leftSideMenuPage.openProfileMenu()
await leftSideMenuPage.inviteToWorkspace()
await leftSideMenuPage.getInviteLink()

const linkText = await page.locator('.antiPopup .link').textContent()
const page2 = await browser.newPage()
const leftSideMenuPageSecond = new LeftSideMenuPage(page2)
const channelPageSecond = new ChannelPage(page2)
await api.createAccount(newUser2.email, newUser2.password, newUser2.firstName, newUser2.lastName)
await page2.goto(linkText ?? '')
const joinPage = new SignInJoinPage(page2)
await joinPage.join(newUser2)
await leftSideMenuPageSecond.clickChunter()
await channelPageSecond.checkIfChannelDefaultExist(false, data.channelName)
await channelPageSecond.clickChannelTab()
await channelPageSecond.checkIfChannelTableExist(data.channelName, true)
})

test('create new private channel and test if the user can exchange the messages', async ({ browser, page }) => {
await leftSideMenuPage.clickChunter()
await chunterPage.clickChannelBrowser()
await chunterPage.clickNewChannelHeader()
await chunterPage.createPrivateChannel(data.channelName, false)
await channelPage.checkIfChannelDefaultExist(true, data.channelName)
await channelPage.sendMessage('Test message')
await channelPage.checkMessageExist('Test message', true, 'Test message')
await leftSideMenuPage.openProfileMenu()
await leftSideMenuPage.inviteToWorkspace()
await leftSideMenuPage.getInviteLink()
Expand All @@ -115,6 +142,7 @@ test.describe('channel tests', () => {
const page2 = await browser.newPage()
const leftSideMenuPageSecond = new LeftSideMenuPage(page2)
const channelPageSecond = new ChannelPage(page2)
await leftSideMenuPage.clickOnCloseInvite()
await api.createAccount(newUser2.email, newUser2.password, newUser2.firstName, newUser2.lastName)
await page2.goto(linkText ?? '')
const joinPage = new SignInJoinPage(page2)
Expand All @@ -123,5 +151,78 @@ test.describe('channel tests', () => {
await channelPageSecond.checkIfChannelDefaultExist(false, data.channelName)
await channelPageSecond.clickChannelTab()
await channelPageSecond.checkIfChannelTableExist(data.channelName, true)
await channelPageSecond.clickChooseChannel(data.channelName)
await channelPageSecond.checkMessageExist('Test message', true, 'Test message')
await channelPageSecond.sendMessage('My dream is to fly')
await channelPageSecond.checkMessageExist('My dream is to fly', true, 'My dream is to fly')
await channelPage.clickOnClosePopupButton()
await channelPage.checkMessageExist('My dream is to fly', true, 'My dream is to fly')
})

test('create new private channel add user to it', async ({ browser, page }) => {
await leftSideMenuPage.clickChunter()
await chunterPage.clickChannelBrowser()
await chunterPage.clickNewChannelHeader()
await chunterPage.createPrivateChannel(data.channelName, true)
await channelPage.checkIfChannelDefaultExist(true, data.channelName)
await channelPage.sendMessage('Test message')
await channelPage.checkMessageExist('Test message', true, 'Test message')
await leftSideMenuPage.openProfileMenu()
await leftSideMenuPage.inviteToWorkspace()
await leftSideMenuPage.getInviteLink()

const linkText = await page.locator('.antiPopup .link').textContent()
const page2 = await browser.newPage()
const leftSideMenuPageSecond = new LeftSideMenuPage(page2)
const channelPageSecond = new ChannelPage(page2)
await leftSideMenuPage.clickOnCloseInvite()
await api.createAccount(newUser2.email, newUser2.password, newUser2.firstName, newUser2.lastName)
await page2.goto(linkText ?? '')
const joinPage = new SignInJoinPage(page2)
await joinPage.join(newUser2)
await leftSideMenuPageSecond.clickChunter()
await channelPage.clickChannelTab()
await channelPage.clickOnUser(data.lastName + ' ' + data.firstName)
await channelPage.addMemberToChannel(newUser2.lastName + ' ' + newUser2.firstName)
await leftSideMenuPageSecond.clickChunter()
await channelPageSecond.checkIfChannelDefaultExist(false, data.channelName)
await channelPageSecond.clickChannelTab()
await channelPageSecond.checkIfChannelTableExist(data.channelName, true)
await channelPageSecond.clickChooseChannel(data.channelName)
await channelPageSecond.checkMessageExist('Test message', true, 'Test message')
await channelPageSecond.sendMessage('One two')
await channelPageSecond.checkMessageExist('One two', true, 'One two')
await channelPage.clickChooseChannel(data.channelName)
await channelPage.checkMessageExist('One two', true, 'One two')
})

test('go to general channel add user to it', async ({ browser, page }) => {
await leftSideMenuPage.clickChunter()
await channelPage.clickChannel('general')

await channelPage.sendMessage('Test message')
await channelPage.checkMessageExist('Test message', true, 'Test message')
await leftSideMenuPage.openProfileMenu()
await leftSideMenuPage.inviteToWorkspace()
await leftSideMenuPage.getInviteLink()

const linkText = await page.locator('.antiPopup .link').textContent()
const page2 = await browser.newPage()
const leftSideMenuPageSecond = new LeftSideMenuPage(page2)
const channelPageSecond = new ChannelPage(page2)
await leftSideMenuPage.clickOnCloseInvite()
await api.createAccount(newUser2.email, newUser2.password, newUser2.firstName, newUser2.lastName)
await page2.goto(linkText ?? '')
const joinPage = new SignInJoinPage(page2)
await joinPage.join(newUser2)
await leftSideMenuPageSecond.clickChunter()
await channelPageSecond.clickChannel('general')
await channelPageSecond.checkMessageExist('Test message', true, 'Test message')
await channelPageSecond.sendMessage('One two')
await channelPageSecond.checkMessageExist('One two', true, 'One two')
await channelPage.clickChannel('random')
await channelPage.clickOnClosePopupButton()
await channelPage.clickChannel('general')
await channelPage.checkMessageExist('One two', true, 'One two')
})
})
34 changes: 27 additions & 7 deletions tests/sanity/tests/model/channel-page.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,11 +9,15 @@ export class ChannelPage {

readonly inputMessage = (): Locator => this.page.locator('div[class~="text-editor-view"]')
readonly buttonSendMessage = (): Locator => this.page.locator('g#Send')
readonly textMessage = (): Locator => this.page.getByText('Test message')
readonly textMessage = (messageText: string): Locator => this.page.getByText(messageText)
readonly channelName = (channel: string): Locator => this.page.getByText('general random').getByText(channel)
readonly channelTab = (): Locator => this.page.getByRole('link', { name: 'Channels' }).getByRole('button')
readonly channelTable = (): Locator => this.page.locator('[class="antiTable metaColumn highlightRows"]')
readonly channel = (channel: string): Locator => this.page.getByRole('button', { name: channel })
readonly chooseChannel = (channel: string): Locator => this.page.getByRole('link', { name: channel })
readonly closePopupWindow = (): Locator => this.page.locator('.root > div > .antiButton').first()
readonly openAddMemberToChannel = (userName: string): Locator => this.page.getByRole('button', { name: userName })
readonly addMemberToChannelButton = (userName: string): Locator => this.page.getByRole('button', { name: userName })

async sendMessage (message: string): Promise<void> {
await this.inputMessage().fill(message)
Expand All @@ -24,18 +28,34 @@ export class ChannelPage {
await this.channel(channel).click()
}

async checkMessageExist (message: string, messageExists: boolean): Promise<void> {
async clickChooseChannel (channel: string): Promise<void> {
await this.chooseChannel(channel).click({ force: true })
}

async checkMessageExist (message: string, messageExists: boolean, messageText: string): Promise<void> {
if (messageExists) {
await expect(this.textMessage().filter({ hasText: message })).toBeVisible()
await expect(this.textMessage(messageText).filter({ hasText: message })).toBeVisible()
} else {
await expect(this.textMessage().filter({ hasText: message })).toBeHidden()
await expect(this.textMessage(messageText).filter({ hasText: message })).toBeHidden()
}
}

async clickChannelTab (): Promise<void> {
await this.channelTab().click()
}

async clickOnClosePopupButton (): Promise<void> {
await this.closePopupWindow().click()
}

async clickOnUser (user: string): Promise<void> {
await this.addMemberToChannelButton(user).click()
}

async addMemberToChannel (user: string): Promise<void> {
await this.openAddMemberToChannel(user).click()
}

async checkIfChannelDefaultExist (shouldExist: boolean, channel: string): Promise<void> {
if (shouldExist) {
await expect(this.channelName(channel)).toBeVisible()
Expand All @@ -53,11 +73,11 @@ export class ChannelPage {
}
}

async checkIfMessageExist (messageExists: boolean): Promise<void> {
async checkIfMessageExist (messageExists: boolean, messageText: string): Promise<void> {
if (messageExists) {
await expect(this.textMessage()).toBeVisible()
await expect(this.textMessage(messageText)).toBeVisible()
} else {
await expect(this.textMessage()).toBeHidden()
await expect(this.textMessage(messageText)).toBeHidden()
}
}
}
5 changes: 5 additions & 0 deletions tests/sanity/tests/model/left-side-menu-page.ts
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ export class LeftSideMenuPage extends CommonPage {
profileButton = (): Locator => this.page.locator('#profile-button')
inviteToWorkspaceButton = (): Locator => this.page.locator('button:has-text("Invite to workspace")')
getInviteLinkButton = (): Locator => this.page.locator('button:has-text("Get invite link")')
clickCloseOnInviteLinkButton = (): Locator => this.page.getByRole('button', { name: 'Close' })

// Actions
async openProfileMenu (): Promise<void> {
Expand Down Expand Up @@ -51,6 +52,10 @@ export class LeftSideMenuPage extends CommonPage {
await this.buttonDocuments().click()
}

async clickOnCloseInvite (): Promise<void> {
await this.clickCloseOnInviteLinkButton().click()
}

// Retrieve the last token from local storage
async getLastToken (): Promise<string> {
return await this.page.evaluate(() => localStorage.getItem('login:metadata:LastToken') ?? '')
Expand Down
5 changes: 5 additions & 0 deletions tests/sanity/tests/model/profile/user-profile-page.ts
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ export class UserProfilePage {
leaveWorkspaceCancelButton = (): Locator => this.page.getByRole('button', { name: 'Cancel' })
leaveWorkspaceConfirmButton = (): Locator => this.page.getByRole('button', { name: 'Ok' })
accountDissabledMessage = (): Locator => this.page.getByRole('heading')
changeAccount = (): Locator => this.page.getByRole('link', { name: 'Change account' })

constructor (page: Page) {
this.page = page
Expand All @@ -32,6 +33,10 @@ export class UserProfilePage {
await this.profileButton().click()
}

async clickChangeAccount (): Promise<void> {
await this.changeAccount().click()
}

async clickLeaveWorkspaceButton (): Promise<void> {
await this.leaveWorkspaceButton().click()
}
Expand Down
7 changes: 7 additions & 0 deletions tests/sanity/tests/utils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,13 @@ export function generateTestData (): TestData {
}
}

// Consistent data
export const workspaceName = faker.lorem.word()
export const userName = faker.internet.userName()
export const firstName = faker.person.firstName()
export const lastName = faker.person.lastName()
export const channelName = faker.lorem.word()

function toHex (value: number, chars: number): string {
const result = value.toString(16)
if (result.length < chars) {
Expand Down

0 comments on commit 9b1a593

Please sign in to comment.