mirror of
https://github.com/hcengineering/platform.git
synced 2025-04-23 00:37:47 +00:00
TESTS-50: feat(tests): done Edit a component test (#4232)
Signed-off-by: Alex Velichko <nestor_007@mail.ru>
This commit is contained in:
parent
5daa8d460c
commit
ac3fec3f35
41
tests/sanity/tests/model/tracker/component-details-page.ts
Normal file
41
tests/sanity/tests/model/tracker/component-details-page.ts
Normal file
@ -0,0 +1,41 @@
|
|||||||
|
import { expect, type Locator, type Page } from '@playwright/test'
|
||||||
|
import { NewComponent } from './types'
|
||||||
|
import { CommonTrackerPage } from './common-tracker-page'
|
||||||
|
|
||||||
|
export class ComponentsDetailsPage extends CommonTrackerPage {
|
||||||
|
readonly page: Page
|
||||||
|
readonly inputComponentName: Locator
|
||||||
|
readonly inputComponentDescription: Locator
|
||||||
|
readonly buttonLead: Locator
|
||||||
|
|
||||||
|
constructor (page: Page) {
|
||||||
|
super(page)
|
||||||
|
this.page = page
|
||||||
|
this.inputComponentName = page.locator('div.antiEditBox input')
|
||||||
|
this.inputComponentDescription = page.locator('div.textInput div.tiptap')
|
||||||
|
this.buttonLead = page.locator('//span[text()="Lead"]/following-sibling::div[1]/div/button')
|
||||||
|
}
|
||||||
|
|
||||||
|
async editComponent (data: NewComponent): Promise<void> {
|
||||||
|
if (data.name != null) {
|
||||||
|
await this.inputComponentName.fill(data.name)
|
||||||
|
}
|
||||||
|
if (data.description != null) {
|
||||||
|
await this.inputComponentDescription.fill(data.description)
|
||||||
|
}
|
||||||
|
if (data.lead != null) {
|
||||||
|
await this.buttonLead.click()
|
||||||
|
await this.selectMenuItem(this.page, data.lead)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async checkComponent (data: NewComponent): Promise<void> {
|
||||||
|
await expect(this.inputComponentName).toHaveValue(data.name)
|
||||||
|
if (data.description != null) {
|
||||||
|
await expect(this.inputComponentDescription).toHaveText(data.description)
|
||||||
|
}
|
||||||
|
if (data.lead != null) {
|
||||||
|
await expect(this.buttonLead).toHaveText(data.lead)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
43
tests/sanity/tests/model/tracker/components-page.ts
Normal file
43
tests/sanity/tests/model/tracker/components-page.ts
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
import { type Locator, type Page } from '@playwright/test'
|
||||||
|
import { NewComponent } from './types'
|
||||||
|
import { CommonTrackerPage } from './common-tracker-page'
|
||||||
|
|
||||||
|
export class ComponentsPage extends CommonTrackerPage {
|
||||||
|
readonly page: Page
|
||||||
|
readonly buttonNewComponent: Locator
|
||||||
|
readonly inputNewComponentModalComponentName: Locator
|
||||||
|
readonly inputNewComponentModalComponentDescription: Locator
|
||||||
|
readonly buttonNewComponentModalComponentLead: Locator
|
||||||
|
readonly buttonNewComponentModalComponentCreate: Locator
|
||||||
|
|
||||||
|
constructor (page: Page) {
|
||||||
|
super(page)
|
||||||
|
this.page = page
|
||||||
|
this.buttonNewComponent = page.locator('button[type="submit"] span', { hasText: 'Component' })
|
||||||
|
this.inputNewComponentModalComponentName = page.locator('form[id="tracker:string:NewComponent"] input')
|
||||||
|
this.inputNewComponentModalComponentDescription = page.locator('form[id="tracker:string:NewComponent"] div.tiptap')
|
||||||
|
this.buttonNewComponentModalComponentLead = page.locator(
|
||||||
|
'form[id="tracker:string:NewComponent"] div.antiCard-pool button[type="button"]'
|
||||||
|
)
|
||||||
|
this.buttonNewComponentModalComponentCreate = page.locator(
|
||||||
|
'form[id="tracker:string:NewComponent"] button[type="submit"]'
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
async createNewComponent (data: NewComponent): Promise<void> {
|
||||||
|
await this.buttonNewComponent.click()
|
||||||
|
await this.inputNewComponentModalComponentName.fill(data.name)
|
||||||
|
if (data.description != null) {
|
||||||
|
await this.inputNewComponentModalComponentDescription.fill(data.description)
|
||||||
|
}
|
||||||
|
if (data.lead != null) {
|
||||||
|
await this.buttonNewComponentModalComponentLead.click()
|
||||||
|
await this.selectMenuItem(this.page, data.lead)
|
||||||
|
}
|
||||||
|
await this.buttonNewComponentModalComponentCreate.click()
|
||||||
|
}
|
||||||
|
|
||||||
|
async openComponentByName (componentName: string): Promise<void> {
|
||||||
|
await this.page.locator('div.row a', { hasText: componentName }).click()
|
||||||
|
}
|
||||||
|
}
|
@ -57,9 +57,17 @@ export class TrackerNavigationMenuPage extends CommonPage {
|
|||||||
|
|
||||||
async openMilestonesForProject (projectName: string): Promise<void> {
|
async openMilestonesForProject (projectName: string): Promise<void> {
|
||||||
await this.page
|
await this.page
|
||||||
.locator('div[class*="antiNav-element"] a[href$="milestones"][href*="Default"]> div > span', {
|
.locator(`div[class*="antiNav-element"] a[href$="milestones"][href*="${projectName}"]> div > span`, {
|
||||||
hasText: 'Milestones'
|
hasText: 'Milestones'
|
||||||
})
|
})
|
||||||
.click()
|
.click()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async openComponentsForProject (projectName: string): Promise<void> {
|
||||||
|
await this.page
|
||||||
|
.locator(`div[class*="antiNav-element"] a[href$="components"][href*="${projectName}"]> div > span`, {
|
||||||
|
hasText: 'Components'
|
||||||
|
})
|
||||||
|
.click()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -40,3 +40,9 @@ export interface NewMilestone {
|
|||||||
}
|
}
|
||||||
targetDateInDays?: string
|
targetDateInDays?: string
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export interface NewComponent {
|
||||||
|
name: string
|
||||||
|
description?: string
|
||||||
|
lead?: string
|
||||||
|
}
|
||||||
|
@ -2,6 +2,11 @@ import { expect, test } from '@playwright/test'
|
|||||||
import { navigate } from './tracker.utils'
|
import { navigate } from './tracker.utils'
|
||||||
import { generateId, PlatformSetting, PlatformURI, fillSearch } from '../utils'
|
import { generateId, PlatformSetting, PlatformURI, fillSearch } from '../utils'
|
||||||
import { allure } from 'allure-playwright'
|
import { allure } from 'allure-playwright'
|
||||||
|
import { LeftSideMenuPage } from '../model/left-side-menu-page'
|
||||||
|
import { TrackerNavigationMenuPage } from '../model/tracker/tracker-navigation-menu-page'
|
||||||
|
import { ComponentsPage } from '../model/tracker/components-page'
|
||||||
|
import { NewComponent } from '../model/tracker/types'
|
||||||
|
import { ComponentsDetailsPage } from '../model/tracker/component-details-page'
|
||||||
|
|
||||||
test.use({
|
test.use({
|
||||||
storageState: PlatformSetting
|
storageState: PlatformSetting
|
||||||
@ -38,4 +43,36 @@ test.describe('Tracker component tests', () => {
|
|||||||
await page.click('form button:has-text("Create issue")')
|
await page.click('form button:has-text("Create issue")')
|
||||||
await page.waitForSelector('form.antiCard', { state: 'detached' })
|
await page.waitForSelector('form.antiCard', { state: 'detached' })
|
||||||
})
|
})
|
||||||
|
|
||||||
|
test('Edit a component', async ({ page }) => {
|
||||||
|
const newComponent: NewComponent = {
|
||||||
|
name: `Edit component test create-${generateId()}`,
|
||||||
|
description: 'Edit component test description create',
|
||||||
|
lead: 'Dirak Kainin'
|
||||||
|
}
|
||||||
|
const editComponent: NewComponent = {
|
||||||
|
name: `Edit component test update-${generateId()}`,
|
||||||
|
description: 'Edit component test description update',
|
||||||
|
lead: 'Appleseed John'
|
||||||
|
}
|
||||||
|
|
||||||
|
const leftSideMenuPage = new LeftSideMenuPage(page)
|
||||||
|
await leftSideMenuPage.buttonTracker.click()
|
||||||
|
|
||||||
|
const trackerNavigationMenuPage = new TrackerNavigationMenuPage(page)
|
||||||
|
await trackerNavigationMenuPage.openComponentsForProject('Default')
|
||||||
|
|
||||||
|
const componentsPage = new ComponentsPage(page)
|
||||||
|
await componentsPage.createNewComponent(newComponent)
|
||||||
|
await componentsPage.openComponentByName(newComponent.name)
|
||||||
|
|
||||||
|
const componentsDetailsPage = new ComponentsDetailsPage(page)
|
||||||
|
await componentsDetailsPage.checkComponent(newComponent)
|
||||||
|
|
||||||
|
await componentsDetailsPage.editComponent(editComponent)
|
||||||
|
await trackerNavigationMenuPage.openComponentsForProject('Default')
|
||||||
|
|
||||||
|
await componentsPage.openComponentByName(editComponent.name)
|
||||||
|
await componentsDetailsPage.checkComponent(editComponent)
|
||||||
|
})
|
||||||
})
|
})
|
||||||
|
Loading…
Reference in New Issue
Block a user