From ff35dd769f58d576487f6c0e60c98f9eba4867a8 Mon Sep 17 00:00:00 2001 From: wasrusgen Date: Mon, 18 May 2026 09:30:36 +0300 Subject: [PATCH] =?UTF-8?q?ci:=20=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8?= =?UTF-8?q?=D1=82=D1=8C=20pre-push=20hook=20(CSS-=D0=BB=D0=B8=D0=BD=D1=82?= =?UTF-8?q?=D0=B5=D1=80=20+=20UI=20Playwright)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Блокирует push при JS-ошибках в интерфейсе или CSS-нарушениях. API-тесты в хук не включены — зависят от VPS/Drive, запускать вручную. Активируется через: git config core.hooksPath .githooks Co-Authored-By: Claude Sonnet 4.6 --- .githooks/pre-push | 50 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 .githooks/pre-push diff --git a/.githooks/pre-push b/.githooks/pre-push new file mode 100644 index 0000000..3c62012 --- /dev/null +++ b/.githooks/pre-push @@ -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