[go: nahoru, domu]

Skip to content

Commit

Permalink
Added and fixed uitest (hcengineering#5866)
Browse files Browse the repository at this point in the history
Signed-off-by: Alexander Platov <alexander.platov@hardcoreeng.com>
  • Loading branch information
SasLord committed Jun 20, 2024
1 parent 1b9cf87 commit 58af65e
Show file tree
Hide file tree
Showing 4 changed files with 69 additions and 9 deletions.
2 changes: 1 addition & 1 deletion tests/sanity/tests/chat/chat.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -352,7 +352,7 @@ test.describe('channel tests', () => {
await chunterPage.createPrivateChannel(data.channelName, false)
await channelPage.checkIfChannelDefaultExist(true, data.channelName)
await channelPage.clickOnOpenChannelDetails()
await channelPage.changeChannelPrivacyOrAutoJoin('N/A', 'Yes', 'Yes')
await channelPage.changeChannelPrivacyOrAutoJoin('N/A', 'Yes', 'Yes', true)
})

test('Check if the user can be added through preview tab', async ({ browser, page }) => {
Expand Down
27 changes: 20 additions & 7 deletions tests/sanity/tests/model/channel-page.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,10 +14,10 @@ export class ChannelPage {
readonly channelTab = (): Locator => this.page.getByRole('link', { name: 'Channels' }).getByRole('button')
readonly channelTable = (): Locator => this.page.getByRole('table')
readonly channel = (channel: string): Locator => this.page.getByRole('button', { name: channel })
readonly chooseChannel = (channel: string): Locator => this.page.getByRole('link', { name: channel })
readonly chooseChannel = (channel: string): Locator => this.page.getByRole('button', { 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 })
readonly addMemberToChannelButton = (userName: string): Locator => this.page.getByText(userName)
readonly joinChannelButton = (): Locator => this.page.getByRole('button', { name: 'Join' })
readonly addEmojiButton = (): Locator => this.page.locator('.root > button').first()
readonly selectEmoji = (emoji: string): Locator => this.page.getByText(emoji)
Expand All @@ -37,7 +37,15 @@ export class ChannelPage {
readonly updateButton = (): Locator => this.page.getByRole('button', { name: 'Update' })
readonly openChannelDetails = (): Locator => this.page.locator('.ac-header > .antiButton')
readonly changeChannelNameConfirm = (): Locator => this.page.locator('.ml-2 > .antiButton')
readonly privateOrPublicChangeButton = (change: string): Locator => this.page.getByRole('button', { name: change })
readonly privateOrPublicChangeButton = (change: string, autoJoin: boolean): Locator =>
this.page
.locator('span.labelOnPanel', { hasText: autoJoin ? 'Auto join' : 'Private' })
.locator('xpath=following-sibling::div[1]')
.locator('button', { hasText: change })

readonly privateOrPublicPopupButton = (change: string): Locator =>
this.page.locator('div.popup div.menu-item', { hasText: change })

readonly userAdded = (user: string): Locator => this.page.getByText(user)
private readonly addMemberPreview = (): Locator => this.page.getByRole('button', { name: 'Add members' })
private readonly addButtonPreview = (): Locator => this.page.getByRole('button', { name: 'Add', exact: true })
Expand All @@ -61,11 +69,16 @@ export class ChannelPage {
await this.changeChannelNameConfirm().click()
}

async changeChannelPrivacyOrAutoJoin (change: string, YesNo: string, changed: string): Promise<void> {
await this.privateOrPublicChangeButton(change).click()
async changeChannelPrivacyOrAutoJoin (
change: string,
YesNo: string,
changed: string,
autoJoin: boolean = false
): Promise<void> {
await this.privateOrPublicChangeButton(change, autoJoin).click()
await this.page.waitForTimeout(200)
await this.page.getByText(YesNo).click()
await expect(this.privateOrPublicChangeButton(changed)).toBeVisible()
await this.privateOrPublicPopupButton(YesNo).click()
await expect(this.privateOrPublicChangeButton(changed, autoJoin)).toBeVisible()
}

async clickDeleteMessageButton (): Promise<void> {
Expand Down
28 changes: 28 additions & 0 deletions tests/sanity/tests/model/planning/planning-page.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ export class PlanningPage extends CalendarPage {
private readonly popup = (): Locator => this.page.locator('div.popup')
private readonly panel = (): Locator => this.page.locator('div.hulyModal-container')
private readonly toDosContainer = (): Locator => this.page.locator('div.toDos-container')
private readonly schedule = (): Locator => this.page.locator('div.hulyComponent.modal')
readonly pageHeader = (): Locator =>
this.page.locator('div[class*="navigator"] div[class*="header"]', { hasText: 'Planning' })

Expand All @@ -30,6 +31,10 @@ export class PlanningPage extends CalendarPage {
readonly buttonPanelCreatePriority = (): Locator => this.panel().locator('button#priorityButton')
readonly buttonPopupCreateVisible = (): Locator => this.popup().locator('button#visibleButton')
readonly buttonPanelCreateVisible = (): Locator => this.panel().locator('button#visibleButton')
readonly buttonPopupVisibleToEveryone = (): Locator =>
this.popup().getByRole('button', { name: 'Visible to everyone' })

readonly buttonPopupSave = (): Locator => this.popup().getByRole('button', { name: 'Save' })
readonly buttonPopupCreateAddLabel = (): Locator =>
this.popup().locator('button.antiButton', { hasText: 'Add label' })

Expand Down Expand Up @@ -66,6 +71,29 @@ export class PlanningPage extends CalendarPage {
readonly buttonPopupSelectDateNextMonth = (): Locator =>
this.popup().locator('div.header > div:last-child > button:last-child')

readonly selectInputToDo = (): Locator => this.toDosContainer().getByPlaceholder('Add todo, press Enter to save')
readonly selectTomorrow = (time: string): Locator =>
this.schedule().locator(`div.time-cell:text-is('${time}')`).locator('xpath=following::div[2]')

readonly eventInSchedule = (title: string): Locator =>
this.schedule().locator('div.event-container', { hasText: title })

async dragdropTomorrow (title: string, time: string): Promise<void> {
await this.toDosContainer().getByRole('button', { name: title }).hover()
await this.page.mouse.down()
const boundingBox = await this.selectTomorrow(time).boundingBox()
expect(boundingBox).toBeTruthy()
if (boundingBox != null) {
await this.page.mouse.move(boundingBox.x + 10, boundingBox.y + 10)
await this.page.mouse.move(boundingBox.x + 10, boundingBox.y + 20)
await this.page.mouse.up()
}
}

async checkInSchedule (title: string): Promise<void> {
await expect(this.eventInSchedule(title)).toBeVisible()
}

async clickButtonCreateAddSlot (): Promise<void> {
await this.buttonPanelCreateAddSlot().click({ force: true })
}
Expand Down
21 changes: 20 additions & 1 deletion tests/sanity/tests/planning/plan.spec.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { test } from '@playwright/test'
import { PlatformSetting, PlatformURI } from '../utils'
import { generateId, PlatformSetting, PlatformURI } from '../utils'
import { PlanningPage } from '../model/planning/planning-page'
import { NewToDo } from '../model/planning/types'
import { PlanningNavigationMenuPage } from '../model/planning/planning-navigation-menu-page'
Expand Down Expand Up @@ -159,4 +159,23 @@ test.describe('Planning ToDo tests', () => {
await planningPage.checkTimeSlotEndDate(0, dateEndToday.getDate().toString())
await planningPage.checkTimeSlotEndDate(1, dateEndTomorrow.getDate().toString())
})

test("Drag'n'drop added Todo", async ({ page }) => {
let hour = new Date().getHours()
const ampm = hour < 13 ? 'am' : 'pm'
hour = hour < 1 ? 1 : hour >= 11 && hour < 13 ? 11 : hour >= 22 ? 10 : hour > 12 ? hour - 12 : hour
const time = `${hour}${ampm}`
const title = `Drag and drop ToDo ${generateId()}`

const planningNavigationMenuPage = new PlanningNavigationMenuPage(page)
await planningNavigationMenuPage.clickOnButtonToDoAll()
const planningPage = new PlanningPage(page)
await planningPage.selectInputToDo().fill(title)
await planningPage.selectInputToDo().press('Enter')
await planningPage.dragdropTomorrow(title, time)
await planningPage.eventInSchedule(title).click()
await planningPage.buttonPopupCreateVisible().click()
await planningPage.buttonPopupVisibleToEveryone().click()
await planningPage.buttonPopupSave().click()
})
})

0 comments on commit 58af65e

Please sign in to comment.