Skip to content

QA-сценарии

Последняя сверка с кодом: 2026-06-06
Pre по умолчанию: npm run dev, seed dev@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

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

Как расширять

  1. Новая фича в PLAN → добавить QA-0xx сюда.
  2. При баге — дописать edge case в ту же группу.
  3. Автотесты (Playwright) — backlog; этот файл — manual QA v1.