mirror of
https://github.com/hcengineering/platform.git
synced 2025-05-28 10:57:36 +00:00
Added and fixed uitest (#5866)
Signed-off-by: Alexander Platov <alexander.platov@hardcoreeng.com>
This commit is contained in:
parent
1b9cf87b73
commit
58af65e29d
@ -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 }) => {
|
||||
|
@ -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)
|
||||
@ -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 })
|
||||
@ -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> {
|
||||
|
@ -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' })
|
||||
|
||||
@ -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' })
|
||||
|
||||
@ -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 })
|
||||
}
|
||||
|
@ -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'
|
||||
@ -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()
|
||||
})
|
||||
})
|
||||
|
Loading…
Reference in New Issue
Block a user