Smoke-проверка после каждого деплоя — самый дешёвый способ не отдать пользователю поломанный сайт. Не E2E, не Lighthouse, не security-аудит. Только «работает ли вообще базовое».
Site: {{site_url}} Ключевые flow: {{key_flows}}
Тайминг
| Когда | Что | Сколько |
|---|---|---|
| 0-1 мин | Health endpoint + главная | 30 сек |
| 1-5 мин | Top-10 URL → 200 | 4 мин |
| 5-15 мин | Console errors на каждой странице | 10 мин |
| 15-30 мин | Каждый ключевой flow до завершения | 15 мин |
| 30+ мин | Если что-то поломалось — fix или rollback | — |
Если первые 5 минут показали 500-ки → rollback немедленно, разбирайся потом.
1. Health (30 секунд)
curl -sI {{site_url}}/__health
curl -sI {{site_url}}/
Оба должны вернуть 200. Если __health 200, а / 500 — это билд-баг.
2. URL-чеклист (4 минуты)
for url in / /about /pricing /api/health /sitemap.xml /robots.txt /favicon.ico; do
echo "$(curl -s -o /dev/null -w '%{http_code}' {{site_url}}$url) $url"
done
Что должно быть:
- HTML-страницы — 200
- API endpoints — 200 (если public) или 401 (если требуют auth)
/sitemap.xml— 200, не пустой/robots.txt— 200, корректный/favicon.ico— 200 (NOT 404 — первая ошибка которую видит каждый юзер)
Что НЕ должно быть: 500, 502, 503, 504, redirect-loops.
3. Browser console (10 минут)
Открой prod в обычном Chrome (не incognito). DevTools → Console:
- Preserve log включён
- Levels: всё (Verbose, Info, Warnings, Errors)
Пройди топ-10 страниц. Фиксируй:
- TypeError, ReferenceError → блокеры, чинить
- 404, 500 на assets → broken build
- CORS, CSP errors → блокеры
- React hydration warnings → серьёзно, но можно отложить
- Extension errors → noise, отфильтруй
4. Network waterfall
DevTools → Network → фильтр «Status: 4XX, 5XX»:
- 404 на CSS/JS/fonts → broken build
- 500 на API → backend deploy сломан
- 504 → timeout, проверь зависимости
- 401 на public endpoints → auth-middleware misconfigured
5. Critical flows (15 минут)
Для каждого из {{key_flows}}:
- Incognito (свежая сессия)
- Пройди от начала до завершения
- Проверь: email / DB-запись / receipt действительно создались?
Минимум:
- Signup → email → first login
- Search → click result → page renders
- Checkout / payment (тестовая карта)
- Settings → update → reload → значение сохранено
- Logout → login снова → state restored
6. Mobile spot-check (5 минут)
DevTools → Device toolbar → iPhone 13:
- Hero не обрезан, text не overflow
- Mobile menu открывается
- Forms — клавиатура и autofocus
- Hover-only — работают на touch
- Sticky bar не съедает 50% экрана
7. Rollback-план
ssh srv1 'pm2 logs <app> --lines 100 --nostream'
ssh srv1 'pm2 stop <app>'
# затем rsync предыдущей версии / git checkout HEAD~1 + redeploy
Не пытайся «быстро поправить» на проде в первые 5 минут. Rollback дешевле.
Anti-patterns
- ❌ «Открыл главную, нормально» — не smoke
- ❌ Тестировать только в авторизованной сессии
- ❌ Только локально — prod-окружение другое
- ❌ Пропустить mobile
- ❌ Не смотреть в console
- ❌ Откладывать smoke «до завтра»
- ❌ Smoke только в браузере без curl — пропустишь 500-ки на routes которые не открываешь руками
Output
- 200/4xx/5xx по топ-10 URL
- Console-журнал с категоризацией
- Critical flows pass/fail
- Решение: ship / hotfix / rollback
Что такое деплой, хостинг и сервер — для абсолютного новичка
Между «сайт работает у меня в браузере» и «сайт доступен по ссылке всем». Объясняем что в середине, без облака и кластеров.
Полный UX-аудит сайта
Эвристическая оценка по Нильсену + проверка ключевых сценариев. На выходе — приоритизированный список проблем.
Аудит производительности (Core Web Vitals)
Глубокая проверка LCP, INP, CLS с привязкой к коду и приоритизированным планом исправлений.