diff --git a/shared/constants/test-checklist-items.d.ts b/shared/constants/test-checklist-items.d.ts new file mode 100644 index 0000000..85c683b --- /dev/null +++ b/shared/constants/test-checklist-items.d.ts @@ -0,0 +1,8 @@ +export interface TestChecklistItem { + key: string; + section: string; + action: string; + expectedResult: string; +} + +export declare const TEST_CHECKLIST_ITEMS: readonly TestChecklistItem[]; diff --git a/shared/constants/test-checklist-items.js b/shared/constants/test-checklist-items.js new file mode 100644 index 0000000..662f82c --- /dev/null +++ b/shared/constants/test-checklist-items.js @@ -0,0 +1,304 @@ +export const TEST_CHECKLIST_ITEMS = Object.freeze([ + // Авторизация + { + key: "auth.register-email", + section: "Авторизация", + action: "Зарегистрироваться по email", + expectedResult: "Код приходит на почту, аккаунт создаётся", + }, + { + key: "auth.login-password", + section: "Авторизация", + action: "Войти по паролю", + expectedResult: "Корректный пароль пускает, неправильный — ошибка", + }, + { + key: "auth.oauth-vk", + section: "Авторизация", + action: "Войти через OAuth VK", + expectedResult: "Редирект на VK, callback, авторизация успешна", + }, + { + key: "auth.oauth-yandex", + section: "Авторизация", + action: "Войти через OAuth Yandex", + expectedResult: "Редирект на Yandex, callback, авторизация успешна", + }, + { + key: "auth.reset-password", + section: "Авторизация", + action: "Сбросить пароль", + expectedResult: "Письмо приходит, ссылка работает, пароль меняется", + }, + { + key: "auth.logout", + section: "Авторизация", + action: "Выйти из аккаунта", + expectedResult: "Сессия очищается, редирект на страницу входа", + }, + + // Каталог и товары + { + key: "catalog.homepage", + section: "Каталог и товары", + action: "Открыть главную страницу", + expectedResult: "Слайдер грузится, товары отображаются", + }, + { + key: "catalog.filters", + section: "Каталог и товары", + action: "Применить фильтры", + expectedResult: "Фильтры по категории, цене, материалам работают", + }, + { + key: "catalog.product-page", + section: "Каталог и товары", + action: "Открыть страницу товара", + expectedResult: 'Фото, описание, цена, кнопка "В корзину" отображаются', + }, + { + key: "catalog.seo", + section: "Каталог и товары", + action: "Проверить SEO-метаданные", + expectedResult: "Title, meta, slug корректные", + }, + + // Корзина + { + key: "cart.add", + section: "Корзина", + action: "Добавить товар в корзину", + expectedResult: "Счётчик корзины обновляется", + }, + { + key: "cart.change-qty", + section: "Корзина", + action: "Изменить количество товара", + expectedResult: "Сумма пересчитывается", + }, + { + key: "cart.remove", + section: "Корзина", + action: "Удалить товар из корзины", + expectedResult: "Товар убирается, сумма пересчитывается", + }, + + // Чекаут + { + key: "checkout.address", + section: "Чекаут", + action: "Выбрать адрес доставки", + expectedResult: "Можно выбрать из сохранённых или добавить новый", + }, + { + key: "checkout.delivery", + section: "Чекаут", + action: "Выбрать способ доставки", + expectedResult: "Почта, OZON, Яндекс, 5post — доступны", + }, + { + key: "checkout.payment", + section: "Чекаут", + action: "Выбрать способ оплаты", + expectedResult: "Онлайн / при получении — доступны", + }, + { + key: "checkout.comment", + section: "Чекаут", + action: "Добавить комментарий к заказу", + expectedResult: "Поле работает, текст сохраняется", + }, + { + key: "checkout.create", + section: "Чекаут", + action: "Создать заказ", + expectedResult: "Заказ создаётся, статус DRAFT", + }, + + // Оплата + { + key: "payment.yookassa", + section: "Оплата", + action: "Оплатить через ЮKassa", + expectedResult: "Редирект на оплату, webhook обрабатывается", + }, + { + key: "payment.status", + section: "Оплата", + action: "Проверить статус платежа", + expectedResult: "Статус обновляется после webhook", + }, + + // Профиль пользователя + { + key: "profile.avatar", + section: "Профиль пользователя", + action: "Управление аватаром", + expectedResult: "Загрузка, отображение, удаление работают", + }, + { + key: "profile.settings", + section: "Профиль пользователя", + action: "Изменить настройки профиля", + expectedResult: "Email, имя, способы входа обновляются", + }, + { + key: "profile.addresses", + section: "Профиль пользователя", + action: "Управление адресами", + expectedResult: "Добавление, редактирование, удаление, по умолчанию", + }, + { + key: "profile.orders", + section: "Профиль пользователя", + action: "Просмотр заказов", + expectedResult: "Список, детали, статусы отображаются", + }, + { + key: "profile.messages", + section: "Профиль пользователя", + action: "Сообщения по заказу", + expectedResult: "Отправка, получение, read state работают", + }, + { + key: "profile.notifications", + section: "Профиль пользователя", + action: "Настройки уведомлений", + expectedResult: "Вкл/выкл каналов работают", + }, + { + key: "profile.delete-account", + section: "Профиль пользователя", + action: "Удалить аккаунт", + expectedResult: "Данные удаляются", + }, + + // Админ — Товары + { + key: "admin-products.list", + section: "Админ — Товары", + action: "Открыть список товаров", + expectedResult: "Пагинация, поиск работают", + }, + { + key: "admin-products.create", + section: "Админ — Товары", + action: "Создать товар", + expectedResult: + "Все поля сохраняются, фото загружаются, публикация работает", + }, + { + key: "admin-products.edit", + section: "Админ — Товары", + action: "Редактировать товар", + expectedResult: "Изменения сохраняются", + }, + { + key: "admin-products.delete", + section: "Админ — Товары", + action: "Удалить товар", + expectedResult: "Товар удаляется", + }, + { + key: "admin-products.images", + section: "Админ — Товары", + action: "Управление изображениями товара", + expectedResult: "Добавление, сортировка, удаление работают", + }, + + // Админ — Категории + { + key: "admin-categories.crud", + section: "Админ — Категории", + action: "CRUD категорий", + expectedResult: "Создание, редактирование, удаление, сортировка работают", + }, + + // Админ — Заказы + { + key: "admin-orders.list", + section: "Админ — Заказы", + action: "Открыть список заказов", + expectedResult: "Фильтрация по статусу, внимание отображается", + }, + { + key: "admin-orders.details", + section: "Админ — Заказы", + action: "Открыть детали заказа", + expectedResult: "Состав, статус, смена статуса работают", + }, + { + key: "admin-orders.messages", + section: "Админ — Заказы", + action: "Ответить на сообщение заказа", + expectedResult: "Сообщение отправляется пользователю", + }, + + // Админ — Отзывы + { + key: "admin-reviews.list", + section: "Админ — Отзывы", + action: "Открыть список отзывов", + expectedResult: "Фильтрация pending/approved/rejected работает", + }, + { + key: "admin-reviews.moderate", + section: "Админ — Отзывы", + action: "Модерировать отзыв", + expectedResult: "Approve/reject работают", + }, + + // Админ — Пользователи + { + key: "admin-users.list", + section: "Админ — Пользователи", + action: "Открыть список пользователей", + expectedResult: "Email, дата регистрации отображаются", + }, + { + key: "admin-users.orders", + section: "Админ — Пользователи", + action: "Просмотр заказов пользователя", + expectedResult: "Заказы пользователя отображаются", + }, + + // Админ — Галерея + { + key: "admin-gallery.upload", + section: "Админ — Галерея", + action: "Управление галереей", + expectedResult: "Загрузка, удаление, использование в слайдере работают", + }, + + // Админ — Настройки + { + key: "admin-settings.notifications", + section: "Админ — Настройки", + action: "Настройки уведомлений админа", + expectedResult: "Email, telegram настраиваются", + }, + + // Инфо-страницы + { + key: "info.pages", + section: "Инфо-страницы", + action: "Открыть инфо-страницы", + expectedResult: + "Доставка, оплата, как заказать, статусы заказов отображаются", + }, + { + key: "info.legal", + section: "Инфо-страницы", + action: "Открыть юридические страницы", + expectedResult: + "Политика конфиденциальности, условия использования отображаются", + }, + + // SSE / Realtime + { + key: "sse.notifications", + section: "SSE / Realtime", + action: "Проверить SSE-уведомления", + expectedResult: "Уведомления приходят в реальном времени", + }, +]);