840f06e68e
Stage деплоится только после полного UI-сьюта на IFT; после stage — E2E на stage (ift-ui/stage-ui + smoke). Co-authored-by: Cursor <cursoragent@cursor.com>
1.9 KiB
1.9 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: полный UI-сьют на живом SPA + smoke API |
npm run test:e2e:stage |
stage: полный UI-сьют на живом SPA + 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 / e2e-stage.yml читают те же ключи по SSH с /opt/eventhub-{ift,stage}/.env. Опц. secrets E2E_IFT_BASE_URL, E2E_STAGE_BASE_URL.