ci: добавить pre-push hook (CSS-линтер + UI Playwright)

Блокирует push при JS-ошибках в интерфейсе или CSS-нарушениях.
API-тесты в хук не включены — зависят от VPS/Drive, запускать вручную.
Активируется через: git config core.hooksPath .githooks

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
wasrusgen 2026-05-18 09:30:36 +03:00
parent 0fb0597b8d
commit ff35dd769f

50
.githooks/pre-push Normal file
View File

@ -0,0 +1,50 @@
#!/bin/sh
# pre-push hook — запускает локальные тесты перед каждым git push
# Устанавливается через: git config core.hooksPath .githooks
ROOT="$(git rev-parse --show-toplevel)"
FAILED=0
echo ""
echo "══════════════════════════════════════════"
echo " PRE-PUSH: запускаю локальные тесты"
echo "══════════════════════════════════════════"
# ── 1. CSS-линтер ────────────────────────────────────────────
echo ""
echo " [1/2] CSS-линтер..."
python -X utf8 "$ROOT/tests/lint_css.py"
if [ $? -ne 0 ]; then
echo " ❌ CSS-линтер УПАЛ — исправь ошибки CSS перед пушем"
FAILED=1
else
echo " ✅ CSS-линтер OK"
fi
# ── 2. UI Playwright ─────────────────────────────────────────
echo ""
echo " [2/2] UI Playwright smoke..."
node "$ROOT/tests/ui_smoke.js"
if [ $? -ne 0 ]; then
echo " ❌ UI smoke УПАЛ — есть JS-ошибки в интерфейсе"
FAILED=1
else
echo " ✅ UI smoke OK"
fi
echo ""
echo "══════════════════════════════════════════"
if [ $FAILED -ne 0 ]; then
echo " ❌ PUSH ЗАБЛОКИРОВАН — исправь ошибки выше"
echo " (чтобы пропустить: git push --no-verify)"
echo "══════════════════════════════════════════"
echo ""
exit 1
fi
echo " ✅ Все тесты прошли — пушим"
echo " ⚠️ Не забудь прогнать API-тесты: python -X utf8 tests/smoke_api.py"
echo "══════════════════════════════════════════"
echo ""
exit 0