Срез по типам тестов: что покрыто, чего не хватает, в каком порядке делать. Фокус — апгрейд; плюс авторизация, маркет/сделки, кейсы, баланс, поддержка. Вывод (withdrawal) исключён — покрыт отдельно. Это дополнение к ручным клик-сценариям (см. Апгрейд — ручной план).
Статус апгрейда (01.06): P0 и P1 закрыты — честность шанса (Монте-Карло), безопасность входа, API-краевые, E2E-проклик со скринами. Прогон: 367 PHP + 10 E2E зелёные. Осталось только опциональное (P2). Подробности — в блоке «1. Апгрейд» ниже.
Статус: есть частично нет · Приоритет: P0 P1 P2
Код: UpgradeController (items/store/history/feed), Actions\Upgrade\CreateUpgrade, модели Upgrade/UpgradeItem, фронт UpgradePage.vue. Формула: chance = ставка / цена_цели × (100 − комиссия%), коридор 1%…70%, ставка = предметы + баланс, победа при roll < chance.
roll ∈ [0,99.99]; победа строго roll < chance (на границе — проигрыш). Главное — честность — подтверждено./api/v1/test/login = 404 в production / при выключенном флаге (middleware EnsureTestAuthEnabled) — закреплено `TestAuthSecurityTest`.| Приор. | Задача | Тип | Почему |
|---|---|---|---|
| ✅ | Монте-Карло честности шанса апгрейда | Статистика | Сделано: win-rate = шансу ±2 п.п. |
| ✅ | test-login = 404 в production | Безопасность | Сделано: TestAuthSecurityTest |
| ✅ | Апгрейд: граничные + леджер | Feature | Сделано: UpgradeEdgeCasesTest |
| ✅ | Апгрейд: E2E-спек | E2E | Сделано: 09-authorized-upgrade + скрины |
| P1 | Маркет: конкуренция на лот + E2E покупки | Конкуренция/E2E | Лот не продаётся дважды |
| P1 | Баланс: конкуренция + депозит-флоу E2E | Конкуренция/E2E | Баланс не уходит в минус |
| P2 | Provably-fair, фронт-unit, E2E кейсов/поддержки | Unit/E2E | Полировка |
DB::transaction + lockForUpdate + запись в transactions.RandomSource; в тестах биндить SeededSource(seed) для детерминизма.make test / CI-job test.npm run build.