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>
49 lines
2.1 KiB
Bash
Executable file
49 lines
2.1 KiB
Bash
Executable file
#!/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
|