From 29b0ac0eca63c08e939dc702817344708349e6d6 Mon Sep 17 00:00:00 2001 From: Kristijan Vizi Date: Fri, 26 Jul 2024 08:46:11 +0200 Subject: [PATCH 1/5] New: added announcements block test cases --- envs/envs.js | 2 +- features/dme/announcements.spec.js | 8 +++-- selectors/dme/announcements.page.js | 3 ++ selectors/dme/signin.page.js | 51 +++++++++++++++++++++++++++++ tests/dme/announcements.test.js | 32 +++++++++++++++--- 5 files changed, 88 insertions(+), 8 deletions(-) create mode 100644 selectors/dme/signin.page.js diff --git a/envs/envs.js b/envs/envs.js index 6685bdaa..66a1f4fa 100644 --- a/envs/envs.js +++ b/envs/envs.js @@ -22,5 +22,5 @@ module.exports = { '@local6456': 'http://localhost:6456', '@helpx_live': 'https://helpx-internal.stage.adobe.com', '@dx_stage': 'https://stage--dx-partners--adobecom.hlx.live', - '@dme_stage': 'https://partners.stage.adobe.com', + '@dme_stage': 'https://stage--dme-partners--adobecom.hlx.live', }; diff --git a/features/dme/announcements.spec.js b/features/dme/announcements.spec.js index f27046d4..970ed883 100644 --- a/features/dme/announcements.spec.js +++ b/features/dme/announcements.spec.js @@ -4,8 +4,12 @@ module.exports = { { tcid: '1', name: '@desc-regression-announcements', - path: '/channelpartners/drafts/automation/regression/announcements', - tags: '@dme @regression', + path: 'https://partners.stage.adobe.com/channelpartners/drafts/automation/regression/announcements', + tags: '@dme-announcements @regression @login @nopr', + data: { + partnerLevel: 'cpp-distributor-japan:', + announcementCardTitle: 'CPP Distributor Japan Announcement', + }, }, ], }; diff --git a/selectors/dme/announcements.page.js b/selectors/dme/announcements.page.js index d3707181..c2547dc6 100644 --- a/selectors/dme/announcements.page.js +++ b/selectors/dme/announcements.page.js @@ -1,5 +1,8 @@ export default class AnnouncementsPage { constructor(page) { this.page = page; + this.signInButton = page.locator('button[daa-ll="Sign In"].feds-signIn'); + this.resultNumber = page.locator('.partner-cards-cards-results').nth(0); + this.searchField = page.locator('.input'); } } diff --git a/selectors/dme/signin.page.js b/selectors/dme/signin.page.js new file mode 100644 index 00000000..0fa65722 --- /dev/null +++ b/selectors/dme/signin.page.js @@ -0,0 +1,51 @@ +export default class SignInPage { + constructor(page) { + this.page = page; + this.signInButton = page.locator('button[daa-ll="Sign In"].feds-signIn'); + this.signInButtonStageAdobe = page.locator('.profile-comp.secondary-button'); + this.profileIconButton = page.locator('.feds-profile-button'); + this.userNameDisplay = page.locator('.user-name'); + this.logoutButton = page.locator('[daa-ll="Sign Out"]'); + + this.emailField = page.locator('#EmailPage-EmailField'); + this.emailPageContinueButton = page.locator('//button[@data-id="EmailPage-ContinueButton"]'); + this.passwordField = page.locator('#PasswordPage-PasswordField'); + this.passwordPageContinueButton = page.locator('//button[@data-id="PasswordPage-ContinueButton"]'); + } + + async signIn(page, partnerLevel) { + const email = process.env.IMS_EMAIL.split(partnerLevel)[1].split(';')[0]; + await page.waitForLoadState('domcontentloaded'); + await this.emailField.fill(email); + await this.emailPageContinueButton.click(); + await this.passwordField.fill(process.env.IMS_PASS); + await this.passwordPageContinueButton.click(); + } + + async verifyRedirectAfterLogin({ + page, test, expect, newTab, newTabPage, feature, + }) { + await test.step('Go to stage.adobe.com', async () => { + const url = `${feature.baseURL}`; + await page.evaluate((navigationUrl) => { + window.location.href = navigationUrl; + }, url); + + await this.signInButtonStageAdobe.click(); + await page.waitForLoadState('domcontentloaded'); + }); + + await test.step('Sign in with cpp spain platinum user', async () => { + await this.signIn(page, `${feature.data.partnerLevel}`); + await this.userNameDisplay.waitFor({ state: 'visible', timeout: 20000 }); + }); + + await test.step(`Open ${feature.data.page} in a new tab`, async () => { + await newTab.goto(`${feature.path}`); + await newTabPage.profileIconButton.waitFor({ state: 'visible', timeout: 20000 }); + const pages = await page.context().pages(); + await expect(pages[1].url()) + .toContain(`${feature.data.expectedToSeeInURL}`); + }); + } +} diff --git a/tests/dme/announcements.test.js b/tests/dme/announcements.test.js index b996e7fe..f79f4edb 100644 --- a/tests/dme/announcements.test.js +++ b/tests/dme/announcements.test.js @@ -1,15 +1,37 @@ import { test, expect } from '@playwright/test'; +import AnnouncementsPage from '../../selectors/dme/announcements.page.js'; +import SignInPage from '../../selectors/dme/signin.page.js'; +let announcementsPage; +let signInPage; const Announcements = require('../../features/dme/announcements.spec.js'); const { features } = Announcements; +const regionCases = features.slice(0, 2); test.describe('Validate announcements block', () => { - test(`${features[0].name},${features[0].tags}`, async ({ page, baseURL }) => { - await test.step('Go to Announcements page', async () => { - await page.goto(`${baseURL}${features[0].path}`); - await expect(page.url()) - .toContain('/channelpartners/drafts/automation/regression/announcements'); + test.beforeEach(async ({ page }) => { + announcementsPage = new AnnouncementsPage(page); + signInPage = new SignInPage(page); + }); + + regionCases.forEach((feature) => { + test(`${feature.name},${feature.tags}`, async ({ page }) => { + await test.step('Go to Announcements page', async () => { + await page.goto(`${feature.path}`); + await page.waitForLoadState('domcontentloaded'); + await announcementsPage.signInButton.click(); + }); + + await test.step('Sign in', async () => { + await signInPage.signIn(page, `${feature.data.partnerLevel}`); + }); + + await test.step(`Verify card titled ${feature.data.announcementCardTitle} is present on page`, async () => { + await announcementsPage.searchField.fill(`${feature.data.announcementCardTitle}`); + const result = await announcementsPage.resultNumber.textContent(); + await expect(parseInt(result.split(' ')[0], 10)).toBe(1); + }); }); }); }); From c945d8f5c942d7275e5db3a6ea86fcd8ddcaf05f Mon Sep 17 00:00:00 2001 From: Kristijan Vizi Date: Fri, 26 Jul 2024 15:20:06 +0200 Subject: [PATCH 2/5] New: added aditional cases for announcements page --- features/dme/announcements.spec.js | 112 +++++++++++++++++++++++++++- selectors/dme/announcements.page.js | 1 + tests/dme/announcements.test.js | 3 +- 3 files changed, 114 insertions(+), 2 deletions(-) diff --git a/features/dme/announcements.spec.js b/features/dme/announcements.spec.js index 970ed883..83023ca0 100644 --- a/features/dme/announcements.spec.js +++ b/features/dme/announcements.spec.js @@ -3,7 +3,17 @@ module.exports = { features: [ { tcid: '1', - name: '@desc-regression-announcements', + name: '@desc-regression-announcements-distributor-north-america', + path: 'https://partners.stage.adobe.com/channelpartners/drafts/automation/regression/announcements', + tags: '@dme-announcements @regression @login @nopr', + data: { + partnerLevel: 'cpp-distributor-us:', + announcementCardTitle: 'CPP Distributor North America Announcement', + }, + }, + { + tcid: '2', + name: '@desc-regression-announcements-distributor-japan', path: 'https://partners.stage.adobe.com/channelpartners/drafts/automation/regression/announcements', tags: '@dme-announcements @regression @login @nopr', data: { @@ -11,5 +21,105 @@ module.exports = { announcementCardTitle: 'CPP Distributor Japan Announcement', }, }, + { + tcid: '3', + name: '@desc-regression-announcements-distributor-india', + path: 'https://partners.stage.adobe.com/channelpartners/drafts/automation/regression/announcements', + tags: '@dme-announcements @regression @login @nopr', + data: { + partnerLevel: 'cpp-distributor-india:', + announcementCardTitle: 'CPP Distributor India Announcement', + }, + }, + { + tcid: '4', + name: '@desc-regression-announcements-platinum-spain', + path: 'https://partners.stage.adobe.com/channelpartners/drafts/automation/regression/announcements', + tags: '@dme-announcements @regression @login @nopr', + data: { + partnerLevel: 'cpp-spain-platinum:', + announcementCardTitle: 'CPP Platinum Spain Announcement', + }, + }, + { + tcid: '5', + name: '@desc-regression-announcements-platinum-latin-america-na-based', + path: 'https://partners.stage.adobe.com/channelpartners/drafts/automation/regression/announcements', + tags: '@dme-announcements @regression @login @nopr', + data: { + partnerLevel: 'cpp-latin-na-platinum:', + announcementCardTitle: 'CPP Platinum Latin America-North America based Announcement', + }, + }, + { + tcid: '6', + name: '@desc-regression-announcements-platinum-emea', + path: 'https://partners.stage.adobe.com/channelpartners/drafts/automation/regression/announcements', + tags: '@dme-announcements @regression @login @nopr', + data: { + partnerLevel: 'cpp-emea-platinum:', + announcementCardTitle: '', + }, + }, + { + tcid: '7', + name: '@desc-regression-announcements-gold-latin-america', + path: 'https://partners.stage.adobe.com/channelpartners/drafts/automation/regression/announcements', + tags: '@dme-announcements @regression @login @nopr', + data: { + partnerLevel: 'cpp-latin-america-gold:', + announcementCardTitle: 'CPP Gold Latin America Announcement', + }, + }, + { + tcid: '8', + name: '@desc-regression-announcements-gold-uk-europe-west', + path: 'https://partners.stage.adobe.com/channelpartners/drafts/automation/regression/announcements', + tags: '@dme-announcements @regression @login @nopr', + data: { + partnerLevel: 'cpp-uk-gold:', + announcementCardTitle: '', + }, + }, + { + tcid: '9', + name: '@desc-regression-announcements-certified-europe-east', + path: 'https://partners.stage.adobe.com/channelpartners/drafts/automation/regression/announcements', + tags: '@dme-announcements @regression @login @nopr', + data: { + partnerLevel: 'cpp-europe-east-certified:', + announcementCardTitle: 'CPP Certified Europe East Announcement', + }, + }, + { + tcid: '10', + name: '@desc-regression-announcements-certified-pacific', + path: 'https://partners.stage.adobe.com/channelpartners/drafts/automation/regression/announcements', + tags: '@dme-announcements @regression @login @nopr', + data: { + partnerLevel: 'cpp-pacific-certified:', + announcementCardTitle: 'CPP Certified Pacific Announcement', + }, + }, + { + tcid: '11', + name: '@desc-regression-announcements-registered-china', + path: 'https://partners.stage.adobe.com/channelpartners/drafts/automation/regression/announcements', + tags: '@dme-announcements @regression @login @nopr', + data: { + partnerLevel: 'cpp-china-registered:', + announcementCardTitle: 'CPP Registered China Announcement', + }, + }, + { + tcid: '12', + name: '@desc-regression-announcements-registered-middle-east-and-africa', + path: 'https://partners.stage.adobe.com/channelpartners/drafts/automation/regression/announcements', + tags: '@dme-announcements @regression @login @nopr', + data: { + partnerLevel: 'cpp-mid-east-africa-registered:yugo-stage-cpp-registered-mid-east-africa@yopmail.com;', + announcementCardTitle: '', + }, + }, ], }; diff --git a/selectors/dme/announcements.page.js b/selectors/dme/announcements.page.js index c2547dc6..16c628d5 100644 --- a/selectors/dme/announcements.page.js +++ b/selectors/dme/announcements.page.js @@ -4,5 +4,6 @@ export default class AnnouncementsPage { this.signInButton = page.locator('button[daa-ll="Sign In"].feds-signIn'); this.resultNumber = page.locator('.partner-cards-cards-results').nth(0); this.searchField = page.locator('.input'); + this.firstCardTitle = page.locator('.card-title').nth(0); } } diff --git a/tests/dme/announcements.test.js b/tests/dme/announcements.test.js index f79f4edb..544490c1 100644 --- a/tests/dme/announcements.test.js +++ b/tests/dme/announcements.test.js @@ -7,7 +7,7 @@ let signInPage; const Announcements = require('../../features/dme/announcements.spec.js'); const { features } = Announcements; -const regionCases = features.slice(0, 2); +const regionCases = features.slice(0, 12); test.describe('Validate announcements block', () => { test.beforeEach(async ({ page }) => { @@ -29,6 +29,7 @@ test.describe('Validate announcements block', () => { await test.step(`Verify card titled ${feature.data.announcementCardTitle} is present on page`, async () => { await announcementsPage.searchField.fill(`${feature.data.announcementCardTitle}`); + await announcementsPage.firstCardTitle.waitFor({ state: 'visible', timeout: 10000 }); const result = await announcementsPage.resultNumber.textContent(); await expect(parseInt(result.split(' ')[0], 10)).toBe(1); }); From 369b7f7cd0411bcb685e8316cc58843aaf0dedd0 Mon Sep 17 00:00:00 2001 From: Kristijan Vizi Date: Fri, 2 Aug 2024 15:21:01 +0200 Subject: [PATCH 3/5] New: added non logged in scenarios tests --- features/dme/announcements.spec.js | 233 +++++++++++++++++++------ selectors/dme/announcements.page.js | 38 ++++ tests/dme/announcements.test.js | 257 ++++++++++++++++++++++++++-- 3 files changed, 467 insertions(+), 61 deletions(-) diff --git a/features/dme/announcements.spec.js b/features/dme/announcements.spec.js index 83023ca0..7304937e 100644 --- a/features/dme/announcements.spec.js +++ b/features/dme/announcements.spec.js @@ -3,122 +3,255 @@ module.exports = { features: [ { tcid: '1', + name: '@desc-regression-announcements-page-search', + path: '/channelpartners/drafts/automation/regression/announcements', + tags: '@dme-announcements @regression @anonymous', + data: { + numberOfPublicCards: 7, + numberOfMatchingDescCards: 6, + numberOfMatchingTitleCards: 1, + }, + }, + { + tcid: '2', + name: '@desc-regression-announcements-page-load-more-sort', + path: '/channelpartners/drafts/automation/regression/announcements', + tags: '@dme-announcements @regression @anonymous', + data: { + numberOfPublicCards: 7, + numberOfMatchingDescCards: 6, + firstLoadResult: '2 of 6 results', + secondLoadResult: '4 of 6 results', + thirdLoadResult: '6 of 6 results', + }, + }, + { + tcid: '3', + name: '@desc-regression-announcements-page-pagination', + path: '/channelpartners/drafts/automation/regression/announcements-paginated', + tags: '@dme-announcements @regression @anonymous', + data: { + numberOfPublicCards: 7, + numberOfMatchingDescCards: 6, + firstPageResult: '1 - 2 of 6 results', + secondPageResult: '3 - 4 of 6 results', + thirdPageResult: '5 - 6 of 6 results', + pageButtonNumber: 2, + totalPageCount: 3, + }, + }, + { + tcid: '4', + name: '@desc-regression-announcements-page-filters', + path: '/channelpartners/drafts/automation/regression/announcements', + tags: '@dme-announcements @regression @anonymous', + data: { + numberOfPublicCards: 7, + filterDate: 'Date', + filterProduct: 'Product', + filterSales: 'Sales', + filterMarketing: 'Marketing', + filterSolutions: 'Solutions', + filterAdvertising: 'Advertising', + filterAudience: 'Audience', + filterPracticeLead: 'Practice Lead', + filterLastNinetyDays: 'Last 90 days', + cardsWithSalesAndPracticeLead: 2, + cardsWithAdvertisingAndSolutions: 2, + cardsWithAdvertising: 1, + cardsWithLastNinetyDays: 1, + cardsWithProduct: 2, + cardsWithSales: 1, + titleOfDateFilteredCard: 'Automation regression announcements card Worldwide no4', + numberOfAudienceFiltersSelected: 2, + }, + }, + { + tcid: '5', + name: '@desc-regression-announcements-page-read-article', + path: '/channelpartners/drafts/automation/regression/announcements', + tags: '@dme-announcements @regression @anonymous', + data: { + searchCardTitle: 'Automation regression announcements card worldwide no1', + numberOfMatchingTitleCards: 1, + expectedToSeeInURL: '/channelpartners/drafts/automation/regression/Cards/cpp-worldwide-no1', + }, + }, + { + tcid: '6', + name: '@desc-announcements-page-edge-cases', + path: '/channelpartners/drafts/automation/regression/announcements', + tags: '@dme-announcements @regression @anonymous', + data: { + numberOfPublicCards: 7, + specialCharsTitleSearch: '? ! | <> * !@#$%^&*()_+~`<>?\\’|”{}][ уљађз', + cardsWithSpecialChars: 1, + dateInPastTitleSearch: 'Automation regression announcements card worldwide date in past', + cardsWithDateInPast: 0, + eventEndedTitleSearch: 'Automation regression announcements card worldwide event ended', + cardsWithEventEnded: 0, + tooLongTitleSearch: 'Automation regression announcements card worldwide too long title', + cardsWithTooLongTitle: 1, + noCollectionTagTitleSearch: 'Automation regression announcements card worldwide without collection tag', + cardsWithoutCollectionTag: 0, + noTitleSearch: 'Without card title', + cardsWithoutTitle: 0, + }, + }, + { + tcid: '7', name: '@desc-regression-announcements-distributor-north-america', - path: 'https://partners.stage.adobe.com/channelpartners/drafts/automation/regression/announcements', - tags: '@dme-announcements @regression @login @nopr', + path: '/channelpartners/drafts/automation/regression/announcements', + tags: '@dme-announcements @regression @anonymous', data: { - partnerLevel: 'cpp-distributor-us:', + partnerPortal: 'CPP', + partnerLevel: 'Distributor', + permissionRegion: 'North America', announcementCardTitle: 'CPP Distributor North America Announcement', + numberOfMatchingTitleCards: 1, }, }, { - tcid: '2', + tcid: '8', name: '@desc-regression-announcements-distributor-japan', - path: 'https://partners.stage.adobe.com/channelpartners/drafts/automation/regression/announcements', - tags: '@dme-announcements @regression @login @nopr', + path: '/channelpartners/drafts/automation/regression/announcements', + tags: '@dme-announcements @regression @anonymous', data: { - partnerLevel: 'cpp-distributor-japan:', + partnerPortal: 'CPP', + partnerLevel: 'Distributor', + permissionRegion: 'Japan', announcementCardTitle: 'CPP Distributor Japan Announcement', + numberOfMatchingTitleCards: 1, }, }, { - tcid: '3', + tcid: '9', name: '@desc-regression-announcements-distributor-india', - path: 'https://partners.stage.adobe.com/channelpartners/drafts/automation/regression/announcements', - tags: '@dme-announcements @regression @login @nopr', + path: '/channelpartners/drafts/automation/regression/announcements', + tags: '@dme-announcements @regression @anonymous', data: { - partnerLevel: 'cpp-distributor-india:', + partnerPortal: 'CPP', + partnerLevel: 'Distributor', + permissionRegion: 'Asia Pacific', announcementCardTitle: 'CPP Distributor India Announcement', + numberOfMatchingTitleCards: 1, }, }, { - tcid: '4', + tcid: '10', name: '@desc-regression-announcements-platinum-spain', - path: 'https://partners.stage.adobe.com/channelpartners/drafts/automation/regression/announcements', - tags: '@dme-announcements @regression @login @nopr', + path: '/channelpartners/drafts/automation/regression/announcements', + tags: '@dme-announcements @regression @anonymous', data: { - partnerLevel: 'cpp-spain-platinum:', + partnerPortal: 'CPP', + partnerLevel: 'Platinum', + permissionRegion: 'Europe West', announcementCardTitle: 'CPP Platinum Spain Announcement', + numberOfMatchingTitleCards: 1, }, }, { - tcid: '5', + tcid: '11', name: '@desc-regression-announcements-platinum-latin-america-na-based', - path: 'https://partners.stage.adobe.com/channelpartners/drafts/automation/regression/announcements', - tags: '@dme-announcements @regression @login @nopr', + path: '/channelpartners/drafts/automation/regression/announcements', + tags: '@dme-announcements @regression @anonymous', data: { - partnerLevel: 'cpp-latin-na-platinum:', + partnerPortal: 'CPP', + partnerLevel: 'Platinum', + permissionRegion: 'Latin America NA based', announcementCardTitle: 'CPP Platinum Latin America-North America based Announcement', + numberOfMatchingTitleCards: 1, }, }, { - tcid: '6', + tcid: '12', name: '@desc-regression-announcements-platinum-emea', - path: 'https://partners.stage.adobe.com/channelpartners/drafts/automation/regression/announcements', - tags: '@dme-announcements @regression @login @nopr', + path: '/channelpartners/drafts/automation/regression/announcements', + tags: '@dme-announcements @regression @anonymous', data: { - partnerLevel: 'cpp-emea-platinum:', - announcementCardTitle: '', + partnerPortal: 'CPP', + partnerLevel: 'Platinum', + permissionRegion: 'EMEA', + announcementCardTitle: 'CPP Platinum EMEA Announcement', + numberOfMatchingTitleCards: 1, }, }, { - tcid: '7', + tcid: '13', name: '@desc-regression-announcements-gold-latin-america', - path: 'https://partners.stage.adobe.com/channelpartners/drafts/automation/regression/announcements', - tags: '@dme-announcements @regression @login @nopr', + path: '/channelpartners/drafts/automation/regression/announcements', + tags: '@dme-announcements @regression @anonymous', data: { - partnerLevel: 'cpp-latin-america-gold:', + partnerPortal: 'CPP', + partnerLevel: 'Gold', + permissionRegion: 'Latin America', announcementCardTitle: 'CPP Gold Latin America Announcement', + numberOfMatchingTitleCards: 1, }, }, { - tcid: '8', + tcid: '13', name: '@desc-regression-announcements-gold-uk-europe-west', - path: 'https://partners.stage.adobe.com/channelpartners/drafts/automation/regression/announcements', - tags: '@dme-announcements @regression @login @nopr', + path: '/channelpartners/drafts/automation/regression/announcements', + tags: '@dme-announcements @regression @anonymous', data: { - partnerLevel: 'cpp-uk-gold:', - announcementCardTitle: '', + partnerPortal: 'CPP', + partnerLevel: 'Gold', + permissionRegion: 'United Kingdom%2CEurope West', + announcementCardTitle: 'CPP Gold UK, Europe West Announcement', + numberOfMatchingTitleCards: 1, }, }, { - tcid: '9', + tcid: '14', name: '@desc-regression-announcements-certified-europe-east', - path: 'https://partners.stage.adobe.com/channelpartners/drafts/automation/regression/announcements', - tags: '@dme-announcements @regression @login @nopr', + path: '/channelpartners/drafts/automation/regression/announcements', + tags: '@dme-announcements @regression @anonymous', data: { - partnerLevel: 'cpp-europe-east-certified:', + partnerPortal: 'CPP', + partnerLevel: 'Certified', + permissionRegion: 'Europe East', announcementCardTitle: 'CPP Certified Europe East Announcement', + numberOfMatchingTitleCards: 1, }, }, { - tcid: '10', + tcid: '15', name: '@desc-regression-announcements-certified-pacific', - path: 'https://partners.stage.adobe.com/channelpartners/drafts/automation/regression/announcements', - tags: '@dme-announcements @regression @login @nopr', + path: '/channelpartners/drafts/automation/regression/announcements', + tags: '@dme-announcements @regression @anonymous', data: { - partnerLevel: 'cpp-pacific-certified:', + partnerPortal: 'CPP', + partnerLevel: 'Certified', + permissionRegion: 'Pacific', announcementCardTitle: 'CPP Certified Pacific Announcement', + numberOfMatchingTitleCards: 1, }, }, { - tcid: '11', + tcid: '16', name: '@desc-regression-announcements-registered-china', - path: 'https://partners.stage.adobe.com/channelpartners/drafts/automation/regression/announcements', - tags: '@dme-announcements @regression @login @nopr', + path: '/channelpartners/drafts/automation/regression/announcements', + tags: '@dme-announcements @regression @anonymous', data: { - partnerLevel: 'cpp-china-registered:', + partnerPortal: 'CPP', + partnerLevel: 'Registered', + permissionRegion: 'China', announcementCardTitle: 'CPP Registered China Announcement', + numberOfMatchingTitleCards: 1, }, }, { - tcid: '12', + tcid: '17', name: '@desc-regression-announcements-registered-middle-east-and-africa', - path: 'https://partners.stage.adobe.com/channelpartners/drafts/automation/regression/announcements', - tags: '@dme-announcements @regression @login @nopr', + path: '/channelpartners/drafts/automation/regression/announcements', + tags: '@dme-announcements @regression @anonymous @kris', data: { - partnerLevel: 'cpp-mid-east-africa-registered:yugo-stage-cpp-registered-mid-east-africa@yopmail.com;', - announcementCardTitle: '', + partnerPortal: 'CPP', + partnerLevel: 'Registered', + permissionRegion: 'Middle East and Africa', + announcementCardTitle: 'CPP Registered Middle East & Africa Announcement', + numberOfMatchingTitleCards: 1, }, }, ], diff --git a/selectors/dme/announcements.page.js b/selectors/dme/announcements.page.js index 16c628d5..12817c85 100644 --- a/selectors/dme/announcements.page.js +++ b/selectors/dme/announcements.page.js @@ -4,6 +4,44 @@ export default class AnnouncementsPage { this.signInButton = page.locator('button[daa-ll="Sign In"].feds-signIn'); this.resultNumber = page.locator('.partner-cards-cards-results').nth(0); this.searchField = page.locator('.input'); + this.clearSearchSelector = page.locator('[aria-label="Reset"]'); + this.clearAllSelector = page.locator('[aria-label="Clear all"]'); this.firstCardTitle = page.locator('.card-title').nth(0); + this.firstCardDate = page.locator('.card-date').nth(0); + this.lastCardDate = page.locator('.card-date').nth(5); + this.sortBtn = page.locator('.sort-btn'); + this.oldestOption = page.getByRole('button', { name: 'oldest' }); + this.paginationText = page.locator('.pagination-total-results'); + this.loadMore = page.locator('[aria-label="Load more"]'); + this.cardCount = page.locator('.card-wrapper'); + this.pageCount = page.locator('.page-btn'); + this.readCard = page.locator('.card-btn'); + this.paginationPrevButton = page.locator('button.pagination-prev-btn'); + this.paginationNextButton = page.locator('button.pagination-next-btn'); + this.pageNumButton = page.locator('button.page-btn'); + } + + async clickPageNumButton(pageNum) { + await this.page.locator(`button[aria-label="Page ${pageNum}"]`).click(); + } + + async expandFilterOptions(filterSection) { + await this.page.locator(`[aria-label="${filterSection}"]`).click(); + } + + async clickFilterOptions(filterOption) { + await this.page.locator(`sp-checkbox:text-is("${filterOption}")`).click(); + } + + async clickDateFilterOptions(dateFilterOption) { + await this.page.locator(`button[aria-label="${dateFilterOption}"]`).click(); + } + + async clearSideBarFilterButton(filterButton) { + await this.page.locator(`[aria-label="${filterButton}"]`).click(); + } + + async clearFilter(filter, number) { + await this.page.locator(`[aria-label="${filter}"] + [aria-label="${number}"]`).click(); } } diff --git a/tests/dme/announcements.test.js b/tests/dme/announcements.test.js index 544490c1..06062124 100644 --- a/tests/dme/announcements.test.js +++ b/tests/dme/announcements.test.js @@ -1,37 +1,272 @@ import { test, expect } from '@playwright/test'; import AnnouncementsPage from '../../selectors/dme/announcements.page.js'; -import SignInPage from '../../selectors/dme/signin.page.js'; let announcementsPage; -let signInPage; const Announcements = require('../../features/dme/announcements.spec.js'); const { features } = Announcements; -const regionCases = features.slice(0, 12); +const regionCases = features.slice(6, 18); + +const chimeraApi = '**/chimera-api/collection?**'; test.describe('Validate announcements block', () => { test.beforeEach(async ({ page }) => { announcementsPage = new AnnouncementsPage(page); - signInPage = new SignInPage(page); + }); + + async function addCookie({ + partnerPortal, partnerLevel, permissionRegion, path, page, context, + }) { + await test.step('Sign in', async () => { + await context.addCookies([{ + name: 'partner_data', + value: `{"${partnerPortal}":{"company":"Company"%2C"firstName":"Name"%2C"lastName":"LastName"%2C"level":` + + `"${partnerLevel}"%2C"permissionRegion":"${permissionRegion}"%2C"status":"MEMBER"}}`, + url: `${path}`, + }]); + await page.reload(); + await page.waitForResponse(chimeraApi); + }); + } + + test(`${features[0].name},${features[0].tags}`, async ({ page, baseURL }) => { + const { data } = features[0]; + await test.step('Go to Announcements page', async () => { + await page.goto(`${baseURL}${features[0].path}`); + await announcementsPage.firstCardDate.waitFor({ state: 'visible', timeout: 15000 }); + const result = await announcementsPage.resultNumber.textContent(); + await expect(parseInt(result.split(' ')[0], 10)).toBe(data.numberOfPublicCards); + }); + + await test.step('Enter Automation regression announcements card worldwide no1 in search field', async () => { + await announcementsPage.searchField.fill('Automation regression announcements card worldwide no1'); + const result = await announcementsPage.resultNumber.textContent(); + await expect(parseInt(result.split(' ')[0], 10)).toBe(data.numberOfMatchingTitleCards); + }); + + await test.step('Clear search field on X', async () => { + await announcementsPage.clearSearchSelector.click(); + const result = await announcementsPage.resultNumber.textContent(); + await expect(parseInt(result.split(' ')[0], 10)).toBe(data.numberOfPublicCards); + }); + + await test.step('Enter Automation regression announcements card worldwide no2 in search field', async () => { + await announcementsPage.searchField.fill('Automation regression announcements card worldwide no2'); + const result = await announcementsPage.resultNumber.textContent(); + await expect(parseInt(result.split(' ')[0], 10)).toBe(data.numberOfMatchingTitleCards); + }); + + await test.step('Clear all', async () => { + await announcementsPage.clearAllSelector.click(); + const result = await announcementsPage.resultNumber.textContent(); + await expect(parseInt(result.split(' ')[0], 10)).toBe(data.numberOfPublicCards); + }); + + await test.step('Enter Automation regression in search field', async () => { + await announcementsPage.searchField.fill('Automation regression'); + const result = await announcementsPage.resultNumber.textContent(); + await expect(parseInt(result.split(' ')[0], 10)).toBe(data.numberOfMatchingDescCards); + }); + }); + + test(`${features[1].name},${features[1].tags}`, async ({ page, baseURL }) => { + const { data } = features[1]; + await test.step('Go to Announcements page', async () => { + await page.goto(`${baseURL}${features[1].path}`); + await announcementsPage.firstCardDate.waitFor({ state: 'visible', timeout: 15000 }); + const result = await announcementsPage.resultNumber.textContent(); + await expect(parseInt(result.split(' ')[0], 10)).toBe(data.numberOfPublicCards); + }); + + await test.step('Select Oldest sort option', async () => { + await announcementsPage.searchField.fill('Automation regression'); + const result = await announcementsPage.resultNumber.textContent(); + await expect(parseInt(result.split(' ')[0], 10)).toBe(data.numberOfMatchingDescCards); + await announcementsPage.sortBtn.click(); + await announcementsPage.oldestOption.click(); + const paginationText = await announcementsPage.paginationText.textContent(); + await expect(paginationText.toLowerCase()).toBe(data.firstLoadResult); + }); + + await test.step('Load more cards', async () => { + await announcementsPage.loadMore.click(); + let paginationText = await announcementsPage.paginationText.textContent(); + await expect(paginationText.toLowerCase()).toBe(data.secondLoadResult); + await announcementsPage.loadMore.click(); + paginationText = await announcementsPage.paginationText.textContent(); + await expect(paginationText.toLowerCase()).toBe(data.thirdLoadResult); + await expect(await announcementsPage.loadMore).not.toBeVisible(); + const firstCardDate = new Date(await announcementsPage.firstCardDate.textContent()).getTime(); + const lastCardDate = new Date(await announcementsPage.lastCardDate.textContent()).getTime(); + await expect(firstCardDate).toBeLessThan(lastCardDate); + await expect(await announcementsPage.cardCount.count()).toBe(data.numberOfMatchingDescCards); + }); + }); + + test(`${features[2].name},${features[2].tags}`, async ({ page, baseURL }) => { + const { data } = features[2]; + await test.step('Go to Announcements page', async () => { + await page.goto(`${baseURL}${features[2].path}`); + await announcementsPage.firstCardDate.waitFor({ state: 'visible', timeout: 15000 }); + const result = await announcementsPage.resultNumber.textContent(); + await expect(parseInt(result.split(' ')[0], 10)).toBe(data.numberOfPublicCards); + await announcementsPage.searchField.fill('Automation regression'); + const filteredCards = await announcementsPage.resultNumber.textContent(); + await expect(parseInt(filteredCards.split(' ')[0], 10)).toBe(data.numberOfMatchingDescCards); + }); + + await test.step('Verify pagination buttons', async () => { + let paginationText = await announcementsPage.paginationText.textContent(); + await expect(paginationText.toLowerCase()).toBe(data.firstPageResult); + const paginationPrevButton = await announcementsPage.paginationPrevButton; + await expect(paginationPrevButton).toHaveClass(/disabled/); + const paginationNextButton = await announcementsPage.paginationNextButton; + await expect(paginationNextButton).not.toHaveClass(/disabled/); + await expect(await announcementsPage.pageCount.count()).toBe(data.totalPageCount); + await announcementsPage.clickPageNumButton(data.pageButtonNumber); + paginationText = await announcementsPage.paginationText.textContent(); + await expect(paginationText.toLowerCase()).toBe(data.secondPageResult); + await expect(paginationPrevButton).not.toHaveClass(/disabled/); + await expect(paginationNextButton).not.toHaveClass(/disabled/); + await paginationNextButton.click(); + paginationText = await announcementsPage.paginationText.textContent(); + await expect(paginationText.toLowerCase()).toBe(data.thirdPageResult); + await expect(paginationPrevButton).not.toHaveClass(/disabled/); + await expect(paginationNextButton).toHaveClass(/disabled/); + }); + }); + + test(`${features[3].name},${features[3].tags}`, async ({ page, baseURL }) => { + const { data } = features[3]; + await test.step('Go to Announcements page', async () => { + await page.goto(`${baseURL}${features[3].path}`); + await announcementsPage.firstCardDate.waitFor({ state: 'visible', timeout: 10000 }); + const result = await announcementsPage.resultNumber.textContent(); + await expect(parseInt(result.split(' ')[0], 10)).toBe(data.numberOfPublicCards); + }); + + await test.step('Test audience filter', async () => { + await announcementsPage.expandFilterOptions(data.filterAudience); + await announcementsPage.clickFilterOptions(data.filterSales); + const resultAfterSalesFilterApplied = await announcementsPage.resultNumber.textContent(); + await expect(parseInt(resultAfterSalesFilterApplied.split(' ')[0], 10)).toBe(data.cardsWithSales); + await announcementsPage.clickFilterOptions(data.filterPracticeLead); + const resultAfterPracticeLeadFilterApplied = await announcementsPage.resultNumber.textContent(); + await expect(parseInt(resultAfterPracticeLeadFilterApplied.split(' ')[0], 10)).toBe(data.cardsWithSalesAndPracticeLead); + await announcementsPage.clearFilter(data.filterAudience, data.numberOfAudienceFiltersSelected); + const resultAfterClearingAudienceFilter = await announcementsPage.resultNumber.textContent(); + await expect(parseInt(resultAfterClearingAudienceFilter.split(' ')[0], 10)).toBe(data.numberOfPublicCards); + }); + + await test.step('Test marketing filter', async () => { + await announcementsPage.expandFilterOptions(data.filterMarketing); + await announcementsPage.clickFilterOptions(data.filterAdvertising); + await announcementsPage.clickFilterOptions(data.filterSolutions); + const resultAfterMarketingFilter = await announcementsPage.resultNumber.textContent(); + await expect(parseInt(resultAfterMarketingFilter.split(' ')[0], 10)).toBe(data.cardsWithAdvertisingAndSolutions); + await announcementsPage.clickFilterOptions(data.filterSolutions); + const resultAfterClearingFilter = await announcementsPage.resultNumber.textContent(); + await expect(parseInt(resultAfterClearingFilter.split(' ')[0], 10)).toBe(data.cardsWithAdvertising); + await announcementsPage.clearSideBarFilterButton(data.filterAdvertising); + const resultAfterClearingAllFilters = await announcementsPage.resultNumber.textContent(); + await expect(parseInt(resultAfterClearingAllFilters.split(' ')[0], 10)).toBe(data.numberOfPublicCards); + }); + + await test.step('Test different filter combinations', async () => { + await announcementsPage.clickFilterOptions(data.filterProduct); + const resultAfterProductFilter = await announcementsPage.resultNumber.textContent(); + await expect(parseInt(resultAfterProductFilter.split(' ')[0], 10)).toBe(data.cardsWithProduct); + await announcementsPage.clickFilterOptions(data.filterSales); + const resultAfterSalesFilters = await announcementsPage.resultNumber.textContent(); + await expect(parseInt(resultAfterSalesFilters.split(' ')[0], 10)).toBe(data.cardsWithSales); + await announcementsPage.clearAllSelector.click(); + const resultAfterClearingAllFilters = await announcementsPage.resultNumber.textContent(); + await expect(parseInt(resultAfterClearingAllFilters.split(' ')[0], 10)).toBe(data.numberOfPublicCards); + }); + + await test.step('Test date filter', async () => { + await announcementsPage.expandFilterOptions(data.filterDate); + await announcementsPage.clickDateFilterOptions(data.filterLastNinetyDays); + const resultAfterDateFilter = await announcementsPage.resultNumber.textContent(); + await expect(parseInt(resultAfterDateFilter.split(' ')[0], 10)).toBe(data.cardsWithLastNinetyDays); + const firstCardTitle = await announcementsPage.firstCardTitle.textContent(); + await expect(firstCardTitle).toBe(data.titleOfDateFilteredCard); + }); + }); + + test(`${features[4].name},${features[4].tags}`, async ({ page, baseURL }) => { + const { data } = features[4]; + await test.step('Go to Announcements page', async () => { + await page.goto(`${baseURL}${features[4].path}`); + await announcementsPage.searchField.fill(data.searchCardTitle); + await announcementsPage.firstCardTitle.waitFor({ state: 'visible', timeout: 10000 }); + const resultAfterSearch = await announcementsPage.resultNumber.textContent(); + await expect(parseInt(resultAfterSearch.split(' ')[0], 10)).toBe(data.numberOfMatchingTitleCards); + }); + + await test.step('Read now', async () => { + await announcementsPage.readCard.click(); + const pages = await page.context().pages(); + await expect(pages[0].url()) + .toContain(data.expectedToSeeInURL); + }); + }); + + test(`${features[5].name},${features[5].tags}`, async ({ page, baseURL }) => { + const { data } = features[5]; + await test.step('Go to Announcements page', async () => { + await page.goto(`${baseURL}${features[5].path}`); + await announcementsPage.firstCardDate.waitFor({ state: 'visible', timeout: 15000 }); + const result = await announcementsPage.resultNumber.textContent(); + await expect(parseInt(result.split(' ')[0], 10)).toBe(data.numberOfPublicCards); + }); + + await test.step('Edge cases search bar', async () => { + await announcementsPage.searchField.fill(data.specialCharsTitleSearch); + const resultSpecialCharsCard = await announcementsPage.resultNumber.textContent(); + await expect(parseInt(resultSpecialCharsCard.split(' ')[0], 10)).toBe(data.cardsWithSpecialChars); + await announcementsPage.searchField.fill(data.dateInPastTitleSearch); + const resultDateInPastCard = await announcementsPage.resultNumber.textContent(); + await expect(parseInt(resultDateInPastCard.split(' ')[0], 10)).toBe(data.cardsWithDateInPast); + await announcementsPage.searchField.fill(data.eventEndedTitleSearch); + const resultEventEndedCard = await announcementsPage.resultNumber.textContent(); + await expect(parseInt(resultEventEndedCard.split(' ')[0], 10)).toBe(data.cardsWithEventEnded); + await announcementsPage.searchField.fill(data.tooLongTitleSearch); + const resultWorldwideLongTitleCard = await announcementsPage.resultNumber.textContent(); + await expect(parseInt(resultWorldwideLongTitleCard.split(' ')[0], 10)).toBe(data.cardsWithTooLongTitle); + await announcementsPage.searchField.fill(data.noCollectionTagTitleSearch); + const resultWithoutCollectionTagCard = await announcementsPage.resultNumber.textContent(); + await expect(parseInt(resultWithoutCollectionTagCard.split(' ')[0], 10)).toBe(data.cardsWithoutCollectionTag); + await announcementsPage.clearAllSelector.click(); + const firstCardTitle = await announcementsPage.firstCardTitle; + await expect(firstCardTitle).toBeEmpty(); + await announcementsPage.searchField.fill(data.noTitleSearch); + const resultWithoutTitleCard = await announcementsPage.resultNumber.textContent(); + await expect(parseInt(resultWithoutTitleCard.split(' ')[0], 10)).toBe(data.cardsWithoutTitle); + }); }); regionCases.forEach((feature) => { - test(`${feature.name},${feature.tags}`, async ({ page }) => { + test(`${feature.name},${feature.tags}`, async ({ page, context, baseURL }) => { await test.step('Go to Announcements page', async () => { - await page.goto(`${feature.path}`); + await page.goto(`${baseURL}${feature.path}`); await page.waitForLoadState('domcontentloaded'); - await announcementsPage.signInButton.click(); }); - await test.step('Sign in', async () => { - await signInPage.signIn(page, `${feature.data.partnerLevel}`); + await addCookie({ + partnerPortal: `${feature.data.partnerPortal}`, + partnerLevel: `${feature.data.partnerLevel}`, + permissionRegion: `${feature.data.permissionRegion}`, + path: `${baseURL}${feature.path}`, + page, + context, }); await test.step(`Verify card titled ${feature.data.announcementCardTitle} is present on page`, async () => { await announcementsPage.searchField.fill(`${feature.data.announcementCardTitle}`); - await announcementsPage.firstCardTitle.waitFor({ state: 'visible', timeout: 10000 }); + await announcementsPage.firstCardTitle.waitFor({ state: 'visible', timeout: 15000 }); const result = await announcementsPage.resultNumber.textContent(); - await expect(parseInt(result.split(' ')[0], 10)).toBe(1); + await expect(parseInt(result.split(' ')[0], 10)).toBe(feature.data.numberOfMatchingTitleCards); }); }); }); From 49f500640326e276dc25a0d6b41de71629023242 Mon Sep 17 00:00:00 2001 From: Kristijan Vizi Date: Fri, 2 Aug 2024 15:35:41 +0200 Subject: [PATCH 4/5] Refactor: extracted addCookie function --- selectors/dme/signin.page.js | 10 ++++++++++ tests/dme/announcements.test.js | 35 ++++++++++++--------------------- 2 files changed, 23 insertions(+), 22 deletions(-) diff --git a/selectors/dme/signin.page.js b/selectors/dme/signin.page.js index f92b5ef7..384df3c2 100644 --- a/selectors/dme/signin.page.js +++ b/selectors/dme/signin.page.js @@ -39,4 +39,14 @@ export default class SignInPage { await expect(pages[1].url()) .toContain(`${expectedToSeeInURL}`); } + + async addCookie(partnerPortal, partnerLevel, permissionRegion, page, context) { + this.context = context; + await this.context.addCookies([{ + name: 'partner_data', + value: `{"${partnerPortal}":{"company":"Company"%2C"firstName":"Name"%2C"lastName":"LastName"%2C"level":` + + `"${partnerLevel}"%2C"permissionRegion":"${permissionRegion}"%2C"status":"MEMBER"}}`, + url: `${page}`, + }]); + } } diff --git a/tests/dme/announcements.test.js b/tests/dme/announcements.test.js index 06062124..7867dc39 100644 --- a/tests/dme/announcements.test.js +++ b/tests/dme/announcements.test.js @@ -1,7 +1,9 @@ import { test, expect } from '@playwright/test'; import AnnouncementsPage from '../../selectors/dme/announcements.page.js'; +import SignInPage from '../../selectors/dme/signin.page.js'; let announcementsPage; +let singInPage; const Announcements = require('../../features/dme/announcements.spec.js'); const { features } = Announcements; @@ -12,23 +14,9 @@ const chimeraApi = '**/chimera-api/collection?**'; test.describe('Validate announcements block', () => { test.beforeEach(async ({ page }) => { announcementsPage = new AnnouncementsPage(page); + singInPage = new SignInPage(page); }); - async function addCookie({ - partnerPortal, partnerLevel, permissionRegion, path, page, context, - }) { - await test.step('Sign in', async () => { - await context.addCookies([{ - name: 'partner_data', - value: `{"${partnerPortal}":{"company":"Company"%2C"firstName":"Name"%2C"lastName":"LastName"%2C"level":` - + `"${partnerLevel}"%2C"permissionRegion":"${permissionRegion}"%2C"status":"MEMBER"}}`, - url: `${path}`, - }]); - await page.reload(); - await page.waitForResponse(chimeraApi); - }); - } - test(`${features[0].name},${features[0].tags}`, async ({ page, baseURL }) => { const { data } = features[0]; await test.step('Go to Announcements page', async () => { @@ -253,13 +241,16 @@ test.describe('Validate announcements block', () => { await page.waitForLoadState('domcontentloaded'); }); - await addCookie({ - partnerPortal: `${feature.data.partnerPortal}`, - partnerLevel: `${feature.data.partnerLevel}`, - permissionRegion: `${feature.data.permissionRegion}`, - path: `${baseURL}${feature.path}`, - page, - context, + await test.step('Sign in', async () => { + await singInPage.addCookie( + feature.data.partnerPortal, + feature.data.partnerLevel, + feature.data.permissionRegion, + `${baseURL}${feature.path}`, + context, + ); + await page.reload(); + await page.waitForResponse(chimeraApi); }); await test.step(`Verify card titled ${feature.data.announcementCardTitle} is present on page`, async () => { From b47da35bf4ebf2740310c3bad1264c7718a0b8ca Mon Sep 17 00:00:00 2001 From: Kristijan Vizi Date: Fri, 2 Aug 2024 15:43:17 +0200 Subject: [PATCH 5/5] Fix: removed remaining hardcoded strings --- features/dme/announcements.spec.js | 5 +++++ tests/dme/announcements.test.js | 10 +++++----- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/features/dme/announcements.spec.js b/features/dme/announcements.spec.js index 7304937e..ab2084e8 100644 --- a/features/dme/announcements.spec.js +++ b/features/dme/announcements.spec.js @@ -10,6 +10,9 @@ module.exports = { numberOfPublicCards: 7, numberOfMatchingDescCards: 6, numberOfMatchingTitleCards: 1, + firstCardTitle: 'Automation regression announcements card worldwide no1', + secondCardTitle: 'Automation regression announcements card worldwide no2', + searchCards: 'Automation regression', }, }, { @@ -20,6 +23,7 @@ module.exports = { data: { numberOfPublicCards: 7, numberOfMatchingDescCards: 6, + searchCards: 'Automation regression', firstLoadResult: '2 of 6 results', secondLoadResult: '4 of 6 results', thirdLoadResult: '6 of 6 results', @@ -33,6 +37,7 @@ module.exports = { data: { numberOfPublicCards: 7, numberOfMatchingDescCards: 6, + searchCards: 'Automation regression', firstPageResult: '1 - 2 of 6 results', secondPageResult: '3 - 4 of 6 results', thirdPageResult: '5 - 6 of 6 results', diff --git a/tests/dme/announcements.test.js b/tests/dme/announcements.test.js index 7867dc39..34a8782c 100644 --- a/tests/dme/announcements.test.js +++ b/tests/dme/announcements.test.js @@ -27,7 +27,7 @@ test.describe('Validate announcements block', () => { }); await test.step('Enter Automation regression announcements card worldwide no1 in search field', async () => { - await announcementsPage.searchField.fill('Automation regression announcements card worldwide no1'); + await announcementsPage.searchField.fill(data.firstCardTitle); const result = await announcementsPage.resultNumber.textContent(); await expect(parseInt(result.split(' ')[0], 10)).toBe(data.numberOfMatchingTitleCards); }); @@ -39,7 +39,7 @@ test.describe('Validate announcements block', () => { }); await test.step('Enter Automation regression announcements card worldwide no2 in search field', async () => { - await announcementsPage.searchField.fill('Automation regression announcements card worldwide no2'); + await announcementsPage.searchField.fill(data.secondCardTitle); const result = await announcementsPage.resultNumber.textContent(); await expect(parseInt(result.split(' ')[0], 10)).toBe(data.numberOfMatchingTitleCards); }); @@ -51,7 +51,7 @@ test.describe('Validate announcements block', () => { }); await test.step('Enter Automation regression in search field', async () => { - await announcementsPage.searchField.fill('Automation regression'); + await announcementsPage.searchField.fill(data.searchCards); const result = await announcementsPage.resultNumber.textContent(); await expect(parseInt(result.split(' ')[0], 10)).toBe(data.numberOfMatchingDescCards); }); @@ -67,7 +67,7 @@ test.describe('Validate announcements block', () => { }); await test.step('Select Oldest sort option', async () => { - await announcementsPage.searchField.fill('Automation regression'); + await announcementsPage.searchField.fill(data.searchCards); const result = await announcementsPage.resultNumber.textContent(); await expect(parseInt(result.split(' ')[0], 10)).toBe(data.numberOfMatchingDescCards); await announcementsPage.sortBtn.click(); @@ -98,7 +98,7 @@ test.describe('Validate announcements block', () => { await announcementsPage.firstCardDate.waitFor({ state: 'visible', timeout: 15000 }); const result = await announcementsPage.resultNumber.textContent(); await expect(parseInt(result.split(' ')[0], 10)).toBe(data.numberOfPublicCards); - await announcementsPage.searchField.fill('Automation regression'); + await announcementsPage.searchField.fill(data.searchCards); const filteredCards = await announcementsPage.resultNumber.textContent(); await expect(parseInt(filteredCards.split(' ')[0], 10)).toBe(data.numberOfMatchingDescCards); });