From b8464be5bfcf5dfd8ee30a9a0d8473e941e099e2 Mon Sep 17 00:00:00 2001 From: Alex Velichko Date: Sun, 24 Dec 2023 14:47:30 +0300 Subject: [PATCH] TESTS-23: feat(tests): done Export vacancies tests (#4253) --- .../tests/model/recruiting/vacancies-page.ts | 30 +++++++++++++++++++ .../sanity/tests/recruiting/vacancies.spec.ts | 9 ++++++ 2 files changed, 39 insertions(+) diff --git a/tests/sanity/tests/model/recruiting/vacancies-page.ts b/tests/sanity/tests/model/recruiting/vacancies-page.ts index 56d91e639b..7d6e6b4f8c 100644 --- a/tests/sanity/tests/model/recruiting/vacancies-page.ts +++ b/tests/sanity/tests/model/recruiting/vacancies-page.ts @@ -11,6 +11,7 @@ export class VacanciesPage extends CommonRecruitingPage { readonly inputCreateVacancyDescription: Locator readonly buttonCreateVacancyLocation: Locator readonly buttonCreateVacancy: Locator + readonly buttonExport: Locator constructor (page: Page) { super(page) @@ -24,6 +25,7 @@ export class VacanciesPage extends CommonRecruitingPage { hasText: 'Location' }) this.buttonCreateVacancy = page.locator('form[id="recruit:string:CreateVacancy"] button[type="submit"]') + this.buttonExport = page.locator('button[type="button"] > span', { hasText: 'Export' }) } async createNewVacancy ({ title, description, location }: NewVacancy): Promise { @@ -65,4 +67,32 @@ export class VacanciesPage extends CommonRecruitingPage { async checkVacancyExist (vacancyName: string, message: string): Promise { await expect(this.page.locator('tr', { hasText: vacancyName }), message).toHaveCount(1) } + + async selectAll (): Promise { + const count = await this.page.locator('tr[class*="row"]').count() + for (let i = 0; i < count; i++) { + await this.page.locator('tr[class*="row"] td:first-child > div').nth(i).click() + } + } + + async exportVacanciesWithCheck (textToCheck: string): Promise { + const downloadPromise = this.page.waitForEvent('download') + await this.buttonExport.click() + const download = await downloadPromise + + const chunks: string[] = [] + const readable = await download.createReadStream() + + readable.on('readable', () => { + let chunk + while ((chunk = readable.read()) !== null) { + chunks.push(chunk) + } + }) + + readable.on('end', () => { + const content = chunks.join('') + expect(content).toContain(textToCheck) + }) + } } diff --git a/tests/sanity/tests/recruiting/vacancies.spec.ts b/tests/sanity/tests/recruiting/vacancies.spec.ts index 8f06f7e72b..2f8104c88e 100644 --- a/tests/sanity/tests/recruiting/vacancies.spec.ts +++ b/tests/sanity/tests/recruiting/vacancies.spec.ts @@ -141,4 +141,13 @@ test.describe('Vacancy tests', () => { `Archieved vacancy "${vacancyName}" not visible when hide archved back on.` ) }) + + test('Export vacancies', async ({ page }) => { + const navigationMenuPage = new NavigationMenuPage(page) + await navigationMenuPage.buttonVacancies.click() + + const vacanciesPage = new VacanciesPage(page) + await vacanciesPage.selectAll() + await vacanciesPage.exportVacanciesWithCheck('Software Engineer') + }) })