From 26f533bc88a4495720b0ab3907a4c1fc14c278af Mon Sep 17 00:00:00 2001 From: Alex Velichko Date: Mon, 23 Oct 2023 18:25:04 +0300 Subject: [PATCH] feat(tests): Added Change & Save all States test (#3863) Signed-off-by: Alex Velichko --- .../recruiting/applications-details-page.ts | 13 +++++++++- .../model/recruiting/applications-page.ts | 24 +++++++++++++++--- .../tests/recruiting/applications.spec.ts | 25 +++++++++++++++++++ 3 files changed, 57 insertions(+), 5 deletions(-) diff --git a/tests/sanity/tests/model/recruiting/applications-details-page.ts b/tests/sanity/tests/model/recruiting/applications-details-page.ts index 1eddecc7e8..4eebad840f 100644 --- a/tests/sanity/tests/model/recruiting/applications-details-page.ts +++ b/tests/sanity/tests/model/recruiting/applications-details-page.ts @@ -14,6 +14,7 @@ export class ApplicationsDetailsPage extends CommonPage { readonly textApplicationId: Locator readonly buttonMoreActions: Locator readonly buttonDelete: Locator + readonly buttonState: Locator constructor (page: Page) { super() @@ -28,6 +29,10 @@ export class ApplicationsDetailsPage extends CommonPage { this.textApplicationId = page.locator('div.popupPanel-title div.title-wrapper > span') this.buttonMoreActions = page.locator('div.popupPanel-title div.buttons-group > button:nth-of-type(2)') this.buttonDelete = page.locator('button[class*="menuItem"] span', { hasText: 'Delete' }) + this.buttonState = page + .locator('div[class*="collapsed-container"]') + .nth(0) + .locator('div[class*="aside-grid"] > div:nth-of-type(1) > button') } async addComment (comment: string): Promise { @@ -56,7 +61,7 @@ export class ApplicationsDetailsPage extends CommonPage { async getApplicationId (): Promise { const applicationId = await this.textApplicationId.textContent() - expect(applicationId !== null).toBeTruthy() + await expect(applicationId !== null).toBeTruthy() return applicationId != null ? applicationId : '' } @@ -65,4 +70,10 @@ export class ApplicationsDetailsPage extends CommonPage { await this.buttonDelete.click() await this.pressYesDeletePopup(this.page) } + + async changeState (status: string): Promise { + await this.buttonState.click() + await this.selectFromDropdown(this.page, status) + await expect(await this.buttonState).toContainText(status) + } } diff --git a/tests/sanity/tests/model/recruiting/applications-page.ts b/tests/sanity/tests/model/recruiting/applications-page.ts index d4fff8f065..c936cd1a86 100644 --- a/tests/sanity/tests/model/recruiting/applications-page.ts +++ b/tests/sanity/tests/model/recruiting/applications-page.ts @@ -74,8 +74,7 @@ export class ApplicationsPage extends CommonPage { async openApplicationByTalentName (talentName: TalentName): Promise { await this.page - .locator('span.ap-label', { hasText: `${talentName.lastName} ${talentName.firstName}` }) - .locator('xpath=../../../../..') + .locator('tr', { hasText: `${talentName.lastName} ${talentName.firstName}` }) .locator('div[class*="firstCell"]') .click() } @@ -83,14 +82,31 @@ export class ApplicationsPage extends CommonPage { async checkApplicationDoneStatus (talentName: TalentName, done: string): Promise { await expect( await this.page - .locator('span.ap-label', { hasText: `${talentName.lastName} ${talentName.firstName}` }) - .locator('xpath=../../../../..') + .locator('tr', { hasText: `${talentName.lastName} ${talentName.firstName}` }) .locator('td') .nth(6) ).toHaveText(done) } + async checkApplicationState (talentName: TalentName, done: string): Promise { + await expect( + await this.page + .locator('tr', { hasText: `${talentName.lastName} ${talentName.firstName}` }) + .locator('td') + .nth(5) + ).toHaveText(done) + } + async checkApplicationNotExist (applicationId: string): Promise { await expect(await this.textTableFirstCell.filter({ hasText: applicationId })).toHaveCount(0) } + + async changeApplicationStatus (talentName: TalentName, status: string): Promise { + await this.page + .locator('tr', { hasText: `${talentName.lastName} ${talentName.firstName}` }) + .locator('td') + .nth(5) + .click() + await this.selectFromDropdown(this.page, status) + } } diff --git a/tests/sanity/tests/recruiting/applications.spec.ts b/tests/sanity/tests/recruiting/applications.spec.ts index e8e7a0d4bb..00ce652681 100644 --- a/tests/sanity/tests/recruiting/applications.spec.ts +++ b/tests/sanity/tests/recruiting/applications.spec.ts @@ -128,4 +128,29 @@ test.describe('Application tests', () => { await navigationMenuPage.buttonApplications.click() await applicationsPage.checkApplicationNotExist(applicationId) }) + + test('Change & Save all States', async ({ page }) => { + const navigationMenuPage = new NavigationMenuPage(page) + await navigationMenuPage.buttonApplications.click() + + const applicationsPage = new ApplicationsPage(page) + const talentName = await applicationsPage.createNewApplicationWithNewTalent({ + vacancy: 'first', + recruiterName: 'first' + }) + await applicationsPage.checkApplicationState(talentName, 'HR Interview') + await applicationsPage.openApplicationByTalentName(talentName) + + let applicationsDetailsPage = new ApplicationsDetailsPage(page) + await applicationsDetailsPage.changeState('Technical Interview') + + await navigationMenuPage.buttonApplications.click() + await applicationsPage.checkApplicationState(talentName, 'Technical Interview') + await applicationsPage.changeApplicationStatus(talentName, 'Test task') + await applicationsPage.checkApplicationState(talentName, 'Test task') + + await applicationsPage.openApplicationByTalentName(talentName) + applicationsDetailsPage = new ApplicationsDetailsPage(page) + await applicationsDetailsPage.changeState('Offer') + }) })