#!/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/gates/documentcore/ 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"