1.8 KiB
1.8 KiB
E2E testid contract (EventHubFrontAdmin)
Селекторы: data-testid + a11y (getByRole / getByLabel) где имя стабильно.
Naming
| Pattern | Example |
|---|---|
page-{name} |
page-login, page-users, page-inbox-reports |
nav-{slug} |
nav-users |
row-{id} |
dense list / DataTable rows |
row-activate-{id} |
dense list main click target |
{entity}-row-{id} |
inbox-specific (report-row-*) |
btn-{action} |
btn-login, btn-save-profile |
dialog-{name} |
dialog-edit-user |
filter-{name} |
filter-users-search |
menu-user / lang-ru |
avatar dropdown |
Helper: src/lib/testid.ts.
Rules
- kebab-case; dynamic id = API entity id (or banned word)
- Prefer a11y for login fields
- Do not decorate decorative wrappers
Запуск
| Команда | Назначение |
|---|---|
npm run test:e2e |
mock-suite (CI / PR), API через Playwright route |
npm run test:e2e:ift |
IFT smoke (живой API), см. ниже |
IFT / stage учётки
Источник истины — env стенда (EventHubDevOps/ift/.env, EventHubDevOps/stage/.env → на хосте /opt/eventhub-{ift,stage}/.env):
| Переменная | Назначение |
|---|---|
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.