From 2d266bb3fd9505dd6f90f452d8a7ac24e87a82d8 Mon Sep 17 00:00:00 2001 From: Alex Velichko Date: Mon, 11 Mar 2024 20:07:58 +0300 Subject: [PATCH] TESTS-94: feat(tests): done Due date filter test (#4891) Signed-off-by: Alex Velichko --- tests/sanity/tests/model/calendar-page.ts | 6 +- .../model/tracker/common-tracker-page.ts | 9 - .../sanity/tests/model/tracker/issues-page.ts | 32 +++- tests/sanity/tests/tracker/filter.spec.ts | 176 ++++++++++++++++++ 4 files changed, 207 insertions(+), 16 deletions(-) diff --git a/tests/sanity/tests/model/calendar-page.ts b/tests/sanity/tests/model/calendar-page.ts index d63c765081..0fc6095ebf 100644 --- a/tests/sanity/tests/model/calendar-page.ts +++ b/tests/sanity/tests/model/calendar-page.ts @@ -21,9 +21,9 @@ export class CalendarPage extends CommonPage { async fillDatePopup (day: string, month: string, year: string): Promise { await expect(this.inputTargetDateDay).toBeVisible() - await this.inputTargetDateDay.fill(day) - await this.inputTargetDateMonth.fill(month) - await this.inputTargetDateDay.fill(year) + await this.inputTargetDateDay.pressSequentially(day) + await this.inputTargetDateMonth.pressSequentially(month) + await this.inputTargetDateYear.pressSequentially(year) await this.buttonTargetDateSave.click() } diff --git a/tests/sanity/tests/model/tracker/common-tracker-page.ts b/tests/sanity/tests/model/tracker/common-tracker-page.ts index 56fe9b59e0..36df30a4a8 100644 --- a/tests/sanity/tests/model/tracker/common-tracker-page.ts +++ b/tests/sanity/tests/model/tracker/common-tracker-page.ts @@ -103,15 +103,6 @@ export class CommonTrackerPage extends CalendarPage { } async fillBetweenDate (dateStart: DateDivided, dateEnd: DateDivided): Promise { - // 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 await this.page .locator('div.date-popup-container div.input:first-child span.digit:first-child') diff --git a/tests/sanity/tests/model/tracker/issues-page.ts b/tests/sanity/tests/model/tracker/issues-page.ts index f572746536..5d03430d39 100644 --- a/tests/sanity/tests/model/tracker/issues-page.ts +++ b/tests/sanity/tests/model/tracker/issues-page.ts @@ -32,6 +32,7 @@ export class IssuesPage extends CommonTrackerPage { readonly buttonPopupCreateNewIssueTemplate: Locator readonly inputPopupAddAttachmentsFile: Locator readonly textPopupAddAttachmentsFile: Locator + readonly buttonCollapsedCategories: Locator constructor (page: Page) { super(page) @@ -76,6 +77,7 @@ export class IssuesPage extends CommonTrackerPage { ) this.inputPopupAddAttachmentsFile = page.locator('div.popup-tooltip input#file') 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 { @@ -126,11 +128,27 @@ export class IssuesPage extends CommonTrackerPage { } if (data.duedate != null) { await this.buttonPopupCreateNewIssueDuedate.click() - if (data.duedate === 'today') { - await this.buttonDatePopupToday.click() - } else { - await this.fillToSelectPopup(this.page, data.duedate) + let date = new Date() + switch (data.duedate) { + case 'yesterday': + 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) { await this.attachFileToNewIssueForm(data.filePath) @@ -269,4 +287,10 @@ export class IssuesPage extends CommonTrackerPage { .first() .click() } + + async openAllCategories (): Promise { + for await (const category of iterateLocator(this.buttonCollapsedCategories)) { + await category.click() + } + } } diff --git a/tests/sanity/tests/tracker/filter.spec.ts b/tests/sanity/tests/tracker/filter.spec.ts index f4c01b7517..95b3b0ea81 100644 --- a/tests/sanity/tests/tracker/filter.spec.ts +++ b/tests/sanity/tests/tracker/filter.spec.ts @@ -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) + }) + }) })