From 35a8d908529bcbadbb827706f1d8c075a2c95eef Mon Sep 17 00:00:00 2001 From: Aleksey Sabilin Date: Tue, 14 Jul 2026 23:34:49 +0300 Subject: [PATCH] docs: Playwright E2E gate (mock CI + IFT smoke) for FrontAdmin --- EventHubFrontAdminSpec.md | 10 +++++++++- WORKFLOW.md | 12 +++++++++++- 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/EventHubFrontAdminSpec.md b/EventHubFrontAdminSpec.md index 6f58b4e..1de5871 100644 --- a/EventHubFrontAdminSpec.md +++ b/EventHubFrontAdminSpec.md @@ -209,4 +209,12 @@ - Traefik маршрутизирует домен `admin-ui.stage.eventhub.local` на контейнер. - Nginx внутри контейнера раздаёт статику и проксирует API-запросы (`/v1/` → `http://eventhub:8445`, `/admin/ws` → `http://eventhub:8446`), что позволяет избежать проблем с CORS и самоподписанными сертификатами. - WebSocket также проксируется через Nginx. -- Makefile автоматизирует установку, сборку, запуск и очистку проекта. \ No newline at end of file +- Makefile автоматизирует установку, сборку, запуск и очистку проекта. + +## 8. E2E (Playwright) + +- Каркас: `playwright.config.ts`, каталог `e2e/`. +- Контракт селекторов: `e2e/TESTIDS.md` (`data-testid` + a11y). +- **Mock-suite** (`npm run test:e2e`): в CI после lint/build; route-моки `**/v1/admin/**`. +- **IFT smoke** (`npm run test:e2e:ift`): login → shell → logout против IFT; secrets `E2E_ADMIN_*`; workflow `e2e-ift.yml` после Deploy IFT. +- Coverage (mock): auth/roles, shell, inbox reports/tickets, reports/reviews CRUD-пути, explore users/calendars/events/subscriptions, banned-words, admins/audit/monitoring/profile, i18n. \ No newline at end of file diff --git a/WORKFLOW.md b/WORKFLOW.md index 889749f..3d19d36 100644 --- a/WORKFLOW.md +++ b/WORKFLOW.md @@ -51,9 +51,11 @@ | Репозиторий | Минимум | |-------------|---------| | EventHubBack | `make test` / `make eunit` / целевые API-тесты (см. §2.1 WSL) | -| EventHubFrontAdmin | `npm run lint`, `npm run build` | +| EventHubFrontAdmin | `npm run lint`, `npm run build`, **`npm run test:e2e`** (Playwright mock-suite) | | EventHubSpec | ревью текста, ссылки на код | +IFT smoke Admin UI (живой API после деплоя): `npm run test:e2e:ift` / workflow `e2e-ift.yml` — secrets `E2E_ADMIN_EMAIL`, `E2E_ADMIN_PASSWORD` (+ опц. `E2E_IFT_BASE_URL`). Контракт селекторов: `EventHubFrontAdmin/e2e/TESTIDS.md`. + --- ## 2.1. Локальная разработка (WSL) @@ -195,6 +197,12 @@ Issue: https://git.sabilin.com/EventHub/EventHubBack/issues/24 IFT и stage крутят **одну и ту же** сборку `sha-*`. Product version из `VERSION` на деплой не влияет. +### E2E Admin UI (Playwright) + +- **CI / PR:** `npm run test:e2e` — Chromium, API-моки (`e2e/mocks`), project `mock`. +- **IFT smoke:** после успешного Deploy IFT — workflow `e2e-ift.yml` → `npm run test:e2e:ift` (без моков). Secrets: `E2E_ADMIN_EMAIL`, `E2E_ADMIN_PASSWORD`, опц. `E2E_IFT_BASE_URL`. +- Селекторы: `data-testid` + a11y; контракт в `EventHubFrontAdmin/e2e/TESTIDS.md`. + --- ## 4. Расширение правил @@ -220,6 +228,7 @@ IFT и stage крутят **одну и ту же** сборку `sha-*`. Produc - **Git commit/push — через WSL** (`~/.cursor/eventhub/git-commit.sh`, `git-push.sh`); **push — только после подтверждения пользователя** (см. §2.1). - Новая задача — **отдельный чат** с брифом по §5. - **Версии/деплой:** product = `VERSION` (`MAJOR.MINOR`); IFT+stage = `sha-*` (+ floating `:ift`/`:stage`); без ручных stage-тегов и без patch++ на каждый push (см. §6). +- **FrontAdmin E2E:** mock-suite обязателен в CI; IFT smoke — после Deploy IFT (`e2e-ift.yml`, secrets `E2E_ADMIN_*`). --- @@ -227,6 +236,7 @@ IFT и stage крутят **одну и ту же** сборку `sha-*`. Produc | Дата | Изменение | |------|-----------| +| 2026-07-14 | §6 + gate: Playwright E2E (mock CI + IFT smoke secrets) | | 2026-07-14 | §6: VERSION MAJOR.MINOR + auto stage по sha после CI | | 2026-07-07 | Git-скрипты Agent перенесены в `~/.cursor/eventhub/` (не в репозиториях) | | 2026-07-07 | §5: шаблон передачи контекста в новый чат |