Appearance
QA-сценарии
Последняя сверка с кодом: 2026-06-06
Pre по умолчанию:npm run dev, seeddev@local.test/dev123456, событиеdemo-event
Формат: ID · роль · шаги · ожидание
Auth
QA-001 Регистрация (happy)
Роль: новый пользователь
Steps: Лендинг → «Регистрация» → email, имя, пароль (×2) → submit
Expected: Модалка закрыта, session есть, redirect /account или на redirect param
QA-002 Login (happy)
Роль: существующий
Steps: AuthModal login → dev@local.test / dev123456
Expected: /account или текущая страница с доступом
QA-003 Logout
Роль: залогинен
Steps: Header «Выйти»
Expected: Session null, landing, «Мои события» → login modal
QA-004 /account без auth
Роль: GUEST
Steps: Открыть /account
Expected: Redirect / + AuthModal, нет белого экрана
QA-005 Forgot password (dev)
Роль: any
Steps: Forgot → email → (письmo Zoho SMTP или лог бэка)
Expected: UI «письмо отправлено»; link /reset-password?token= открывает reset в модалке
QA-006 Profile: смена имени
Роль: logged in
Steps: /profile → изменить имя → save
Expected: Toast OK, имя в header/sidebar
QA-007 Profile: revoke other sessions
Роль: 2 браузера
Steps: Browser A login → Browser B login → A: «Выйти на других устройствах»
Expected: B разлогинен, A остаётся
QA-008 Legacy URL /login
Steps: /login?redirect=/account
Expected: /?auth=login → модалка → после входа /account
События
QA-009 Создание события
Роль: OWNER logged in
Steps: Лендинг → форма «Создать альбом» → title → submit
Expected: 201, redirect /:id/share, событие в /account
QA-010 Создание без auth
Роль: GUEST
Steps: «Создать» на лендинге
Expected: AuthModal, событие не создано до login
QA-011 Открыть demo-event
Роль: GUEST
Steps: /demo-event
Expected: Альбом загружается, сетка (может быть пустой)
QA-012 Share page
Steps: /demo-event/share
Expected: QR, ссылки album/wall/admin
QA-013 Несуществующее событие
Steps: /nonexistent-id-xyz
Expected: UiPageError not-found
Upload / TUS
QA-014 Upload фото (guest)
Роль: GUEST, qrAccess=ALL
Steps: /demo-event → upload jpg
Expected: Progress → thumb в сетке, без duplicate error
QA-015 Duplicate file
Steps: Upload тот же файл (hash) второй раз
Expected: Toast DUPLICATE_MEDIA
QA-016 Guest name
Steps: Upload без имени в localStorage
Expected: GuestNameModal → имя сохраняется
QA-017 uploadEnabled=false
Pre: OWNER выключил upload в settings
Expected: Upload UI disabled / TUS 403
Альбом / Wall
QA-018 Lightbox
Steps: Tap на media card
Expected: PhotoSwipe, swipe, close
QA-019 Like
Pre: logged in
Steps: Like на карточке
Expected: Counter +1, likedByMe
QA-020 Like без auth
Role: GUEST
Expected: Login prompt или disabled (по UI)
QA-021 Wall fullscreen
Steps: /demo-event/wall
Expected: Slideshow, без site header, новые фото через SSE
QA-022 SSE reconnect
Steps: Wall open → upload с телефона
Expected: Новый слайд появляется без refresh
Админка события
QA-023 Admin access OWNER
Role: dev user
Steps: /demo-event/admin
Expected: Media manage, stats, ZIP link
QA-024 Admin GUEST denied
Steps: Logout → /demo-event/admin
Expected: Login modal или inline error
QA-025 Delete media (OWNER)
Steps: Admin → delete item
Expected: 204, исчез из списка + album
QA-026 Settings OWNER only
Role: MODERATOR (если есть)
Steps: /demo-event/settings
Expected: 403 inline (require-event-owner)
QA-027 Settings patch
Role: OWNER
Steps: Включить moderation → save
Expected: PATCH 200, новый upload → PENDING
Members / Join
QA-028 Invite link
Role: OWNER
Steps: /demo-event/members → copy invite
Expected: URL /:id/join?token=
QA-029 Join as MEMBER
Role: второй аккаунт
Steps: Open invite → register/login → join
Expected: MEMBER role, upload OK на закрытом qrAccess
QA-030 Add MODERATOR
Role: OWNER
Steps: members → email moderators → add
Expected: User в списке, может /admin и /moderate
Moderation
QA-031 Moderate queue
Pre: moderation on, pending items
Steps: /demo-event/moderate
Expected: Queue list, approve/reject
QA-032 Rejected hidden from album
Steps: Reject media → guest refresh album
Expected: Файл не в публичной сетке
Platform / Plans
QA-033 Pricing page
Steps: /pricing
Expected: Plans from GET /api/plans
QA-034 SUPER_ADMIN users
Pre: SUPER_ADMIN in DB
Steps: /admin/users
Expected: DataTable users; GUEST → denied
QA-035 Plan limit create event
Pre: FREE user at max events
Steps: Create event
Expected: 403 PLAN_LIMIT_REACHED toast
i18n / UI
QA-036 Locale switch
Steps: Switch ru ↔ en
Expected: UI strings change, cookie eventpass-locale
QA-037 Mobile cabinet sidebar
Steps: Narrow viewport → cabinet → menu
Expected: Drawer sidebar, backdrop close
Offline / errors
QA-038 Offline album
Steps: DevTools offline → refresh album
Expected: UiPageError offline + retry
QA-039 API 500
Sim: stop backend
Expected: Graceful error, no infinite spinner
Regression checklist (release smoke)
- [ ] QA-002 Login
- [ ] QA-009 Create event
- [ ] QA-011 Open album
- [ ] QA-014 Upload
- [ ] QA-021 Wall SSE
- [ ] QA-023 Admin
- [ ] QA-004 Unauth cabinet
- [ ] QA-033 Pricing
Как расширять
- Новая фича в PLAN → добавить QA-0xx сюда.
- При баге — дописать edge case в ту же группу.
- Автотесты (Playwright) — backlog; этот файл — manual QA v1.