TESTS-94: feat(tests): done Due date filter test (#4891)

Signed-off-by: Alex Velichko <alex@hardcoreeng.com>
This commit is contained in:
Alex Velichko 2024-03-11 20:07:58 +03:00 committed by GitHub
parent 4b6c36d296
commit 2d266bb3fd
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 207 additions and 16 deletions

View File

@ -21,9 +21,9 @@ export class CalendarPage extends CommonPage {
async fillDatePopup (day: string, month: string, year: string): Promise<void> { async fillDatePopup (day: string, month: string, year: string): Promise<void> {
await expect(this.inputTargetDateDay).toBeVisible() await expect(this.inputTargetDateDay).toBeVisible()
await this.inputTargetDateDay.fill(day) await this.inputTargetDateDay.pressSequentially(day)
await this.inputTargetDateMonth.fill(month) await this.inputTargetDateMonth.pressSequentially(month)
await this.inputTargetDateDay.fill(year) await this.inputTargetDateYear.pressSequentially(year)
await this.buttonTargetDateSave.click() await this.buttonTargetDateSave.click()
} }

View File

@ -103,15 +103,6 @@ export class CommonTrackerPage extends CalendarPage {
} }
async fillBetweenDate (dateStart: DateDivided, dateEnd: DateDivided): Promise<void> { async fillBetweenDate (dateStart: DateDivided, dateEnd: DateDivided): Promise<void> {
// TODO removed after bug fixed
if (dateStart.day === '30' || dateEnd.day === '30') {
await this.page.locator('div.date-popup-container div.day:not(.wrongMonth)', { hasText: '30' }).first().click()
}
if (dateStart.day === '31' || dateEnd.day === '31') {
await this.page.locator('div.date-popup-container div.day:not(.wrongMonth)', { hasText: '31' }).first().click()
}
// dateStart - day // dateStart - day
await this.page await this.page
.locator('div.date-popup-container div.input:first-child span.digit:first-child') .locator('div.date-popup-container div.input:first-child span.digit:first-child')

View File

@ -32,6 +32,7 @@ export class IssuesPage extends CommonTrackerPage {
readonly buttonPopupCreateNewIssueTemplate: Locator readonly buttonPopupCreateNewIssueTemplate: Locator
readonly inputPopupAddAttachmentsFile: Locator readonly inputPopupAddAttachmentsFile: Locator
readonly textPopupAddAttachmentsFile: Locator readonly textPopupAddAttachmentsFile: Locator
readonly buttonCollapsedCategories: Locator
constructor (page: Page) { constructor (page: Page) {
super(page) super(page)
@ -76,6 +77,7 @@ export class IssuesPage extends CommonTrackerPage {
) )
this.inputPopupAddAttachmentsFile = page.locator('div.popup-tooltip input#file') this.inputPopupAddAttachmentsFile = page.locator('div.popup-tooltip input#file')
this.textPopupAddAttachmentsFile = page.locator('div.popup-tooltip div.item div.name') this.textPopupAddAttachmentsFile = page.locator('div.popup-tooltip div.item div.name')
this.buttonCollapsedCategories = page.locator('div.categoryHeader.collapsed')
} }
async createNewIssue (data: NewIssue, closeNotification: boolean = false): Promise<void> { async createNewIssue (data: NewIssue, closeNotification: boolean = false): Promise<void> {
@ -126,11 +128,27 @@ export class IssuesPage extends CommonTrackerPage {
} }
if (data.duedate != null) { if (data.duedate != null) {
await this.buttonPopupCreateNewIssueDuedate.click() await this.buttonPopupCreateNewIssueDuedate.click()
if (data.duedate === 'today') { let date = new Date()
await this.buttonDatePopupToday.click() switch (data.duedate) {
} else { case 'yesterday':
await this.fillToSelectPopup(this.page, data.duedate) date.setDate(date.getDate() - 1)
break
case 'nextWeek':
date.setDate(date.getDate() + 7)
break
case 'nextMonth':
if (date.getMonth() === 11) {
date = new Date(date.getFullYear() + 1, 0, date.getDate())
} else {
date = new Date(date.getFullYear(), date.getMonth() + 1, date.getDate())
}
break
} }
await this.fillDatePopup(
date.getDate().toString(),
(date.getMonth() + 1).toString(),
date.getFullYear().toString()
)
} }
if (data.filePath != null) { if (data.filePath != null) {
await this.attachFileToNewIssueForm(data.filePath) await this.attachFileToNewIssueForm(data.filePath)
@ -269,4 +287,10 @@ export class IssuesPage extends CommonTrackerPage {
.first() .first()
.click() .click()
} }
async openAllCategories (): Promise<void> {
for await (const category of iterateLocator(this.buttonCollapsedCategories)) {
await category.click()
}
}
} }

View File

@ -428,4 +428,180 @@ test.describe('Tracker filters tests', () => {
} }
}) })
}) })
test('Due date filter', async ({ page }) => {
const dueDateOverdueIssue: NewIssue = {
title: `Issue for the Due date yesterday filter-${generateId()}`,
description: 'Issue for the Due date yesterday filter',
duedate: 'yesterday'
}
const dueDateTodayIssue: NewIssue = {
title: `Issue for the Due date today filter-${generateId()}`,
description: 'Issue for the Due date today filter',
duedate: 'today'
}
const dueDateNextWeekIssue: NewIssue = {
title: `Issue for the Due date next week filter-${generateId()}`,
description: 'Issue for the Due date next week filter',
duedate: 'nextWeek'
}
const dueDateNextMonthIssue: NewIssue = {
title: `Issue for the Due date next month filter-${generateId()}`,
description: 'Issue for the Due date next month filter',
duedate: 'nextMonth'
}
const leftSideMenuPage = new LeftSideMenuPage(page)
await leftSideMenuPage.buttonTracker.click()
const issuesPage = new IssuesPage(page)
await issuesPage.modelSelectorAll.click()
await issuesPage.createNewIssue(dueDateOverdueIssue)
await issuesPage.createNewIssue(dueDateTodayIssue)
await issuesPage.createNewIssue(dueDateNextWeekIssue)
await issuesPage.createNewIssue(dueDateNextMonthIssue)
await issuesPage.openAllCategories()
await test.step('Check Filter Overdue', async () => {
await issuesPage.selectFilter('Due date', 'Overdue')
await issuesPage.checkFilter('Due date', 'Overdue')
await issuesPage.checkFilteredIssueExist(dueDateOverdueIssue.title)
await issuesPage.checkFilteredIssueExist(dueDateTodayIssue.title)
await issuesPage.checkFilteredIssueNotExist(dueDateNextWeekIssue.title)
await issuesPage.checkFilteredIssueNotExist(dueDateNextMonthIssue.title)
})
await test.step('Check Filter Today', async () => {
await issuesPage.updateFilterDimension('Today')
await issuesPage.checkFilter('Due date', 'Today')
await issuesPage.checkFilteredIssueNotExist(dueDateOverdueIssue.title)
await issuesPage.checkFilteredIssueExist(dueDateTodayIssue.title)
await issuesPage.checkFilteredIssueNotExist(dueDateNextWeekIssue.title)
await issuesPage.checkFilteredIssueNotExist(dueDateNextMonthIssue.title)
})
await test.step('Check Filter Yesterday', async () => {
await issuesPage.updateFilterDimension('Yesterday')
await issuesPage.checkFilter('Due date', 'Yesterday')
await issuesPage.checkFilteredIssueExist(dueDateOverdueIssue.title)
await issuesPage.checkFilteredIssueNotExist(dueDateTodayIssue.title)
await issuesPage.checkFilteredIssueNotExist(dueDateNextWeekIssue.title)
await issuesPage.checkFilteredIssueNotExist(dueDateNextMonthIssue.title)
})
await test.step('Check Filter This week', async () => {
await issuesPage.updateFilterDimension('This week')
await issuesPage.checkFilter('Due date', 'This week')
if (new Date().getDay() !== 1) {
await issuesPage.checkFilteredIssueExist(dueDateOverdueIssue.title)
} else {
await issuesPage.checkFilteredIssueNotExist(dueDateOverdueIssue.title)
}
await issuesPage.checkFilteredIssueExist(dueDateTodayIssue.title)
await issuesPage.checkFilteredIssueNotExist(dueDateNextWeekIssue.title)
await issuesPage.checkFilteredIssueNotExist(dueDateNextMonthIssue.title)
})
await test.step('Check Filter Next week', async () => {
await issuesPage.updateFilterDimension('Next week')
await issuesPage.checkFilter('Due date', 'Next week')
await issuesPage.checkFilteredIssueNotExist(dueDateOverdueIssue.title)
await issuesPage.checkFilteredIssueNotExist(dueDateTodayIssue.title)
await issuesPage.checkFilteredIssueExist(dueDateNextWeekIssue.title)
await issuesPage.checkFilteredIssueNotExist(dueDateNextMonthIssue.title)
})
await test.step('Check Filter This month', async () => {
await issuesPage.updateFilterDimension('This month')
await issuesPage.checkFilter('Due date', 'This month')
await issuesPage.checkFilteredIssueExist(dueDateOverdueIssue.title)
await issuesPage.checkFilteredIssueExist(dueDateTodayIssue.title)
await issuesPage.checkFilteredIssueExist(dueDateNextWeekIssue.title)
await issuesPage.checkFilteredIssueNotExist(dueDateNextMonthIssue.title)
})
await test.step('Check Filter Next month', async () => {
await issuesPage.updateFilterDimension('Next month')
await issuesPage.checkFilter('Due date', 'Next month')
await issuesPage.checkFilteredIssueNotExist(dueDateOverdueIssue.title)
await issuesPage.checkFilteredIssueNotExist(dueDateTodayIssue.title)
await issuesPage.checkFilteredIssueNotExist(dueDateNextWeekIssue.title)
await issuesPage.checkFilteredIssueExist(dueDateNextMonthIssue.title)
})
await test.step('Check Filter Exact date - Today', async () => {
await issuesPage.updateFilterDimension('Exact date', 'Today')
await issuesPage.checkFilter('Due date', 'is', 'Today')
await issuesPage.checkFilteredIssueNotExist(dueDateOverdueIssue.title)
await issuesPage.checkFilteredIssueExist(dueDateTodayIssue.title)
await issuesPage.checkFilteredIssueNotExist(dueDateNextWeekIssue.title)
await issuesPage.checkFilteredIssueNotExist(dueDateNextMonthIssue.title)
})
await test.step('Check Filter Before date - Today', async () => {
await issuesPage.updateFilterDimension('Before date')
await issuesPage.checkFilter('Due date', 'Before', 'Today')
await issuesPage.checkFilteredIssueExist(dueDateOverdueIssue.title)
await issuesPage.checkFilteredIssueExist(dueDateTodayIssue.title)
await issuesPage.checkFilteredIssueNotExist(dueDateNextWeekIssue.title)
await issuesPage.checkFilteredIssueNotExist(dueDateNextMonthIssue.title)
})
await test.step('Check Filter After date - Today', async () => {
await issuesPage.updateFilterDimension('After date')
await issuesPage.checkFilter('Due date', 'After', 'Today')
await issuesPage.checkFilteredIssueNotExist(dueDateOverdueIssue.title)
await issuesPage.checkFilteredIssueExist(dueDateTodayIssue.title)
await issuesPage.checkFilteredIssueExist(dueDateNextWeekIssue.title)
await issuesPage.checkFilteredIssueExist(dueDateNextMonthIssue.title)
})
await test.step('Check Filter Between Dates', async () => {
await issuesPage.updateFilterDimension('Between dates')
const dateYesterday = new Date()
dateYesterday.setDate(dateYesterday.getDate() - 1)
const dateTomorrow = new Date()
dateTomorrow.setDate(dateTomorrow.getDate() + 1)
const dateYesterdayDivided: DateDivided = {
day: dateYesterday.getDate().toString(),
month: (dateYesterday.getMonth() + 1).toString(),
year: dateYesterday.getFullYear().toString()
}
const dateTomorrowDivided: DateDivided = {
day: dateTomorrow.getDate().toString(),
month: (dateTomorrow.getMonth() + 1).toString(),
year: dateTomorrow.getFullYear().toString()
}
await issuesPage.fillBetweenDate(dateYesterdayDivided, dateTomorrowDivided)
await issuesPage.checkFilter('Due date', 'is between', dateYesterday.getDate().toString())
await issuesPage.checkFilter('Due date', 'is between', dateTomorrow.getDate().toString())
await issuesPage.checkFilteredIssueExist(dueDateOverdueIssue.title)
await issuesPage.checkFilteredIssueExist(dueDateTodayIssue.title)
await issuesPage.checkFilteredIssueNotExist(dueDateNextWeekIssue.title)
await issuesPage.checkFilteredIssueNotExist(dueDateNextMonthIssue.title)
})
await test.step('Check Filter Not specified', async () => {
await issuesPage.updateFilterDimension('Not specified')
await issuesPage.checkFilter('Due date', 'Not specified')
await issuesPage.checkFilteredIssueNotExist(dueDateOverdueIssue.title)
await issuesPage.checkFilteredIssueNotExist(dueDateTodayIssue.title)
await issuesPage.checkFilteredIssueNotExist(dueDateNextWeekIssue.title)
await issuesPage.checkFilteredIssueNotExist(dueDateNextMonthIssue.title)
})
})
}) })