From 61930543e8e7b589b1b938a5a4343a46f6cd52e6 Mon Sep 17 00:00:00 2001 From: Georgi Parlakov Date: Wed, 10 Jul 2024 18:19:44 +0300 Subject: [PATCH] chore: add admin campaign applications - add a login fixture - add a test that verifies the current admin list of campaign applications --- .env.local.example | 2 ++ e2e/playwright.config.ts | 3 +- .../campaign-application-create.spec.ts | 10 +++++++ e2e/utils/fixtures.ts | 30 +++++++++++++++++++ 4 files changed, 43 insertions(+), 2 deletions(-) create mode 100644 e2e/tests/regression/campaign-application/campaign-application-create.spec.ts create mode 100644 e2e/utils/fixtures.ts diff --git a/.env.local.example b/.env.local.example index 8ec1a117f..51d784173 100644 --- a/.env.local.example +++ b/.env.local.example @@ -43,3 +43,5 @@ PAYPAL_CLIENT_ID=sb ########### GHOST_API_URL=https://blog.podkrepi.bg GHOST_CONTENT_KEY=86ec17c4b9660acd66b6034682 +PODKREPI_EMAIL=admin@podkrepi.bg +PODKREPI_PASSWORD=$ecurePa33 diff --git a/e2e/playwright.config.ts b/e2e/playwright.config.ts index eecc2447e..6db6b0987 100644 --- a/e2e/playwright.config.ts +++ b/e2e/playwright.config.ts @@ -2,12 +2,11 @@ import type { PlaywrightTestConfig } from '@playwright/test' import path from 'path' const e2eReportsFolder = path.resolve(__dirname, 'e2e-reports') - /** * See https://playwright.dev/docs/test-configuration */ -const config: PlaywrightTestConfig = { +const config: PlaywrightTestConfig<{e2eReportsFolder: string, storageFile: string}> = { name: 'Podkrepi.bg E2E tests', testDir: './tests', /* Maximum time one test can run for. */ diff --git a/e2e/tests/regression/campaign-application/campaign-application-create.spec.ts b/e2e/tests/regression/campaign-application/campaign-application-create.spec.ts new file mode 100644 index 000000000..b75ffa4e9 --- /dev/null +++ b/e2e/tests/regression/campaign-application/campaign-application-create.spec.ts @@ -0,0 +1,10 @@ +import { test, expect } from '../../../utils/fixtures' + +test.describe('Create campaign application', () => { + test('should see list of applications', async ({ page, baseURL }) => { + await page.goto(`${baseURL}/admin/campaign-applications`) + + await expect(page.getByRole('heading')).toHaveText('Кандидат Кампании') + await expect(page.getByRole('row')).toHaveCount(6); // title plus 5 rows + }) +}) diff --git a/e2e/utils/fixtures.ts b/e2e/utils/fixtures.ts new file mode 100644 index 000000000..18abae170 --- /dev/null +++ b/e2e/utils/fixtures.ts @@ -0,0 +1,30 @@ +import { test as base } from '@playwright/test' +import dotenv from 'dotenv' + +dotenv.config({path: '../.env.local'}) +dotenv.config({path: '../.env'}) + +const email = process.env.PODKREPI_EMAIL! +const password = process.env.PODKREPI_PASSWORD! + +export const test = base.extend({ + storageState: async ({ browser, baseURL }, use) => { + const page = await browser.newPage() + await page.goto(`${baseURL}/login`) + + await page.locator('[name=email]').fill(email) + await page.locator('[name=password]').fill(password) + + await page.locator('[type=submit]').click() + await page.waitForURL((url) => !url.pathname.includes('login')) + + const state = await page.context().storageState() + + await page.close() + + use(state) + }, +}) + +/** export the expect for consistency i.e. to be able to do `import { test, expect } from '../utils/fixtures'` */ +export { expect } from 'playwright/test'