60 lines
2.5 KiB
Bash
Executable file
60 lines
2.5 KiB
Bash
Executable file
#!/usr/bin/env bash
|
||
# Верификация прода simbiot.cil.by против канона (docs/DEPLOY-LANDING.md §4-5).
|
||
# exit 0 = прод совпадает с docs/simbiot-landing-v2-live.html и фикс на месте.
|
||
# t-2026-10-05 (day), эскалация e-261004110909-bd70b0.
|
||
set -u
|
||
cd "$(dirname "$0")/.."
|
||
|
||
CANON="${CANON:-docs/simbiot-landing-v2-live.html}"
|
||
URL="${LANDING_URL:-https://simbiot.cil.by/}"
|
||
TMP=$(mktemp)
|
||
trap 'rm -f "$TMP"' EXIT
|
||
|
||
fail=0
|
||
curl -fsS "$URL" -o "$TMP" || { echo "FAIL: прод недоступен"; exit 2; }
|
||
|
||
# 1) побайтовое совпадение с каноном
|
||
if cmp -s "$TMP" "$CANON"; then
|
||
echo "OK: прод == канону ($CANON)"
|
||
else
|
||
echo "DRIFT: прод отличается от канона ($CANON)"
|
||
echo " прод: $(wc -c <"$TMP") bytes / канон: $(wc -c <"$CANON") bytes"
|
||
fail=1
|
||
fi
|
||
|
||
# 2) showcase-стили НЕ в noscript (артефакт t-261002151425)
|
||
# NB: сначала срезаем CSS-комментарии — в каноне есть текстовое упоминание
|
||
# "<noscript>" внутри /* ... */, иначе диапазон ложно тянется до EOF.
|
||
# Логика: python exit 1 = артефакт ЕСТЬ (moc-grid/.shot в noscript).
|
||
if ! python3 - "$TMP" <<'PY'
|
||
import re, sys
|
||
h = open(sys.argv[1], errors='ignore').read()
|
||
h = re.sub(r'/\*.*?\*/', '', h, flags=re.S) # CSS-комментарии вон
|
||
m = re.search(r'<noscript[^>]*>(.*?)</noscript>', h, flags=re.S)
|
||
sys.exit(1 if (m and ('moc-grid' in m.group(1) or '.shot' in m.group(1))) else 0)
|
||
PY
|
||
then
|
||
echo "FAIL: moc-grid/.shot внутри <noscript> — артефакт (t-261002151425) на проде"
|
||
fail=1
|
||
else
|
||
echo "OK: noscript чист (без showcase-стилей)"
|
||
fi
|
||
|
||
# 3) ключевые фиксы аудита на месте
|
||
for pat in 'prefers-reduced-motion' 'focus-visible' 'og:image'; do
|
||
if grep -q "$pat" "$TMP"; then echo "OK: $pat"; else echo "FAIL: $pat отсутствует"; fail=1; fi
|
||
done
|
||
|
||
# 4) showcase-стили в основном <style>
|
||
if grep -q '\.moc-grid{display:grid' "$TMP"; then
|
||
echo "OK: .moc-grid в основных стилях"
|
||
else
|
||
echo "WARN: .moc-grid не в основном <style> (проверить секцию live-product)"
|
||
fail=1
|
||
fi
|
||
|
||
# 5) og.png
|
||
code=$(curl -s -o /dev/null -w '%{http_code}' "$URL/og.png")
|
||
[ "$code" = "200" ] && echo "OK: og.png 200" || { echo "FAIL: og.png $code"; fail=1; }
|
||
|
||
exit "$fail"
|