Files
nexarch/scripts/qa03-epic-gate.sh
patrickandClaude Sonnet 5 f68672e633
CI / Core-Modul (Build/Vet/Test) (push) Failing after 2s
CI / DMS Security-Test-Gate (AC5, Merge-Gate) (push) Successful in 3s
CI / DMS-Modul Supply-Chain-Scan (govulncheck) (push) Failing after 15s
CI / Web (dms-browser) (push) Failing after 48s
CI / Web (pdf-viewer) (push) Failing after 43s
CI / Web (shl) (push) Failing after 23s
CI / DMS-Modul (Lint/Build/Test/Coverage/Artefakt) (push) Failing after 2s
QA-03: epic-gate-skript
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-19 01:57:46 +02:00

44 lines
2.0 KiB
Bash
Executable File

#!/usr/bin/env bash
# QA-03: fuehrt die automatisierten Pruefungen aller Kacheln des Epics
# "Dokumentenkern" aus (Go-Pakete gegen echte PostgreSQL, Frontend-Suiten mit
# vitest) und gibt eine Ergebnistabelle aus. Exit 1, sobald eine Suite scheitert.
# qa03-epic-gate.sh [ROOT] Env: TEST_TENANT_DSN, QA03_SKIP_WEB=1 ueberspringt Frontend
set -uo pipefail
root="${1:-.}"
cd "$root"
declare -a rows
fail=0
record() { rows+=("$1|$2|$3"); [ "$3" = PASS ] || fail=1; }
go_suite() { # ticket packages...
local ticket="${1//\//_}"; local label="$1"; shift
if (cd dms && go test -count=1 "$@" >"/tmp/qa03-$ticket.log" 2>&1); then record "$label" "go: $*" PASS; else record "$label" "go: $*" FAIL; tail -20 "/tmp/qa03-$ticket.log" >&2; fi
}
go_suite DOC-01/02/04 ./internal/upload/ ./internal/thumbnail/ ./internal/documenttype/
go_suite DOC-05 ./internal/documentapi/
go_suite DOC-06 ./internal/pdfconvert/
go_suite DOC-08 ./internal/export/
go_suite DOC-10 ./internal/folder/ ./internal/folderapi/
go_suite DOC-11/12 ./internal/trash/ ./internal/trashapi/
go_suite DOC-14 ./internal/docmerge/
go_suite DOC-15 ./internal/bulkedit/ ./internal/bulkeditapi/
go_suite QA-01 ./internal/testcorpus/
go_suite QA-03 ./internal/qa03/
if [ "${QA03_SKIP_WEB:-0}" != 1 ]; then
for d in shl dms-upload dms-browser pdf-viewer; do
case "$d" in shl) t="SHL-01";; dms-upload) t="DOC-03";; dms-browser) t="DOC-10/12/15";; pdf-viewer) t="DOC-05/13";; esac
if (cd "web/$d" && { [ -f package-lock.json ] && npm ci --no-audit --no-fund --loglevel=error || npm install --no-audit --no-fund --loglevel=error; } >"/tmp/qa03-web-$d.log" 2>&1 && npx vitest run >>"/tmp/qa03-web-$d.log" 2>&1); then
record "$t" "web/$d: $(grep -E 'Tests ' "/tmp/qa03-web-$d.log" | tail -1 | sed 's/^ *//')" PASS
else
record "$t" "web/$d" FAIL; tail -20 "/tmp/qa03-web-$d.log" >&2
fi
done
fi
printf '\n%-14s %-6s %s\n' Ticket Ergebnis Suite
for r in "${rows[@]}"; do IFS='|' read -r t s res <<<"$r"; printf '%-14s %-6s %s\n' "$t" "$res" "$s"; done
exit "$fail"