fix(admin): IFT smoke credentials from stand .env via SSH. Refs EventHub/EventHubFrontAdmin#33 #39
This commit is contained in:
+10
-7
@@ -31,12 +31,15 @@ Helper: `src/lib/testid.ts`.
|
||||
| `npm run test:e2e` | mock-suite (CI / PR), API через Playwright route |
|
||||
| `npm run test:e2e:ift` | IFT smoke (живой API), см. ниже |
|
||||
|
||||
### IFT secrets (Gitea → Settings → Secrets)
|
||||
### IFT / stage учётки
|
||||
|
||||
| Secret | Обязателен | Назначение |
|
||||
|--------|------------|------------|
|
||||
| `E2E_ADMIN_EMAIL` | да | логин smoke-админа на IFT |
|
||||
| `E2E_ADMIN_PASSWORD` | да | пароль |
|
||||
| `E2E_IFT_BASE_URL` | нет | default `https://admin-ui.ift.eventhub.local` |
|
||||
Источник истины — env стенда (`EventHubDevOps/ift/.env`, `EventHubDevOps/stage/.env` → на хосте `/opt/eventhub-{ift,stage}/.env`):
|
||||
|
||||
Workflow `e2e-ift.yml` стартует после успешного `Deploy IFT (admin)`.
|
||||
| Переменная | Назначение |
|
||||
|------------|------------|
|
||||
| `SMOKE_ADMIN_EMAIL` / `SMOKE_ADMIN_PASSWORD` | предпочтительно для smoke/E2E |
|
||||
| `ADMIN_SUPER_EMAIL` / `ADMIN_SUPER_PASSWORD` | fallback, если `SMOKE_ADMIN_*` пустые |
|
||||
|
||||
Локально: `set -a && source /path/to/ift/.env && set +a && npm run test:e2e:ift`.
|
||||
|
||||
Workflow `e2e-ift.yml` после Deploy IFT читает те же ключи по SSH с `/opt/eventhub-ift/.env` (нужны уже имеющиеся `IFT_SSH_*`). Опц. secret `E2E_IFT_BASE_URL`.
|
||||
|
||||
@@ -1,16 +1,29 @@
|
||||
import { test, expect } from '@playwright/test';
|
||||
|
||||
/**
|
||||
* IFT smoke — заполняется секретами E2E_ADMIN_EMAIL / E2E_ADMIN_PASSWORD.
|
||||
* Запуск: `npm run test:e2e:ift` (без моков).
|
||||
* 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(!process.env.E2E_ADMIN_EMAIL || !process.env.E2E_ADMIN_PASSWORD, 'E2E_ADMIN_* secrets required');
|
||||
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(process.env.E2E_ADMIN_EMAIL!);
|
||||
await page.getByLabel(/пароль|password/i).fill(process.env.E2E_ADMIN_PASSWORD!);
|
||||
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();
|
||||
|
||||
Reference in New Issue
Block a user