mirror of
https://github.com/hcengineering/platform.git
synced 2024-12-23 03:22:19 +03:00
Recruting test refactoring (#5473)
Signed-off-by: Jasmin <jasmin@hardcoreeng.com>
This commit is contained in:
parent
7d12548067
commit
7b0a8827ed
@ -10,7 +10,15 @@ test.use({
|
||||
})
|
||||
// ADDED NEW
|
||||
test.describe('Collaborative test for issue', () => {
|
||||
let leftSideMenuPage: LeftSideMenuPage
|
||||
let issuesPage: IssuesPage
|
||||
let issuesDetailsPage: IssuesDetailsPage
|
||||
|
||||
test.beforeEach(async ({ page }) => {
|
||||
leftSideMenuPage = new LeftSideMenuPage(page)
|
||||
issuesPage = new IssuesPage(page)
|
||||
issuesDetailsPage = new IssuesDetailsPage(page)
|
||||
|
||||
await (await page.goto(`${PlatformURI}/workbench/sanity-ws/tracker/`))?.finished()
|
||||
})
|
||||
|
||||
@ -37,13 +45,11 @@ test.describe('Collaborative test for issue', () => {
|
||||
|
||||
// create a new issue by first user
|
||||
await (await page.goto(`${PlatformURI}/workbench/sanity-ws/tracker/`))?.finished()
|
||||
const leftSideMenuPage = new LeftSideMenuPage(page)
|
||||
await leftSideMenuPage.clickTracker()
|
||||
|
||||
const issuesPage = new IssuesPage(page)
|
||||
await issuesPage.createNewIssue(newIssue)
|
||||
await issuesPage.linkSidebarAll().click()
|
||||
await issuesPage.modelSelectorAll().click()
|
||||
await issuesPage.clickLinkSidebarAll()
|
||||
await issuesPage.clickModelSelectorAll()
|
||||
await issuesPage.searchIssueByName(newIssue.title)
|
||||
await issuesPage.openIssueByName(newIssue.title)
|
||||
|
||||
@ -52,8 +58,8 @@ test.describe('Collaborative test for issue', () => {
|
||||
await userSecondPage.evaluate(() => {
|
||||
localStorage.setItem('platform.activity.threshold', '0')
|
||||
})
|
||||
await issuesPageSecond.linkSidebarAll().click()
|
||||
await issuesPageSecond.modelSelectorAll().click()
|
||||
await issuesPageSecond.clickLinkSidebarAll()
|
||||
await issuesPageSecond.clickModelSelectorAll()
|
||||
await issuesPageSecond.searchIssueByName(newIssue.title)
|
||||
await issuesPageSecond.openIssueByName(newIssue.title)
|
||||
|
||||
@ -84,25 +90,22 @@ test.describe('Collaborative test for issue', () => {
|
||||
}
|
||||
|
||||
const issuesPageSecond = new IssuesPage(userSecondPage)
|
||||
await issuesPageSecond.linkSidebarAll().click()
|
||||
await issuesPageSecond.modelSelectorAll().click()
|
||||
await issuesPageSecond.clickLinkSidebarAll()
|
||||
await issuesPageSecond.clickModelSelectorAll()
|
||||
|
||||
// change status
|
||||
const issuesPage = new IssuesPage(page)
|
||||
await issuesPage.linkSidebarAll().click()
|
||||
await issuesPage.modelSelectorBacklog().click()
|
||||
await issuesPage.clickLinkSidebarAll()
|
||||
await issuesPage.clickMdelSelectorBacklog()
|
||||
await issuesPage.searchIssueByName(issue.title)
|
||||
await issuesPage.openIssueByName(issue.title)
|
||||
|
||||
const issuesDetailsPage = new IssuesDetailsPage(page)
|
||||
await issuesDetailsPage.editIssue({ status: 'In Progress' })
|
||||
|
||||
// check by another user
|
||||
await issuesPageSecond.modelSelectorBacklog().click()
|
||||
await issuesPageSecond.clickMdelSelectorBacklog()
|
||||
// not active for another user
|
||||
await issuesPageSecond.checkIssueNotExist(issue.title)
|
||||
|
||||
await issuesPageSecond.modelSelectorActive().click()
|
||||
await issuesPageSecond.clickModalSelectorActive()
|
||||
await issuesPageSecond.searchIssueByName(issue.title)
|
||||
await issuesPageSecond.openIssueByName(issue.title)
|
||||
|
||||
@ -134,13 +137,11 @@ test.describe('Collaborative test for issue', () => {
|
||||
|
||||
await test.step(`user1. change assignee to ${newAssignee}`, async () => {
|
||||
await (await page.goto(`${PlatformURI}/workbench/sanity-ws/tracker/`))?.finished()
|
||||
const issuesPage = new IssuesPage(page)
|
||||
await issuesPage.linkSidebarAll().click()
|
||||
await issuesPage.modelSelectorBacklog().click()
|
||||
await issuesPage.clickLinkSidebarAll()
|
||||
await issuesPage.clickMdelSelectorBacklog()
|
||||
await issuesPage.searchIssueByName(issue.title)
|
||||
await issuesPage.openIssueByName(issue.title)
|
||||
|
||||
const issuesDetailsPage = new IssuesDetailsPage(page)
|
||||
await issuesDetailsPage.editIssue({ assignee: newAssignee })
|
||||
})
|
||||
|
||||
@ -158,8 +159,8 @@ test.describe('Collaborative test for issue', () => {
|
||||
|
||||
await test.step('user2. check issue assignee', async () => {
|
||||
const issuesPageSecond = new IssuesPage(userSecondPage)
|
||||
await issuesPageSecond.linkSidebarMyIssue().click()
|
||||
await issuesPageSecond.modelSelectorBacklog().click()
|
||||
await issuesPageSecond.clickLinkSidebarMyIssue()
|
||||
await issuesPageSecond.clickMdelSelectorBacklog()
|
||||
|
||||
await issuesPageSecond.searchIssueByName(issue.title)
|
||||
await issuesPageSecond.openIssueByName(issue.title)
|
||||
|
@ -10,26 +10,28 @@ test.use({
|
||||
})
|
||||
// ADDED NEW
|
||||
test.describe('Documents tests', () => {
|
||||
let leftSideMenuPage: LeftSideMenuPage
|
||||
let documentsPage: DocumentsPage
|
||||
let documentContentPage: DocumentContentPage
|
||||
|
||||
test.beforeEach(async ({ page }) => {
|
||||
leftSideMenuPage = new LeftSideMenuPage(page)
|
||||
documentsPage = new DocumentsPage(page)
|
||||
documentContentPage = new DocumentContentPage(page)
|
||||
|
||||
await (await page.goto(`${PlatformURI}/workbench/sanity-ws`))?.finished()
|
||||
})
|
||||
|
||||
test('Create a document', async ({ page }) => {
|
||||
test('Create a document', async () => {
|
||||
const newDocument: NewDocument = {
|
||||
title: `New Document-${generateId()}`,
|
||||
space: 'Default'
|
||||
}
|
||||
|
||||
const leftSideMenuPage = new LeftSideMenuPage(page)
|
||||
await leftSideMenuPage.clickDocuments()
|
||||
|
||||
const documentsPage = new DocumentsPage(page)
|
||||
await documentsPage.clickOnButtonCreateDocument()
|
||||
|
||||
await documentsPage.createDocument(newDocument)
|
||||
await documentsPage.openDocument(newDocument.title)
|
||||
|
||||
const documentContentPage = new DocumentContentPage(page)
|
||||
await documentContentPage.checkDocumentTitle(newDocument.title)
|
||||
})
|
||||
|
||||
@ -41,25 +43,15 @@ test.describe('Documents tests', () => {
|
||||
title: `Edit Document Title-${generateId()}`,
|
||||
space: 'Default'
|
||||
}
|
||||
|
||||
const leftSideMenuPage = new LeftSideMenuPage(page)
|
||||
await leftSideMenuPage.clickDocuments()
|
||||
|
||||
const documentsPage = new DocumentsPage(page)
|
||||
await documentsPage.clickOnButtonCreateDocument()
|
||||
|
||||
await documentsPage.createDocument(editDocument)
|
||||
await documentsPage.openDocument(editDocument.title)
|
||||
|
||||
const documentContentPage = new DocumentContentPage(page)
|
||||
await documentContentPage.checkDocumentTitle(editDocument.title)
|
||||
|
||||
let content = await documentContentPage.addContentToTheNewLine(contentOne)
|
||||
await documentContentPage.checkContent(content)
|
||||
|
||||
content = await documentContentPage.addContentToTheNewLine(contentTwo)
|
||||
await documentContentPage.checkContent(content)
|
||||
|
||||
await documentContentPage.updateDocumentTitle(newDocumentTitle)
|
||||
await documentContentPage.checkDocumentTitle(newDocumentTitle)
|
||||
})
|
||||
@ -76,27 +68,18 @@ test.describe('Documents tests', () => {
|
||||
private: false
|
||||
}
|
||||
|
||||
const leftSideMenuPage = new LeftSideMenuPage(page)
|
||||
await leftSideMenuPage.clickDocuments()
|
||||
|
||||
const documentsPage = new DocumentsPage(page)
|
||||
await documentsPage.checkTeamspaceNotExist(moveTeamspace.title)
|
||||
await documentsPage.createNewTeamspace(moveTeamspace)
|
||||
await documentsPage.checkTeamspaceExist(moveTeamspace.title)
|
||||
await documentsPage.clickOnButtonCreateDocument()
|
||||
|
||||
await documentsPage.createDocument(moveDocument)
|
||||
await documentsPage.openDocument(moveDocument.title)
|
||||
|
||||
const documentContentPage = new DocumentContentPage(page)
|
||||
await documentContentPage.checkDocumentTitle(moveDocument.title)
|
||||
|
||||
const content = await documentContentPage.addContentToTheNewLine(contentFirst)
|
||||
await documentContentPage.checkContent(content)
|
||||
|
||||
await documentsPage.moreActionsOnDocument(moveDocument.title, 'Move')
|
||||
await documentsPage.fillMoveDocumentForm(moveTeamspace.title)
|
||||
|
||||
await documentsPage.openTeamspace(moveTeamspace.title)
|
||||
await documentsPage.openDocumentForTeamspace(moveTeamspace.title, moveDocument.title)
|
||||
await documentContentPage.checkDocumentTitle(moveDocument.title)
|
||||
@ -111,20 +94,13 @@ test.describe('Documents tests', () => {
|
||||
space: 'Default'
|
||||
}
|
||||
|
||||
const leftSideMenuPage = new LeftSideMenuPage(page)
|
||||
await leftSideMenuPage.clickDocuments()
|
||||
|
||||
const documentsPage = new DocumentsPage(page)
|
||||
await documentsPage.openTeamspace(colDocument.space)
|
||||
await documentsPage.clickOnButtonCreateDocument()
|
||||
|
||||
await documentsPage.createDocument(colDocument)
|
||||
await documentsPage.openDocument(colDocument.title)
|
||||
|
||||
await test.step('User1. Add content first user', async () => {
|
||||
const documentContentPage = new DocumentContentPage(page)
|
||||
await documentContentPage.checkDocumentTitle(colDocument.title)
|
||||
|
||||
content = await documentContentPage.addContentToTheNewLine(contentFirstUser)
|
||||
await documentContentPage.checkContent(content)
|
||||
})
|
||||
@ -136,15 +112,12 @@ test.describe('Documents tests', () => {
|
||||
|
||||
const leftSideMenuPageSecond = new LeftSideMenuPage(userSecondPage)
|
||||
await leftSideMenuPageSecond.clickDocuments()
|
||||
|
||||
const documentsPageSecond = new DocumentsPage(userSecondPage)
|
||||
await documentsPageSecond.openTeamspace(colDocument.space)
|
||||
await documentsPageSecond.openDocument(colDocument.title)
|
||||
|
||||
const documentContentPageSecond = new DocumentContentPage(page)
|
||||
await documentContentPageSecond.checkDocumentTitle(colDocument.title)
|
||||
await documentContentPageSecond.checkContent(content)
|
||||
|
||||
content = await documentContentPageSecond.addContentToTheNewLine(contentSecondUser)
|
||||
await documentContentPageSecond.checkContent(content)
|
||||
} finally {
|
||||
@ -154,7 +127,6 @@ test.describe('Documents tests', () => {
|
||||
})
|
||||
|
||||
await test.step('User1. Check final content', async () => {
|
||||
const documentContentPage = new DocumentContentPage(page)
|
||||
await documentContentPage.checkDocumentTitle(colDocument.title)
|
||||
await documentContentPage.checkContent(content)
|
||||
})
|
||||
@ -167,22 +139,14 @@ test.describe('Documents tests', () => {
|
||||
space: 'Default'
|
||||
}
|
||||
|
||||
const leftSideMenuPage = new LeftSideMenuPage(page)
|
||||
await leftSideMenuPage.clickDocuments()
|
||||
|
||||
const documentsPage = new DocumentsPage(page)
|
||||
await documentsPage.clickOnButtonCreateDocument()
|
||||
|
||||
await documentsPage.createDocument(linkDocument)
|
||||
await documentsPage.openDocument(linkDocument.title)
|
||||
|
||||
const documentContentPage = new DocumentContentPage(page)
|
||||
await documentContentPage.checkDocumentTitle(linkDocument.title)
|
||||
|
||||
await documentContentPage.addRandomLines(5)
|
||||
await documentContentPage.addContentToTheNewLine(contentLink)
|
||||
await documentContentPage.addRandomLines(5)
|
||||
|
||||
await documentContentPage.addLinkToText(contentLink, 'test/link/123456')
|
||||
await documentContentPage.checkLinkInTheText(contentLink, 'test/link/123456')
|
||||
})
|
||||
|
@ -9,7 +9,12 @@ test.use({
|
||||
})
|
||||
|
||||
test.describe('Teamspace tests', () => {
|
||||
let leftSideMenuPage: LeftSideMenuPage
|
||||
let documentsPage: DocumentsPage
|
||||
|
||||
test.beforeEach(async ({ page }) => {
|
||||
leftSideMenuPage = new LeftSideMenuPage(page)
|
||||
documentsPage = new DocumentsPage(page)
|
||||
await (await page.goto(`${PlatformURI}/workbench/sanity-ws`))?.finished()
|
||||
})
|
||||
|
||||
@ -20,10 +25,7 @@ test.describe('Teamspace tests', () => {
|
||||
private: false
|
||||
}
|
||||
|
||||
const leftSideMenuPage = new LeftSideMenuPage(page)
|
||||
await leftSideMenuPage.clickDocuments()
|
||||
|
||||
const documentsPage = new DocumentsPage(page)
|
||||
await documentsPage.checkTeamspaceNotExist(newTeamspace.title)
|
||||
await documentsPage.createNewTeamspace(newTeamspace)
|
||||
await documentsPage.checkTeamspaceExist(newTeamspace.title)
|
||||
@ -34,15 +36,10 @@ test.describe('Teamspace tests', () => {
|
||||
title: 'Teamspace for archive'
|
||||
}
|
||||
|
||||
const leftSideMenuPage = new LeftSideMenuPage(page)
|
||||
await leftSideMenuPage.clickDocuments()
|
||||
|
||||
const documentsPage = new DocumentsPage(page)
|
||||
await documentsPage.checkTeamspaceExist(archiveTeamspace.title)
|
||||
|
||||
await documentsPage.moreActionTeamspace(archiveTeamspace.title, 'Archive')
|
||||
await documentsPage.pressYesForPopup(page)
|
||||
|
||||
await documentsPage.checkTeamspaceNotExist(archiveTeamspace.title)
|
||||
})
|
||||
|
||||
@ -58,18 +55,12 @@ test.describe('Teamspace tests', () => {
|
||||
private: false
|
||||
}
|
||||
|
||||
const leftSideMenuPage = new LeftSideMenuPage(page)
|
||||
await leftSideMenuPage.clickDocuments()
|
||||
|
||||
const documentsPage = new DocumentsPage(page)
|
||||
await documentsPage.checkTeamspaceNotExist(editTeamspace.title)
|
||||
await documentsPage.createNewTeamspace(editTeamspace)
|
||||
await documentsPage.checkTeamspaceExist(editTeamspace.title)
|
||||
|
||||
await documentsPage.moreActionTeamspace(editTeamspace.title, 'Edit teamspace')
|
||||
|
||||
await documentsPage.editTeamspace(updateEditTeamspace)
|
||||
|
||||
await documentsPage.moreActionTeamspace(updateEditTeamspace.title, 'Edit teamspace')
|
||||
await documentsPage.checkTeamspace(updateEditTeamspace)
|
||||
})
|
||||
|
@ -17,6 +17,8 @@ export class DocumentContentPage extends CommonPage {
|
||||
this.page.locator('form[id="text-editor:string:Link"] button[type="submit"]')
|
||||
|
||||
readonly buttonMoreActions = (): Locator => this.page.locator('div.popupPanel-title button#btn-doc-title-open-more')
|
||||
readonly popupPanel = (): Locator => this.page.locator('div.popupPanel-title')
|
||||
readonly popupPanelH1 = (): Locator => this.page.locator('div.antiPopup > h1')
|
||||
|
||||
async checkDocumentTitle (title: string): Promise<void> {
|
||||
await expect(this.buttonDocumentTitle()).toHaveValue(title)
|
||||
@ -64,4 +66,8 @@ export class DocumentContentPage extends CommonPage {
|
||||
await this.buttonMoreActions().click()
|
||||
await this.selectFromDropdown(this.page, action)
|
||||
}
|
||||
|
||||
async checkIfPopupHasText (text: string): Promise<void> {
|
||||
await expect(this.popupPanelH1()).toHaveText(text)
|
||||
}
|
||||
}
|
||||
|
@ -25,6 +25,11 @@ export class ApplicationsPage extends CommonRecruitingPage {
|
||||
readonly textTableFirstCell = (): Locator => this.page.locator('div[class$="firstCell"]')
|
||||
readonly buttonTypeSelector = (): Locator => this.page.locator('div[class*="header"] div[class*="title"] button')
|
||||
|
||||
// ACTIONS
|
||||
async clickButtonTabCreated (): Promise<void> {
|
||||
await this.buttonTabCreated().click()
|
||||
}
|
||||
|
||||
async createNewApplication (data: NewApplication): Promise<void> {
|
||||
await this.buttonCreateApplication().click()
|
||||
await this.selectTalent(data.talentsName ?? 'first')
|
||||
|
@ -47,12 +47,64 @@ export class CommonRecruitingPage extends CalendarPage {
|
||||
readonly newReviewTitle = (): Locator =>
|
||||
this.page.locator('div.popup form[id="recruit:string:CreateReviewParams"] input[placeholder="Title"]')
|
||||
|
||||
readonly title = (): Locator => this.page.locator('[placeholder="Title"]')
|
||||
|
||||
readonly newReviewDescription = (): Locator =>
|
||||
this.page.locator('div.popup form[id="recruit:string:CreateReviewParams"] div.text-editor-view')
|
||||
|
||||
readonly submitNewReview = (): Locator =>
|
||||
this.page.locator('div.popup form[id="recruit:string:CreateReviewParams"] button[type="submit"]')
|
||||
|
||||
readonly appleseedJohnButton = (): Locator => this.page.locator('button:has-text("Appleseed John")')
|
||||
readonly chenRosamundButton = (): Locator => this.page.locator('button:has-text("Chen Rosamund")')
|
||||
readonly searchInput = (): Locator => this.page.locator('[placeholder="Search\\.\\.\\."]')
|
||||
readonly talentButton = (): Locator => this.page.locator('form button:has-text("Talent")')
|
||||
readonly createButton = (): Locator => this.page.locator('button:has-text("Create")')
|
||||
readonly reviewItemLink = (reviewId: string): Locator => this.page.locator(`tr:has-text('${reviewId}') td a`)
|
||||
readonly twoMembersButton = (): Locator => this.page.locator('button:has-text("2 members")')
|
||||
readonly chenRosamundPopupButton = (): Locator => this.page.locator('.popup button:has-text("Chen Rosamund")')
|
||||
|
||||
async clickOnTitle (): Promise<void> {
|
||||
await this.title().click()
|
||||
}
|
||||
|
||||
async fillTitle (title: string): Promise<void> {
|
||||
await this.title().fill(title)
|
||||
}
|
||||
|
||||
async clickAppleseedJohn (): Promise<void> {
|
||||
await this.appleseedJohnButton().click()
|
||||
}
|
||||
|
||||
async clickChenRosamund (): Promise<void> {
|
||||
await this.chenRosamundButton().click()
|
||||
}
|
||||
|
||||
async pressEscapeInSearch (): Promise<void> {
|
||||
await this.searchInput().press('Escape')
|
||||
}
|
||||
|
||||
async clickTalent (): Promise<void> {
|
||||
await this.talentButton().click()
|
||||
}
|
||||
|
||||
async createApplication (): Promise<void> {
|
||||
await this.createButton().click()
|
||||
await this.page.waitForSelector('form.antiCard', { state: 'detached' })
|
||||
}
|
||||
|
||||
async selectReviewItem (reviewId: string): Promise<void> {
|
||||
await this.reviewItemLink(reviewId).first().click()
|
||||
}
|
||||
|
||||
async clickTwoMembers (): Promise<void> {
|
||||
await this.twoMembersButton().click()
|
||||
}
|
||||
|
||||
async clickChenRosamundInPopup (): Promise<void> {
|
||||
await this.chenRosamundPopupButton().click()
|
||||
}
|
||||
|
||||
async addComment (comment: string): Promise<void> {
|
||||
await this.inputComment().fill(comment)
|
||||
await this.buttonSendComment().click()
|
||||
|
@ -9,6 +9,9 @@ export class RecruitingPage {
|
||||
|
||||
readonly recruitApplication = (): Locator => this.page.locator('[id="app-recruit\\:string\\:RecruitApplication"]')
|
||||
readonly talentsNavElement = (): Locator => this.page.locator('text=Talents')
|
||||
readonly reviews = (): Locator => this.page.locator('text=Reviews')
|
||||
readonly reviewButton = (): Locator => this.page.locator('button:has-text("Review")')
|
||||
|
||||
readonly frontendEngineerOption = (): Locator => this.page.locator('td:has-text("Frontend Engineer")')
|
||||
readonly searchOrRunCommandInput = (): Locator =>
|
||||
this.page.locator('[placeholder="Search\\ or\\ run\\ a\\ command\\.\\.\\."]')
|
||||
@ -29,6 +32,14 @@ export class RecruitingPage {
|
||||
await this.recruitApplication().click()
|
||||
}
|
||||
|
||||
async clickOnReviews (): Promise<void> {
|
||||
await this.reviews().click()
|
||||
}
|
||||
|
||||
async clickOnReviewButton (): Promise<void> {
|
||||
await this.reviewButton().click()
|
||||
}
|
||||
|
||||
async clickTalentsNavElement (): Promise<void> {
|
||||
await this.talentsNavElement().click()
|
||||
}
|
||||
|
@ -25,7 +25,8 @@ export class TalentDetailsPage extends CommonRecruitingPage {
|
||||
readonly buttonPopupMergeContacts = (): Locator =>
|
||||
this.page.locator('form[id="contact:string:MergePersons"] button > span', { hasText: 'Merge contacts' })
|
||||
|
||||
readonly textAttachmentName = (): Locator => this.page.locator('div.name a') // Assuming this locator is also used appropriately
|
||||
readonly textAttachmentName = (): Locator => this.page.locator('div.name a')
|
||||
readonly titleAndSourceTalent = (title: string): Locator => this.page.locator('button > span', { hasText: title })
|
||||
|
||||
async addSkill (skillTag: string, skillDescription: string): Promise<void> {
|
||||
await this.buttonAddSkill().click()
|
||||
@ -90,4 +91,10 @@ export class TalentDetailsPage extends CommonRecruitingPage {
|
||||
await this.page.waitForSelector(`div[class*="header"] div.name:nth-child(2) :has-text("${applicationFirstName}")`)
|
||||
}
|
||||
}
|
||||
|
||||
async checkMergeContacts (talentName: string, title: string, source: string): Promise<void> {
|
||||
await expect(this.page.locator('div.location input')).toHaveValue(talentName)
|
||||
await expect(this.titleAndSourceTalent(title)).toBeVisible()
|
||||
await expect(this.titleAndSourceTalent(source)).toBeVisible()
|
||||
}
|
||||
}
|
||||
|
@ -24,6 +24,147 @@ export class TalentsPage extends CommonRecruitingPage {
|
||||
this.page.locator('form[id="recruit:string:VacancyMatching"] table > tbody > tr > td:nth-child(2)')
|
||||
|
||||
readonly inputSearchTalent = (): Locator => this.page.locator('div[class*="header"] input')
|
||||
readonly andreyTalet = (): Locator => this.page.locator('text=P. Andrey')
|
||||
|
||||
readonly addApplicationButton = (): Locator => this.page.locator('button[id="appls.add"]')
|
||||
readonly spaceSelector = (): Locator => this.page.locator('[id="space.selector"]')
|
||||
readonly searchInput = (): Locator => this.page.locator('[placeholder="Search..."]')
|
||||
readonly hrInterviewButton = (): Locator =>
|
||||
this.page.locator('[id="recruit:string:CreateApplication"] button:has-text("HR Interview")')
|
||||
|
||||
readonly createButton = (): Locator => this.page.locator('button:has-text("Create")')
|
||||
readonly assignedRecruiterButton = (): Locator => this.page.locator('button:has-text("Assigned recruiter")')
|
||||
readonly chenRosamundButton = (): Locator => this.page.locator('button:has-text("Chen Rosamund")')
|
||||
readonly vacancyApplicatio = (vacancyId: string): Locator =>
|
||||
this.page.locator(`tr:has-text("${vacancyId}") >> text=APP-`)
|
||||
|
||||
readonly recruitApplicationButton = (): Locator =>
|
||||
this.page.locator('[id="app-recruit\\:string\\:RecruitApplication"]')
|
||||
|
||||
readonly talentsTab = (): Locator => this.page.locator('text=Talents')
|
||||
readonly newTalentButton = (): Locator => this.page.locator('button:has-text("New Talent")')
|
||||
readonly addSocialLinksButton = (): Locator => this.page.locator('[id="presentation\\:string\\:AddSocialLinks"]')
|
||||
readonly emailSelectorButton = (): Locator => this.page.locator('.antiPopup').locator('text=Email')
|
||||
readonly confirmEmailButton = (): Locator => this.page.locator('#channel-ok.antiButton')
|
||||
readonly createTalentButton = (): Locator => this.page.locator('.antiCard button:has-text("Create")')
|
||||
readonly popupPanel = (): Locator => this.page.locator('.popupPanel')
|
||||
|
||||
async clickAddApplication (): Promise<void> {
|
||||
await this.addApplicationButton().click()
|
||||
}
|
||||
|
||||
async selectSpace (): Promise<void> {
|
||||
await this.spaceSelector().click()
|
||||
}
|
||||
|
||||
async searchAndSelectVacancy (vacancyId: string): Promise<void> {
|
||||
await this.searchInput().fill(vacancyId)
|
||||
await this.page.click(`button:has-text("${vacancyId}")`)
|
||||
await this.page.waitForSelector('space.selector', { state: 'detached' })
|
||||
}
|
||||
|
||||
async waitForHRInterviewVisible (): Promise<void> {
|
||||
await this.hrInterviewButton().isVisible()
|
||||
}
|
||||
|
||||
async waitForTimeout (): Promise<void> {
|
||||
await this.page.waitForTimeout(100)
|
||||
}
|
||||
|
||||
async createApplication (): Promise<void> {
|
||||
await this.createButton().click()
|
||||
await this.page.waitForSelector('form.antiCard', { state: 'detached' })
|
||||
}
|
||||
|
||||
async clickVacancyApplication (vacancyId: string): Promise<void> {
|
||||
await this.vacancyApplicatio(vacancyId).click()
|
||||
}
|
||||
|
||||
async assignRecruiter (): Promise<void> {
|
||||
await this.assignedRecruiterButton().click()
|
||||
}
|
||||
|
||||
async selectChenRosamund (): Promise<void> {
|
||||
await this.chenRosamundButton().click()
|
||||
}
|
||||
|
||||
async clickOnAndreyTalet (): Promise<void> {
|
||||
await this.andreyTalet().click()
|
||||
}
|
||||
|
||||
async clickRecruitApplication (): Promise<void> {
|
||||
await this.recruitApplicationButton().click()
|
||||
}
|
||||
|
||||
async clickTalentsTab (): Promise<void> {
|
||||
await this.talentsTab().click()
|
||||
}
|
||||
|
||||
async clickNewTalent (): Promise<void> {
|
||||
await this.newTalentButton().click()
|
||||
}
|
||||
|
||||
async enterFirstName (firstName: string): Promise<void> {
|
||||
const input = this.page.locator('[placeholder="First name"]')
|
||||
await input.click()
|
||||
await input.fill(firstName)
|
||||
}
|
||||
|
||||
async enterLastName (lastName: string): Promise<void> {
|
||||
const input = this.page.locator('[placeholder="Last name"]')
|
||||
await input.click()
|
||||
await input.fill(lastName)
|
||||
}
|
||||
|
||||
async enterTitle (title: string = 'Super Candidate'): Promise<void> {
|
||||
const input = this.page.locator('[placeholder="Title"]')
|
||||
await input.click()
|
||||
await input.fill(title)
|
||||
}
|
||||
|
||||
async enterLocation (location: string): Promise<void> {
|
||||
const input = this.page.locator('[placeholder="Location"]')
|
||||
await input.click()
|
||||
await input.fill(location)
|
||||
}
|
||||
|
||||
async addSocialLinks (): Promise<void> {
|
||||
await this.addSocialLinksButton().click()
|
||||
}
|
||||
|
||||
async selectEmail (): Promise<void> {
|
||||
await this.emailSelectorButton().click()
|
||||
}
|
||||
|
||||
async enterEmail (email: string): Promise<void> {
|
||||
const input = this.page.locator('[placeholder="john\\.appleseed@apple\\.com"]')
|
||||
await input.fill(email)
|
||||
}
|
||||
|
||||
async confirmEmail (): Promise<void> {
|
||||
await this.confirmEmailButton().click()
|
||||
}
|
||||
|
||||
async createTalent (): Promise<void> {
|
||||
await this.createTalentButton().click()
|
||||
await this.page.waitForSelector('form.antiCard', { state: 'detached' })
|
||||
}
|
||||
|
||||
async verifyTalentDetails (firstName: string, lastName: string, location: string): Promise<void> {
|
||||
const fullName = `${lastName} ${firstName}`
|
||||
await this.page.click(`text="${fullName}"`)
|
||||
await expect(this.page.locator(`text=${firstName}`).first()).toBeVisible()
|
||||
await expect(this.page.locator(`text=${lastName}`).first()).toBeVisible()
|
||||
await expect(this.page.locator(`text=${location}`).first()).toBeVisible()
|
||||
}
|
||||
|
||||
async verifyEmailInPopup (email: string): Promise<void> {
|
||||
const emailLocator = this.popupPanel().locator('[id="gmail\\:string\\:Email"]')
|
||||
await emailLocator.scrollIntoViewIfNeeded()
|
||||
await emailLocator.click()
|
||||
const actualEmail = await this.page.locator('.cover-channel >> input').inputValue()
|
||||
expect(actualEmail).toEqual(email)
|
||||
}
|
||||
|
||||
async createNewTalent (): Promise<TalentName> {
|
||||
const talentName: TalentName = {
|
||||
|
@ -37,6 +37,87 @@ export class VacanciesPage extends CommonRecruitingPage {
|
||||
readonly vacancyByName = (vacancyName: string): Locator =>
|
||||
this.page.locator('tr', { hasText: vacancyName }).locator('div[class$="firstCell"]')
|
||||
|
||||
readonly vacancy = (): Locator => this.page.locator('has-text("Vacancy")')
|
||||
readonly vacancyButton = (): Locator => this.page.locator('button:has-text("Vacancy")')
|
||||
readonly softwareEngineerInput = (): Locator => this.page.locator('[placeholder="Software\\ Engineer"]')
|
||||
readonly vacanciesCreateButton = (): Locator => this.page.locator('button:has-text("Create")')
|
||||
readonly recruitApplicationButton = (): Locator =>
|
||||
this.page.locator('[id="app-recruit\\:string\\:RecruitApplication"]')
|
||||
|
||||
readonly vacanciesMenuLink = (): Locator => this.page.locator('text=Vacancies')
|
||||
readonly createVacancyButton = (): Locator => this.page.locator('button:has-text("Vacancy")')
|
||||
readonly vacancyInputField = (): Locator => this.page.locator('form [placeholder="Software\\ Engineer"]')
|
||||
readonly createButton = (): Locator => this.page.locator('form button:has-text("Create")')
|
||||
readonly vacancyRow = (vacancyId: string): Locator =>
|
||||
this.page.locator(`tr:has-text("${vacancyId}") > td:nth-child(3) >> .sm-tool-icon`)
|
||||
|
||||
readonly applicationButton = (): Locator => this.page.locator('button:has-text("Application")')
|
||||
readonly talentSelector = (): Locator =>
|
||||
this.page.locator('form[id="recruit:string:CreateApplication"] [id="vacancy.talant.selector"]')
|
||||
|
||||
readonly softwareEngineerLink = (): Locator => this.page.locator('text=Software Engineer')
|
||||
readonly applicationsTabHeader = (): Locator => this.page.locator('.antiSection-header >> text=Applications')
|
||||
readonly secondTab = (): Locator => this.page.getByText('Done states')
|
||||
readonly applicantMarina = (): Locator => this.page.locator('text=M. Marina').first()
|
||||
readonly applicantJohn = (): Locator => this.page.locator('text=Multiseed John').first()
|
||||
readonly applicantAlex = (): Locator => this.page.locator('text=P. Alex').first()
|
||||
|
||||
async clickOnVacancy (): Promise<void> {
|
||||
await this.vacanciesMenuLink().click()
|
||||
}
|
||||
|
||||
async clickOnVacancyButton (): Promise<void> {
|
||||
await this.vacancyButton().click()
|
||||
}
|
||||
|
||||
async fillSoftwareEngineerInput (vacancyId: string): Promise<void> {
|
||||
await this.softwareEngineerInput().fill(vacancyId)
|
||||
}
|
||||
|
||||
async clickOnVacanciesCreateButton (): Promise<void> {
|
||||
await this.vacanciesCreateButton().click()
|
||||
}
|
||||
|
||||
async createVacancy (vacancyId: string): Promise<void> {
|
||||
await this.recruitApplicationButton().click()
|
||||
await this.vacanciesMenuLink().click()
|
||||
await this.createVacancyButton().click()
|
||||
await this.vacancyInputField().fill(vacancyId)
|
||||
await this.createButton().click()
|
||||
await this.page.waitForSelector('form.antiCard', { state: 'detached' })
|
||||
}
|
||||
|
||||
async modifyVacancy (vacancyId: string): Promise<void> {
|
||||
await this.vacancyRow(vacancyId).click()
|
||||
}
|
||||
|
||||
async createApplicationVacencies (assigneeName: string): Promise<void> {
|
||||
await this.applicationButton().click()
|
||||
await this.talentSelector().click()
|
||||
await this.selectAssignee(this.page, assigneeName)
|
||||
await this.createButton().click()
|
||||
await this.page.waitForSelector('form.antiCard', { state: 'detached' })
|
||||
await expect(this.page.locator('text=APP-').first()).toBeVisible()
|
||||
await expect(this.page.locator(`text=P. ${assigneeName}`).first()).toBeVisible()
|
||||
}
|
||||
|
||||
async navigateToSoftwareEngineerVacancies (): Promise<void> {
|
||||
await this.recruitApplicationButton().click()
|
||||
await this.vacanciesMenuLink().click()
|
||||
await this.softwareEngineerLink().click()
|
||||
}
|
||||
|
||||
async selectApplicationsTab (): Promise<void> {
|
||||
await this.applicationsTabHeader().click()
|
||||
await this.secondTab().click()
|
||||
}
|
||||
|
||||
async verifyApplicantsVisibility (): Promise<void> {
|
||||
await expect(this.applicantMarina()).toBeVisible()
|
||||
await expect(this.applicantJohn()).toBeVisible()
|
||||
await expect(this.applicantAlex()).toBeVisible()
|
||||
}
|
||||
|
||||
async createNewVacancy ({ title, description, location }: NewVacancy): Promise<void> {
|
||||
await this.buttonCreateNewVacancy().click()
|
||||
|
||||
|
@ -48,4 +48,16 @@ export class VacancyDetailsPage extends CommonRecruitingPage {
|
||||
await this.buttonInputDueDate().click()
|
||||
await this.clickButtonDatePopupToday()
|
||||
}
|
||||
|
||||
async fillInputDescription (description: string): Promise<void> {
|
||||
await this.inputDescription().fill(description)
|
||||
}
|
||||
|
||||
async checkIfVacancyInputComentIsVisible (): Promise<void> {
|
||||
await expect(this.inputComment()).toBeVisible()
|
||||
}
|
||||
|
||||
async checkIfInputDescriptionHasText (description: string): Promise<void> {
|
||||
await expect(this.inputDescription()).toHaveText(description)
|
||||
}
|
||||
}
|
||||
|
@ -92,6 +92,28 @@ export class IssuesPage extends CommonTrackerPage {
|
||||
commentCountLocator = (issueName: string): Locator =>
|
||||
this.commonAncestorForOperations(issueName).locator('button > div[slot="content"]').first()
|
||||
|
||||
// ACTIONS
|
||||
|
||||
async clickLinkSidebarAll (): Promise<void> {
|
||||
await this.linkSidebarAll().click()
|
||||
}
|
||||
|
||||
async clickModelSelectorAll (): Promise<void> {
|
||||
await this.modelSelectorAll().click()
|
||||
}
|
||||
|
||||
async clickMdelSelectorBacklog (): Promise<void> {
|
||||
await this.modelSelectorBacklog().click()
|
||||
}
|
||||
|
||||
async clickModalSelectorActive (): Promise<void> {
|
||||
await this.modelSelectorActive().click()
|
||||
}
|
||||
|
||||
async clickLinkSidebarMyIssue (): Promise<void> {
|
||||
await this.linkSidebarMyIssue().click()
|
||||
}
|
||||
|
||||
async createNewIssue (data: NewIssue, closeNotification: boolean = false): Promise<void> {
|
||||
await this.buttonCreateNewIssue().click()
|
||||
await this.fillNewIssueForm(data)
|
||||
|
@ -5,164 +5,131 @@ import { ApplicationsPage } from '../model/recruiting/applications-page'
|
||||
import { ApplicationsDetailsPage } from '../model/recruiting/applications-details-page'
|
||||
import { VacancyDetailsPage } from '../model/recruiting/vacancy-details-page'
|
||||
import { VacanciesPage } from '../model/recruiting/vacancies-page'
|
||||
import { RecruitingPage } from '../model/recruiting/recruiting-page'
|
||||
import { TalentsPage } from '../model/recruiting/talents-page'
|
||||
|
||||
test.use({
|
||||
storageState: PlatformSetting
|
||||
})
|
||||
|
||||
test.describe('Application tests', () => {
|
||||
let recrutingPage: RecruitingPage
|
||||
let vacanciesPage: VacanciesPage
|
||||
let vacancyDetailsPage: VacancyDetailsPage
|
||||
let navigationMenuPage: NavigationMenuPage
|
||||
let talentsPage: TalentsPage
|
||||
let applicationsDetailsPage: ApplicationsDetailsPage
|
||||
let applicationsPage: ApplicationsPage
|
||||
|
||||
test.beforeEach(async ({ page }) => {
|
||||
recrutingPage = new RecruitingPage(page)
|
||||
vacanciesPage = new VacanciesPage(page)
|
||||
vacancyDetailsPage = new VacancyDetailsPage(page)
|
||||
navigationMenuPage = new NavigationMenuPage(page)
|
||||
talentsPage = new TalentsPage(page)
|
||||
applicationsDetailsPage = new ApplicationsDetailsPage(page)
|
||||
applicationsPage = new ApplicationsPage(page)
|
||||
|
||||
await (await page.goto(`${PlatformURI}/workbench/sanity-ws/recruit`))?.finished()
|
||||
})
|
||||
|
||||
test('create application', async ({ page }) => {
|
||||
await page.locator('[id="app-recruit\\:string\\:RecruitApplication"]').click()
|
||||
await page.waitForLoadState('load')
|
||||
|
||||
const vacancyId = 'My vacancy ' + generateId(4)
|
||||
|
||||
await page.locator('[id="app-recruit\\:string\\:RecruitApplication"]').click()
|
||||
|
||||
await page.locator('text=Vacancies').click()
|
||||
|
||||
await page.click('button:has-text("Vacancy")')
|
||||
await page.fill('[placeholder="Software\\ Engineer"]', vacancyId)
|
||||
await page.click('button:has-text("Create")')
|
||||
|
||||
const vacanciesPage = new VacanciesPage(page)
|
||||
await recrutingPage.clickRecruitApplication()
|
||||
await page.waitForLoadState('load')
|
||||
await vacanciesPage.clickOnVacancy()
|
||||
await vacanciesPage.clickOnVacancyButton()
|
||||
await vacanciesPage.fillSoftwareEngineerInput(vacancyId)
|
||||
await vacanciesPage.clickOnVacanciesCreateButton()
|
||||
await vacanciesPage.openVacancyByName(vacancyId)
|
||||
const vacancyDetailsPage = new VacancyDetailsPage(page)
|
||||
await expect(vacancyDetailsPage.inputComment()).toBeVisible()
|
||||
|
||||
const navigationMenuPage = new NavigationMenuPage(page)
|
||||
await vacancyDetailsPage.checkIfVacancyInputComentIsVisible()
|
||||
await navigationMenuPage.clickButtonTalents()
|
||||
|
||||
await page.click('text=P. Andrey')
|
||||
await talentsPage.clickOnAndreyTalet()
|
||||
|
||||
// Click on Add button
|
||||
// await page.click('.applications-container .flex-row-center .flex-center')
|
||||
await page.click('button[id="appls.add"]')
|
||||
|
||||
await page.click('[id = "space.selector"]')
|
||||
|
||||
await page.fill('[placeholder="Search..."]', vacancyId)
|
||||
await page.click(`button:has-text("${vacancyId}")`)
|
||||
|
||||
await page.waitForSelector('space.selector', { state: 'detached' })
|
||||
await expect(page.locator('[id="recruit:string:CreateApplication"] button:has-text("HR Interview")')).toBeVisible()
|
||||
|
||||
await talentsPage.clickAddApplication()
|
||||
await talentsPage.selectSpace()
|
||||
await talentsPage.searchAndSelectVacancy(vacancyId)
|
||||
await talentsPage.waitForHRInterviewVisible()
|
||||
// We need to be sure state is proper one, no other way to do it.
|
||||
await page.waitForTimeout(100)
|
||||
await talentsPage.createApplication()
|
||||
|
||||
await page.click('button:has-text("Create")')
|
||||
await page.waitForSelector('form.antiCard', { state: 'detached' })
|
||||
|
||||
await page.click(`tr:has-text("${vacancyId}") >> text=APP-`)
|
||||
await page.click('button:has-text("Assigned recruiter")')
|
||||
await page.click('button:has-text("Chen Rosamund")')
|
||||
await talentsPage.clickVacancyApplication(vacancyId)
|
||||
await talentsPage.assignRecruiter()
|
||||
await talentsPage.selectChenRosamund()
|
||||
// ADD ASSERTION HERE
|
||||
})
|
||||
|
||||
test.skip('Edit an Application', async ({ page }) => {
|
||||
const vacancyName = 'Edit an Application Vacancy ' + generateId(4)
|
||||
|
||||
const navigationMenuPage = new NavigationMenuPage(page)
|
||||
await navigationMenuPage.clickButtonVacancies()
|
||||
const vacanciesPage = new VacanciesPage(page)
|
||||
await vacanciesPage.createNewVacancy({
|
||||
title: vacancyName,
|
||||
description: 'Vacancy description from Edit a Vacancy test',
|
||||
location: 'Edit a Vacancy location'
|
||||
})
|
||||
|
||||
await navigationMenuPage.clickButtonApplications()
|
||||
const applicationsPage = new ApplicationsPage(page)
|
||||
const talentName = await applicationsPage.createNewApplicationWithNewTalent({
|
||||
vacancy: vacancyName,
|
||||
recruiterName: 'first'
|
||||
})
|
||||
await applicationsPage.openApplicationByTalentName(talentName)
|
||||
|
||||
const applicationsDetailsPage = new ApplicationsDetailsPage(page)
|
||||
await applicationsDetailsPage.addComment('Test Comment 123')
|
||||
await applicationsDetailsPage.checkCommentExist('Test Comment 123')
|
||||
|
||||
await applicationsDetailsPage.addAttachments('cat.jpeg')
|
||||
|
||||
await applicationsDetailsPage.addFirstReview('First Application Review', 'First Application review description')
|
||||
})
|
||||
|
||||
test('Change Done status', async ({ page }) => {
|
||||
const navigationMenuPage = new NavigationMenuPage(page)
|
||||
await navigationMenuPage.clickButtonApplications()
|
||||
|
||||
let applicationsPage = new ApplicationsPage(page)
|
||||
const talentName = await applicationsPage.createNewApplicationWithNewTalent({
|
||||
vacancy: 'first',
|
||||
recruiterName: 'first'
|
||||
})
|
||||
await applicationsPage.openApplicationByTalentName(talentName)
|
||||
|
||||
let applicationsDetailsPage = new ApplicationsDetailsPage(page)
|
||||
await applicationsDetailsPage.changeState('Lost')
|
||||
|
||||
await navigationMenuPage.clickButtonMyApplications()
|
||||
applicationsPage = new ApplicationsPage(page)
|
||||
await applicationsPage.buttonTabCreated().click()
|
||||
await applicationsPage.clickButtonTabCreated()
|
||||
await applicationsPage.checkApplicationState(talentName, 'Lost')
|
||||
await applicationsPage.openApplicationByTalentName(talentName)
|
||||
|
||||
applicationsDetailsPage = new ApplicationsDetailsPage(page)
|
||||
await applicationsDetailsPage.changeState('Won')
|
||||
|
||||
await navigationMenuPage.clickButtonMyApplications()
|
||||
applicationsPage = new ApplicationsPage(page)
|
||||
await applicationsPage.buttonTabCreated().click()
|
||||
await applicationsPage.clickButtonTabCreated()
|
||||
await applicationsPage.checkApplicationState(talentName, 'Won')
|
||||
})
|
||||
|
||||
test('Delete an Application', async ({ page }) => {
|
||||
const navigationMenuPage = new NavigationMenuPage(page)
|
||||
await navigationMenuPage.clickButtonApplications()
|
||||
|
||||
const applicationsPage = new ApplicationsPage(page)
|
||||
const talentName = await applicationsPage.createNewApplicationWithNewTalent({
|
||||
vacancy: 'first',
|
||||
recruiterName: 'first'
|
||||
})
|
||||
await applicationsPage.openApplicationByTalentName(talentName)
|
||||
|
||||
const applicationsDetailsPage = new ApplicationsDetailsPage(page)
|
||||
const applicationId = await applicationsDetailsPage.getApplicationId()
|
||||
|
||||
await applicationsDetailsPage.deleteEntity()
|
||||
expect(page.url()).toContain(applicationId)
|
||||
|
||||
await navigationMenuPage.clickButtonApplications()
|
||||
await applicationsPage.checkApplicationNotExist(applicationId)
|
||||
})
|
||||
|
||||
test('Change & Save all States', async ({ page }) => {
|
||||
const navigationMenuPage = new NavigationMenuPage(page)
|
||||
await navigationMenuPage.clickButtonApplications()
|
||||
|
||||
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.clickButtonApplications()
|
||||
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')
|
||||
})
|
||||
|
||||
@ -170,28 +137,21 @@ test.describe('Application tests', () => {
|
||||
const commentText = `Application comment should be stored after reload-${generateId()}`
|
||||
const vacancyName = 'Comment stored Vacancy ' + generateId(4)
|
||||
|
||||
const navigationMenuPage = new NavigationMenuPage(page)
|
||||
await navigationMenuPage.clickButtonVacancies()
|
||||
const vacanciesPage = new VacanciesPage(page)
|
||||
await vacanciesPage.createNewVacancy({
|
||||
title: vacancyName,
|
||||
description: 'Vacancy description from Edit a Vacancy test',
|
||||
location: 'Edit a Vacancy location'
|
||||
})
|
||||
|
||||
await navigationMenuPage.clickButtonApplications()
|
||||
const applicationsPage = new ApplicationsPage(page)
|
||||
const talentName = await applicationsPage.createNewApplicationWithNewTalent({
|
||||
vacancy: 'first',
|
||||
recruiterName: 'first'
|
||||
})
|
||||
await applicationsPage.openApplicationByTalentName(talentName)
|
||||
|
||||
const applicationsDetailsPage = new ApplicationsDetailsPage(page)
|
||||
const applicationId = await applicationsDetailsPage.getApplicationId()
|
||||
await applicationsDetailsPage.addComment(commentText)
|
||||
await applicationsDetailsPage.checkCommentExist(commentText)
|
||||
|
||||
await page.reload()
|
||||
await applicationsDetailsPage.waitApplicationDetailsOpened(applicationId)
|
||||
await applicationsDetailsPage.checkCommentExist(commentText)
|
||||
|
@ -10,7 +10,14 @@ test.use({
|
||||
})
|
||||
|
||||
test.describe('Companies tests', () => {
|
||||
let navigationMenuPage: NavigationMenuPage
|
||||
let companiesPage: CompaniesPage
|
||||
let companyDetailsPage: CompanyDetailsPage
|
||||
|
||||
test.beforeEach(async ({ page }) => {
|
||||
navigationMenuPage = new NavigationMenuPage(page)
|
||||
companiesPage = new CompaniesPage(page)
|
||||
companyDetailsPage = new CompanyDetailsPage(page)
|
||||
await (await page.goto(`${PlatformURI}/workbench/sanity-ws/recruit`))?.finished()
|
||||
})
|
||||
|
||||
@ -29,14 +36,9 @@ test.describe('Companies tests', () => {
|
||||
]
|
||||
}
|
||||
|
||||
const navigationMenuPage = new NavigationMenuPage(page)
|
||||
await navigationMenuPage.clickButtonCompanies()
|
||||
|
||||
const companiesPage = new CompaniesPage(page)
|
||||
await companiesPage.createNewCompany(newCompany)
|
||||
await companiesPage.openCompanyByName(newCompany.name)
|
||||
|
||||
const companyDetailsPage = new CompanyDetailsPage(page)
|
||||
await companyDetailsPage.checkCompany(newCompany)
|
||||
})
|
||||
|
||||
@ -61,14 +63,9 @@ test.describe('Companies tests', () => {
|
||||
location: 'London'
|
||||
}
|
||||
|
||||
const navigationMenuPage = new NavigationMenuPage(page)
|
||||
await navigationMenuPage.clickButtonCompanies()
|
||||
|
||||
const companiesPage = new CompaniesPage(page)
|
||||
await companiesPage.createNewCompany({ name: createdCompany })
|
||||
await companiesPage.openCompanyByName(createdCompany)
|
||||
|
||||
const companyDetailsPage = new CompanyDetailsPage(page)
|
||||
await companyDetailsPage.checkCompany({
|
||||
name: createdCompany
|
||||
})
|
||||
@ -81,18 +78,11 @@ test.describe('Companies tests', () => {
|
||||
const deleteCompany: NewCompany = {
|
||||
name: `Delete Company-${generateId()}`
|
||||
}
|
||||
|
||||
const navigationMenuPage = new NavigationMenuPage(page)
|
||||
await navigationMenuPage.clickButtonCompanies()
|
||||
|
||||
const companiesPage = new CompaniesPage(page)
|
||||
await companiesPage.createNewCompany(deleteCompany)
|
||||
await companiesPage.openCompanyByName(deleteCompany.name)
|
||||
|
||||
const companyDetailsPage = new CompanyDetailsPage(page)
|
||||
await companyDetailsPage.checkCompany(deleteCompany)
|
||||
await companyDetailsPage.deleteEntity()
|
||||
|
||||
await navigationMenuPage.clickButtonCompanies()
|
||||
await companiesPage.checkCompanyNotExist(deleteCompany.name)
|
||||
})
|
||||
|
@ -1,40 +1,40 @@
|
||||
import { test } from '@playwright/test'
|
||||
import { generateId, PlatformSetting, PlatformURI } from '../utils'
|
||||
import { RecruitingPage } from '../model/recruiting/recruiting-page'
|
||||
import { CommonRecruitingPage } from '../model/recruiting/common-recruiting-page'
|
||||
|
||||
test.use({
|
||||
storageState: PlatformSetting
|
||||
})
|
||||
|
||||
test.describe('review tests', () => {
|
||||
let recruitingPage: RecruitingPage
|
||||
let commonRecruitingPage: CommonRecruitingPage
|
||||
|
||||
test.beforeEach(async ({ page }) => {
|
||||
recruitingPage = new RecruitingPage(page)
|
||||
commonRecruitingPage = new CommonRecruitingPage(page)
|
||||
|
||||
await (await page.goto(`${PlatformURI}/workbench/sanity-ws/recruit`))?.finished()
|
||||
})
|
||||
|
||||
test('create-review', async ({ page, context }) => {
|
||||
await page.click('[id="app-recruit\\:string\\:RecruitApplication"]')
|
||||
await page.click('text=Reviews')
|
||||
await page.click('button:has-text("Review")')
|
||||
await page.click('[placeholder="Title"]')
|
||||
test('create-review', async ({ page }) => {
|
||||
const reviewId = 'review-' + generateId()
|
||||
await page.fill('[placeholder="Title"]', reviewId)
|
||||
|
||||
await page.click('button:has-text("Appleseed John")')
|
||||
|
||||
await page.click('button:has-text("Chen Rosamund")')
|
||||
|
||||
await page.press('[placeholder="Search\\.\\.\\."]', 'Escape')
|
||||
|
||||
await page.click('form button :has-text("Talent")')
|
||||
await recruitingPage.clickRecruitApplication()
|
||||
await recruitingPage.clickOnReviews()
|
||||
await recruitingPage.clickOnReviewButton()
|
||||
await commonRecruitingPage.clickOnTitle()
|
||||
await commonRecruitingPage.fillTitle(reviewId)
|
||||
await commonRecruitingPage.clickAppleseedJohn()
|
||||
await commonRecruitingPage.clickChenRosamund()
|
||||
await commonRecruitingPage.pressEscapeInSearch()
|
||||
await commonRecruitingPage.clickTalent()
|
||||
// Click button:has-text("Chen Rosamund")
|
||||
await page.click('button:has-text("Chen Rosamund")')
|
||||
|
||||
await page.click('button:has-text("Create")')
|
||||
await page.waitForSelector('form.antiCard', { state: 'detached' })
|
||||
|
||||
await page.click(`tr:has-text('${reviewId}') td a`)
|
||||
await page.click('button:has-text("2 members")')
|
||||
await page.click('.popup button:has-text("Chen Rosamund")')
|
||||
await page.press('[placeholder="Search\\.\\.\\."]', 'Escape')
|
||||
await page.click('button:has-text("Appleseed John")')
|
||||
await commonRecruitingPage.clickChenRosamund()
|
||||
await commonRecruitingPage.createApplication()
|
||||
await commonRecruitingPage.selectReviewItem(reviewId)
|
||||
await commonRecruitingPage.clickTwoMembers()
|
||||
await commonRecruitingPage.clickAppleseedJohn()
|
||||
// ADD ASSERTION
|
||||
})
|
||||
})
|
||||
|
@ -1,4 +1,4 @@
|
||||
import { expect, test } from '@playwright/test'
|
||||
import { test } from '@playwright/test'
|
||||
import { generateId, PlatformSetting, PlatformURI } from '../utils'
|
||||
import { NavigationMenuPage } from '../model/recruiting/navigation-menu-page'
|
||||
import { TalentsPage } from '../model/recruiting/talents-page'
|
||||
@ -10,113 +10,74 @@ test.use({
|
||||
})
|
||||
|
||||
test.describe('candidate/talents tests', () => {
|
||||
let talentsPage: TalentsPage
|
||||
let navigationMenuPage: NavigationMenuPage
|
||||
let talentDetailsPage: TalentDetailsPage
|
||||
|
||||
test.beforeEach(async ({ page }) => {
|
||||
talentsPage = new TalentsPage(page)
|
||||
navigationMenuPage = new NavigationMenuPage(page)
|
||||
talentDetailsPage = new TalentDetailsPage(page)
|
||||
|
||||
await (await page.goto(`${PlatformURI}/workbench/sanity-ws/recruit`))?.finished()
|
||||
})
|
||||
|
||||
test('create-candidate', async ({ page, context }) => {
|
||||
await page.locator('[id="app-recruit\\:string\\:RecruitApplication"]').click()
|
||||
|
||||
await page.click('text=Talents')
|
||||
|
||||
await page.click('button:has-text("New Talent")')
|
||||
|
||||
test('create-candidate', async () => {
|
||||
const first = 'Elton-' + generateId(4)
|
||||
const last = 'John-' + generateId(4)
|
||||
const loc = 'Cupertino'
|
||||
const email = `ej-${generateId(4)}@test.com`
|
||||
|
||||
const firstName = page.locator('[placeholder="First name"]')
|
||||
await firstName.click()
|
||||
await firstName.fill(first)
|
||||
|
||||
const lastName = page.locator('[placeholder="Last name"]')
|
||||
await lastName.click()
|
||||
await lastName.fill(last)
|
||||
|
||||
const title = page.locator('[placeholder="Title"]')
|
||||
await title.click()
|
||||
await title.fill('Super Candidate')
|
||||
|
||||
const location = page.locator('[placeholder="Location"]')
|
||||
await location.click()
|
||||
await location.fill(loc)
|
||||
|
||||
await page.locator('[id="presentation\\:string\\:AddSocialLinks"]').click()
|
||||
await page.locator('.antiPopup').locator('text=Email').click()
|
||||
const emailInput = page.locator('[placeholder="john\\.appleseed@apple\\.com"]')
|
||||
await emailInput.fill(email)
|
||||
await page.locator('#channel-ok.antiButton').click()
|
||||
|
||||
await page.locator('.antiCard button:has-text("Create")').click()
|
||||
await page.waitForSelector('form.antiCard', { state: 'detached' })
|
||||
|
||||
await page.click(`text="${last} ${first}"`)
|
||||
|
||||
await expect(page.locator(`text=${first}`).first()).toBeVisible()
|
||||
await expect(page.locator(`text=${last}`).first()).toBeVisible()
|
||||
await expect(page.locator(`text=${loc}`).first()).toBeVisible()
|
||||
|
||||
const panel = page.locator('.popupPanel')
|
||||
await panel.locator('[id="gmail\\:string\\:Email"]').scrollIntoViewIfNeeded()
|
||||
await panel.locator('[id="gmail\\:string\\:Email"]').click()
|
||||
expect(await page.locator('.cover-channel >> input').inputValue()).toEqual(email)
|
||||
await talentsPage.clickRecruitApplication()
|
||||
await talentsPage.clickTalentsTab()
|
||||
await talentsPage.clickNewTalent()
|
||||
await talentsPage.enterFirstName(first)
|
||||
await talentsPage.enterLastName(last)
|
||||
await talentsPage.enterTitle()
|
||||
await talentsPage.enterLocation(loc)
|
||||
await talentsPage.addSocialLinks()
|
||||
await talentsPage.selectEmail()
|
||||
await talentsPage.enterEmail(email)
|
||||
await talentsPage.confirmEmail()
|
||||
await talentsPage.createTalent()
|
||||
await talentsPage.verifyTalentDetails(first, last, loc)
|
||||
await talentsPage.verifyEmailInPopup(email)
|
||||
})
|
||||
|
||||
test('Edit the Talent', async ({ page, context }) => {
|
||||
const navigationMenuPage = new NavigationMenuPage(page)
|
||||
test('Edit the Talent', async () => {
|
||||
await navigationMenuPage.clickButtonTalents()
|
||||
|
||||
const talentsPage = new TalentsPage(page)
|
||||
const talentName = await talentsPage.createNewTalent()
|
||||
|
||||
await talentsPage.openTalentByTalentName(talentName)
|
||||
|
||||
const talentDetailsPage = new TalentDetailsPage(page)
|
||||
await talentDetailsPage.addComment('Test Talent Detail 123')
|
||||
await talentDetailsPage.checkCommentExist('Test Talent Detail 123')
|
||||
|
||||
await talentDetailsPage.addAttachments('cat.jpeg')
|
||||
|
||||
await talentDetailsPage.addFirstReview('First Talent Review', 'First Talent review description')
|
||||
|
||||
const skillTag = `React-${generateId(4)}`
|
||||
await talentDetailsPage.addSkill(skillTag, 'Description Java from Talent Description page')
|
||||
await talentDetailsPage.checkSkill(skillTag)
|
||||
|
||||
await talentDetailsPage.addSocialLinks('Phone', '123123213213')
|
||||
await talentDetailsPage.checkSocialLinks('Phone', '123123213213')
|
||||
|
||||
await talentDetailsPage.inputLocation().fill('Awesome Location')
|
||||
const title = `Title-${generateId(4)}`
|
||||
await talentDetailsPage.addTitle(title)
|
||||
// ADD ASSERTION
|
||||
})
|
||||
|
||||
test('Delete the Talent', async ({ page, context }) => {
|
||||
const navigationMenuPage = new NavigationMenuPage(page)
|
||||
test('Delete the Talent', async () => {
|
||||
await navigationMenuPage.clickButtonTalents()
|
||||
|
||||
const talentsPage = new TalentsPage(page)
|
||||
const talentName = await talentsPage.createNewTalent()
|
||||
await talentsPage.openTalentByTalentName(talentName)
|
||||
|
||||
const talentDetailsPage = new TalentDetailsPage(page)
|
||||
await talentDetailsPage.inputLocation().fill('Awesome Location')
|
||||
await talentDetailsPage.deleteEntity()
|
||||
|
||||
await navigationMenuPage.clickButtonTalents()
|
||||
await talentsPage.checkTalentNotExist(talentName)
|
||||
})
|
||||
|
||||
test('Merge contacts', async ({ page, context }) => {
|
||||
const navigationMenuPage = new NavigationMenuPage(page)
|
||||
test('Merge contacts', async () => {
|
||||
await navigationMenuPage.clickButtonTalents()
|
||||
const talentsPage = new TalentsPage(page)
|
||||
|
||||
// talent1
|
||||
const talentNameFirst = await talentsPage.createNewTalent()
|
||||
await talentsPage.openTalentByTalentName(talentNameFirst)
|
||||
let talentDetailsPage = new TalentDetailsPage(page)
|
||||
await talentDetailsPage.inputLocation().fill('Awesome Location Merge1')
|
||||
const titleTalent1 = 'TitleMerge1'
|
||||
await talentDetailsPage.addTitle(titleTalent1)
|
||||
@ -129,7 +90,6 @@ test.describe('candidate/talents tests', () => {
|
||||
await navigationMenuPage.clickButtonTalents()
|
||||
const talentNameSecond = await talentsPage.createNewTalent()
|
||||
await talentsPage.openTalentByTalentName(talentNameSecond)
|
||||
talentDetailsPage = new TalentDetailsPage(page)
|
||||
await talentDetailsPage.inputLocation().fill('Awesome Location Merge2')
|
||||
const titleTalent2 = 'TitleMerge2'
|
||||
await talentDetailsPage.addTitle(titleTalent2)
|
||||
@ -158,23 +118,16 @@ test.describe('candidate/talents tests', () => {
|
||||
await talentsPage.openTalentByTalentName(talentNameFirst)
|
||||
await talentDetailsPage.checkSocialLinks('Phone', '123123213213')
|
||||
await talentDetailsPage.checkSocialLinks('Email', 'test-merge-2@gmail.com')
|
||||
await expect(talentDetailsPage.inputLocation()).toHaveValue('Awesome Location Merge1')
|
||||
await expect(talentDetailsPage.page.locator('button > span', { hasText: titleTalent2 })).toBeVisible()
|
||||
await expect(talentDetailsPage.page.locator('button > span', { hasText: sourceTalent2 })).toBeVisible()
|
||||
await talentDetailsPage.checkMergeContacts('Awesome Location Merge1', titleTalent2, sourceTalent2)
|
||||
})
|
||||
|
||||
test('Match to vacancy', async ({ page, context }) => {
|
||||
test('Match to vacancy', async () => {
|
||||
const talentName: TalentName = {
|
||||
firstName: 'Software',
|
||||
lastName: `Engineer-${generateId(4)}`
|
||||
}
|
||||
|
||||
const navigationMenuPage = new NavigationMenuPage(page)
|
||||
await navigationMenuPage.clickButtonTalents()
|
||||
|
||||
const talentsPage = new TalentsPage(page)
|
||||
await talentsPage.createNewTalentWithName(talentName.firstName, talentName.lastName)
|
||||
|
||||
await talentsPage.rightClickAction(talentName, 'Match to vacancy')
|
||||
await talentsPage.checkMatchVacancy(`${talentName.lastName} ${talentName.firstName}`, '0')
|
||||
})
|
||||
|
@ -1,9 +1,8 @@
|
||||
import { expect, test } from '@playwright/test'
|
||||
import { test } from '@playwright/test'
|
||||
import { generateId, PlatformSetting, PlatformURI } from '../utils'
|
||||
import { NavigationMenuPage } from '../model/recruiting/navigation-menu-page'
|
||||
import { VacanciesPage } from '../model/recruiting/vacancies-page'
|
||||
import { VacancyDetailsPage } from '../model/recruiting/vacancy-details-page'
|
||||
import { CommonPage } from '../model/common-page'
|
||||
import { NewVacancy } from '../model/recruiting/types'
|
||||
|
||||
test.use({
|
||||
@ -11,109 +10,78 @@ test.use({
|
||||
})
|
||||
|
||||
test.describe('Vacancy tests', () => {
|
||||
let navigationMenuPage: NavigationMenuPage
|
||||
let vacanciesPage: VacanciesPage
|
||||
let vacancyDetailsPage: VacancyDetailsPage
|
||||
|
||||
test.beforeEach(async ({ page }) => {
|
||||
navigationMenuPage = new NavigationMenuPage(page)
|
||||
vacanciesPage = new VacanciesPage(page)
|
||||
vacancyDetailsPage = new VacancyDetailsPage(page)
|
||||
await (await page.goto(`${PlatformURI}/workbench/sanity-ws/recruit`))?.finished()
|
||||
})
|
||||
|
||||
test('create-vacancy', async ({ page }) => {
|
||||
test('create-vacancy', async () => {
|
||||
const vacancyId = 'My vacancy ' + generateId(4)
|
||||
|
||||
await page.locator('[id="app-recruit\\:string\\:RecruitApplication"]').click()
|
||||
|
||||
await page.locator('text=Vacancies').click()
|
||||
|
||||
await page.click('button:has-text("Vacancy")')
|
||||
await page.fill('form [placeholder="Software\\ Engineer"]', vacancyId)
|
||||
await page.click('form button:has-text("Create")')
|
||||
await page.waitForSelector('form.antiCard', { state: 'detached' })
|
||||
|
||||
await page.click(`tr:has-text("${vacancyId}") > td:nth-child(3) >> .sm-tool-icon`)
|
||||
|
||||
// Create Application1
|
||||
await page.click('button:has-text("Application")')
|
||||
await page.click('form[id="recruit:string:CreateApplication"] [id="vacancy.talant.selector"]')
|
||||
|
||||
await new CommonPage(page).selectAssignee(page, 'Alex')
|
||||
await page.click('form[id="recruit:string:CreateApplication"] button:has-text("Create")')
|
||||
await page.waitForSelector('form.antiCard', { state: 'detached' })
|
||||
|
||||
await expect(page.locator('text=APP-').first()).toBeVisible()
|
||||
await expect(page.locator('text=P. Alex').first()).toBeVisible()
|
||||
await vacanciesPage.createVacancy(vacancyId)
|
||||
await vacanciesPage.modifyVacancy(vacancyId)
|
||||
await vacanciesPage.createApplicationVacencies('Alex')
|
||||
})
|
||||
|
||||
test('use-kanban', async ({ page }) => {
|
||||
await page.locator('[id="app-recruit\\:string\\:RecruitApplication"]').click()
|
||||
test('use-kanban', async () => {
|
||||
await vacanciesPage.navigateToSoftwareEngineerVacancies()
|
||||
await vacanciesPage.selectApplicationsTab()
|
||||
await vacanciesPage.verifyApplicantsVisibility()
|
||||
|
||||
await page.locator('text=Vacancies').click()
|
||||
await page.click('text=Software Engineer')
|
||||
// test('application-search', async ({ page }) => {
|
||||
// TODO: Application search is broken, since indexer now index from child to parent.
|
||||
// await page.locator('[id="app-recruit\\:string\\:RecruitApplication"]').click()
|
||||
|
||||
// await page.click('[name="tooltip-task:string:Kanban"]')
|
||||
await page.click('.antiSection-header >> text=Applications')
|
||||
await page.click('.tablist-container div:nth-child(2)')
|
||||
// await page.locator('text=Vacancies').click()
|
||||
// await page.click('text=Software Engineer')
|
||||
|
||||
await expect(page.locator('text=M. Marina').first()).toBeVisible()
|
||||
await expect(page.locator('text=Multiseed John').first()).toBeVisible()
|
||||
await expect(page.locator('text=P. Alex').first()).toBeVisible()
|
||||
// await expect(page.locator('text=M. Marina')).toBeVisible()
|
||||
// expect(await page.locator('.antiTable-body__row').count()).toBeGreaterThan(2)
|
||||
|
||||
// const searchBox = page.locator('[placeholder="Search"]')
|
||||
// await searchBox.fill('Frontend Engineer')
|
||||
// await searchBox.press('Enter')
|
||||
|
||||
// await expect(page.locator('.antiTable-body__row')).toHaveCount(1)
|
||||
|
||||
// await searchBox.fill('')
|
||||
// await searchBox.press('Enter')
|
||||
|
||||
// await expect(page.locator('text=M. Marina')).toBeVisible()
|
||||
// expect(await page.locator('.antiTable-body__row').count()).toBeGreaterThan(2)
|
||||
// })
|
||||
})
|
||||
|
||||
// test('application-search', async ({ page }) => {
|
||||
// TODO: Application search is broken, since indexer now index from child to parent.
|
||||
// await page.locator('[id="app-recruit\\:string\\:RecruitApplication"]').click()
|
||||
|
||||
// await page.locator('text=Vacancies').click()
|
||||
// await page.click('text=Software Engineer')
|
||||
|
||||
// await expect(page.locator('text=M. Marina')).toBeVisible()
|
||||
// expect(await page.locator('.antiTable-body__row').count()).toBeGreaterThan(2)
|
||||
|
||||
// const searchBox = page.locator('[placeholder="Search"]')
|
||||
// await searchBox.fill('Frontend Engineer')
|
||||
// await searchBox.press('Enter')
|
||||
|
||||
// await expect(page.locator('.antiTable-body__row')).toHaveCount(1)
|
||||
|
||||
// await searchBox.fill('')
|
||||
// await searchBox.press('Enter')
|
||||
|
||||
// await expect(page.locator('text=M. Marina')).toBeVisible()
|
||||
// expect(await page.locator('.antiTable-body__row').count()).toBeGreaterThan(2)
|
||||
// })
|
||||
|
||||
test('Edit a Vacancy', async ({ page }) => {
|
||||
test('Edit a Vacancy', async () => {
|
||||
const vacancyName = 'Edit Vacancy ' + generateId(4)
|
||||
|
||||
const navigationMenuPage = new NavigationMenuPage(page)
|
||||
await navigationMenuPage.clickButtonVacancies()
|
||||
const vacanciesPage = new VacanciesPage(page)
|
||||
await vacanciesPage.createNewVacancy({
|
||||
title: vacancyName,
|
||||
description: 'Vacancy description from Edit a Vacancy test',
|
||||
location: 'Edit a Vacancy location'
|
||||
})
|
||||
|
||||
await vacanciesPage.openVacancyByName(vacancyName)
|
||||
|
||||
const vacancyDetailsPage = new VacancyDetailsPage(page)
|
||||
await vacancyDetailsPage.addComment('Test Vacancy Comment 12345')
|
||||
await vacancyDetailsPage.checkCommentExist('Test Vacancy Comment 12345')
|
||||
|
||||
await vacancyDetailsPage.inputDescription().fill('Edit a Vacancy description')
|
||||
await expect(vacancyDetailsPage.inputDescription()).toHaveText('Edit a Vacancy description')
|
||||
|
||||
await vacancyDetailsPage.fillInputDescription('Edit a Vacancy description')
|
||||
await vacancyDetailsPage.checkIfInputDescriptionHasText('Edit a Vacancy description')
|
||||
await vacancyDetailsPage.addAttachments('cat.jpeg')
|
||||
|
||||
await vacancyDetailsPage.addDescription('Vacancy Description left-side menu')
|
||||
await vacancyDetailsPage.addLocation('Edit Vacancy Location')
|
||||
await vacancyDetailsPage.addCompany('Apple')
|
||||
await vacancyDetailsPage.addDueDateToday()
|
||||
})
|
||||
|
||||
test('Filter vacancies', async ({ page }) => {
|
||||
test('Filter vacancies', async () => {
|
||||
// viable when test set of vacancies fits to single page
|
||||
const vacancyName = 'Archive Vacancy ' + generateId(5)
|
||||
const navigationMenuPage = new NavigationMenuPage(page)
|
||||
await navigationMenuPage.clickButtonVacancies()
|
||||
const vacanciesPage = new VacanciesPage(page)
|
||||
await vacanciesPage.createNewVacancy({
|
||||
title: vacancyName,
|
||||
description: 'Vacancy description from Filter vacancies test',
|
||||
@ -121,29 +89,21 @@ test.describe('Vacancy tests', () => {
|
||||
})
|
||||
await vacanciesPage.checkVacancyExist(vacancyName, `Created vacancy "${vacancyName}" visible by default.`)
|
||||
await vacanciesPage.archiveVacancyByName(vacancyName)
|
||||
|
||||
await vacanciesPage.checkVacancyNotExist(vacancyName, `Archieved vacancy "${vacancyName}" not visible by default.`)
|
||||
|
||||
await vacanciesPage.showArchivedVacancy()
|
||||
|
||||
await vacanciesPage.checkVacancyExist(
|
||||
vacancyName,
|
||||
`Archieved vacancy "${vacancyName}" visible when hide archved off.`
|
||||
)
|
||||
|
||||
await vacanciesPage.clickOnHideArchivedVacancies()
|
||||
|
||||
await vacanciesPage.checkVacancyNotExist(
|
||||
vacancyName,
|
||||
`Archieved vacancy "${vacancyName}" not visible when hide archved back on.`
|
||||
)
|
||||
})
|
||||
|
||||
test('Export vacancies', async ({ page }) => {
|
||||
const navigationMenuPage = new NavigationMenuPage(page)
|
||||
test('Export vacancies', async () => {
|
||||
await navigationMenuPage.clickButtonVacancies()
|
||||
|
||||
const vacanciesPage = new VacanciesPage(page)
|
||||
await vacanciesPage.selectAll()
|
||||
await vacanciesPage.exportVacanciesWithCheck('Software Engineer', 2000)
|
||||
})
|
||||
@ -155,24 +115,17 @@ test.describe('Vacancy tests', () => {
|
||||
location: 'Archive a Vacancy location'
|
||||
}
|
||||
|
||||
const navigationMenuPage = new NavigationMenuPage(page)
|
||||
await navigationMenuPage.clickButtonVacancies()
|
||||
|
||||
const vacanciesPage = new VacanciesPage(page)
|
||||
await vacanciesPage.createNewVacancy(archiveVacancy)
|
||||
await vacanciesPage.openVacancyByName(archiveVacancy.title)
|
||||
|
||||
const vacancyDetailsPage = new VacancyDetailsPage(page)
|
||||
await vacancyDetailsPage.moreActionOn('Archive')
|
||||
await vacancyDetailsPage.pressYesForPopup(page)
|
||||
await vacancyDetailsPage.checkActivityExist('Archived set to Yes')
|
||||
|
||||
await navigationMenuPage.clickButtonVacancies()
|
||||
await vacanciesPage.checkVacancyNotExist(
|
||||
archiveVacancy.title,
|
||||
`Archieved vacancy "${archiveVacancy.title}" visible.`
|
||||
)
|
||||
|
||||
await vacanciesPage.showArchivedVacancy()
|
||||
await vacanciesPage.checkVacancyExist(
|
||||
archiveVacancy.title,
|
||||
|
Loading…
Reference in New Issue
Block a user