food-market/tests/e2e/full-chain.sh
nns 886cb92f30 test(e2e): сквозной сценарий full-chain «жизнь магазина» + харнес со скриншотами
16 шагов против настоящего стенда: регистрация→справочники→сотрудники/точки→
деньги→3 приёмки→оплаты→смена/продажи/возврат/Z→склад→отчёты→инварианты→откат.
Сверяет конкретные числа и инварианты, 0×5xx/0×тостов/0×console.error. Режимы
C (temp-орг) и B (Демо на реальном каталоге). Hi-res скриншоты каждого процесса +
галерея. Включён в nightly-verify и quality-watchdog (скрипты в $HOME).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-08 02:10:11 +05:00

49 lines
2.1 KiB
Bash
Executable file
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/usr/bin/env bash
# Запускаемый сквозной тест «жизнь магазина от регистрации до отчётов».
# Один прогон = свои свежие данные против настоящего стенда, сверка ЧИСЕЛ и
# инвариантов, markdown-отчёт со скриншотами. Выход != 0 если есть падения —
# чтобы ночной прогон/quality-watchdog ловил регресс.
#
# Использование:
# tests/e2e/full-chain.sh # режим C: свежая temp-орг (для ночного прогона)
# tests/e2e/full-chain.sh --api-only # без браузера (быстрее, только API+инварианты)
# FULLCHAIN_TARGET=demo tests/e2e/full-chain.sh # режим B: прогон в «Демо-магазине»
#
# Env:
# E2E_ADMIN_URL — стенд (default https://test.admin.food-market.kz)
# FULLCHAIN_TARGET — temp (default) | demo
set -uo pipefail
cd "$(dirname "$0")"
export E2E_ADMIN_URL="${E2E_ADMIN_URL:-https://test.admin.food-market.kz}"
if [ ! -d node_modules ]; then
pnpm install --silent
fi
# chromium для UI-шагов (если не ставили)
if [ "${1:-}" != "--api-only" ]; then
pnpm exec playwright install chromium >/dev/null 2>&1 || true
fi
echo "[full-chain] стенд=$E2E_ADMIN_URL режим=${FULLCHAIN_TARGET:-temp} $*"
pnpm exec tsx runner.ts full-chain "$@"
RC=$?
REPORT="$(ls -t reports/full-chain-*.md 2>/dev/null | head -1)"
if [ -z "$REPORT" ]; then
echo "[full-chain] ОТЧЁТ НЕ НАЙДЕН — прогон не состоялся"
exit 2
fi
echo "[full-chain] отчёт: $REPORT"
# Итоговая строка: «**Итог:** N ✓ / M ✗ / ...»
SUMMARY="$(grep -m1 '\*\*Итог:\*\*' "$REPORT" || true)"
echo "[full-chain] $SUMMARY"
FAILS="$(echo "$SUMMARY" | grep -oE '[0-9]+ ✗' | grep -oE '[0-9]+' || echo 0)"
if [ "${FAILS:-0}" -gt 0 ] || [ "$RC" -ne 0 ]; then
echo "[full-chain] РЕЗУЛЬТАТ: КРАСНЫЙ (падений: ${FAILS:-?})"
exit 1
fi
echo "[full-chain] РЕЗУЛЬТАТ: ЗЕЛЁНЫЙ"
exit 0