Перейти к содержимому
Репозиторий Инструменты Тест-файлов Что делает CI
poker-api Jest + supertest, unit для packages/rating 51 prisma generate → сборка → тайпчек → тесты, PostgreSQL 16 сервисом
poker-admin Vitest + Testing Library + msw 20 тесты → tsc -b && vite build
poker-organizer jest-expo + Testing Library + msw 24 tsc --noEmit → тесты
poker-player jest-expo + Testing Library + msw 50 tsc --noEmit → тесты

CI — GitHub Actions, во всех четырёх репозиториях, на push в main и на pull request. Число файлов посчитано 2026-08-24; число кейсов здесь не приводится, чтобы не устаревало молча.

E2E-стиль, по файлу на модуль, против реальной базы. Особенности, без которых они ведут себя загадочно:

  • maxWorkers: 1. Тесты идут последовательно.
  • База пересоздаётся в globalSetup, своя на прогон. Общая база между параллельными прогонами — источник флейков, которые ловятся долго.
  • Сети в тестах нет. Внешние интеграции подменены фейками: FakeOtpChannel, FakePushSender, FakeBoss.
  • Рассадка тестируема, потому что rng в неё инъектируется.

Сеть перехватывает msw, и незамоканный запрос валит тест — это осознанно: молча ушедший в никуда запрос хуже красного теста.

Две вещи, на которых теряют время:

  • В Expo-приложениях нужен --forceExit. Он уже прописан в скрипте test: без него открытые хендлы не дают процессу завершиться, и прогон висит до таймаута.
  • Фильтр -t с кириллицей молча не фильтрует. Запуск вида pnpm test -- -t "название" с русским текстом не отберёт ничего и не пожалуется — прогонит всё либо ничего. Фильтровать надёжнее по имени файла.

packages/rating — 100% покрытия, и это условие, а не достижение: по этим формулам считаются очки игроков. Подробнее — в статье про рейтинг.