import { test, expect } from '@playwright/test'; /** * IFT smoke — учётки из DevOps env (`EventHubDevOps/ift/.env`): * `SMOKE_ADMIN_EMAIL` / `SMOKE_ADMIN_PASSWORD` (fallback `ADMIN_SUPER_*`). * Локально: `set -a && source …/.env && set +a && npm run test:e2e:ift` */ function smokeEmail(): string | undefined { return process.env.SMOKE_ADMIN_EMAIL || process.env.ADMIN_SUPER_EMAIL || process.env.E2E_ADMIN_EMAIL; } function smokePassword(): string | undefined { return ( process.env.SMOKE_ADMIN_PASSWORD || process.env.ADMIN_SUPER_PASSWORD || process.env.E2E_ADMIN_PASSWORD ); } test.describe('IFT smoke', () => { test.skip(!smokeEmail() || !smokePassword(), 'SMOKE_ADMIN_* (или ADMIN_SUPER_*) из IFT/stage .env required'); test('login → dashboard → logout', async ({ page }) => { await page.goto('/login'); await page.getByLabel(/email/i).fill(smokeEmail()!); await page.getByLabel(/пароль|password/i).fill(smokePassword()!); await page.getByTestId('btn-login').click(); await expect(page.getByTestId('layout-shell')).toBeVisible({ timeout: 30_000 }); await page.getByTestId('menu-user').click(); await page.getByTestId('btn-logout').click(); await expect(page.getByTestId('page-login')).toBeVisible(); }); });