Add reports index generation

This commit is contained in:
Tero Halla-aho 2025-12-11 21:08:02 +02:00
parent 6a5003ffda
commit 0d332dfe85
2 changed files with 73 additions and 1 deletions

View file

@ -27,7 +27,7 @@
<ul>
<li>Script: <code>scripts/run-test-suite.sh</code></li>
<li>Runs: <code>npm audit</code> (high), Trivy fs scan, ZAP baseline.</li>
<li>Outputs: <code>reports/runs/&lt;timestamp&gt;/summary.html</code> with links to all tool reports and a textual summary printed to the console.</li>
<li>Outputs: <code>reports/runs/&lt;timestamp&gt;/summary.html</code> with links to all tool reports and a textual summary printed to the console. Index of all runs: <code>reports/index.html</code>.</li>
<li>Config:
<ul>
<li><code>TARGET</code>: ZAP target URL (default test env).</li>

View file

@ -22,6 +22,9 @@ mkdir -p "$RUN_DIR"
SUMMARY_ROWS=()
SUMMARY_TEXT_ROWS=()
PASS_COUNT=0
FAIL_COUNT=0
SKIP_COUNT=0
log() {
echo "[$(date +"%H:%M:%S")] $*"
@ -34,6 +37,64 @@ record_result() {
local detail_text="$1"; shift
SUMMARY_ROWS+=("<tr><td>${name}</td><td>${status}</td><td>${detail}</td></tr>")
SUMMARY_TEXT_ROWS+=("${name}: ${status}${detail_text:+ - ${detail_text}}")
case "$status" in
PASS) PASS_COUNT=$((PASS_COUNT + 1)) ;;
FAIL) FAIL_COUNT=$((FAIL_COUNT + 1)) ;;
SKIP) SKIP_COUNT=$((SKIP_COUNT + 1)) ;;
esac
}
update_index() {
local runs_dir="reports/runs"
local index_file="reports/index.html"
local items=""
if [ -d "$runs_dir" ]; then
while IFS= read -r run_dir; do
local meta_file="${runs_dir}/${run_dir}/meta.txt"
[ -f "$meta_file" ] || continue
local run_ts target pass fail skip
run_ts=$(grep -E '^RUN_TS=' "$meta_file" | head -n1 | cut -d= -f2-)
target=$(grep -E '^TARGET=' "$meta_file" | head -n1 | cut -d= -f2-)
pass=$(grep -E '^PASS_COUNT=' "$meta_file" | head -n1 | cut -d= -f2-)
fail=$(grep -E '^FAIL_COUNT=' "$meta_file" | head -n1 | cut -d= -f2-)
skip=$(grep -E '^SKIP_COUNT=' "$meta_file" | head -n1 | cut -d= -f2-)
run_ts="${run_ts:-$run_dir}"
target="${target:-unknown}"
pass="${pass:-0}"
fail="${fail:-0}"
skip="${skip:-0}"
items+=$'\n'" <li><div class=\"run\"><a href=\"runs/${run_ts}/summary.html\">${run_ts}</a></div><div class=\"meta\">Target: ${target} | Pass: ${pass} | Fail: ${fail} | Skip: ${skip}</div></li>"
done < <(ls "$runs_dir" 2>/dev/null | sort -r)
fi
cat >"$index_file" <<EOF
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<title>Lomavuokraus Test Suite Runs</title>
<style>
body { font-family: Arial, sans-serif; padding: 16px; background: #0b0d11; color: #e9ecf1; }
a { color: #7cc7ff; text-decoration: none; }
a:hover { text-decoration: underline; }
ul { list-style: none; padding: 0; }
li { margin-bottom: 10px; padding: 10px; border: 1px solid #1f2937; border-radius: 6px; background: #111827; }
.run { font-weight: bold; }
.meta { font-size: 0.95em; color: #cfd6e0; margin-top: 2px; }
</style>
</head>
<body>
<h1>Test Suite Runs</h1>
<ul>
${items:-" <li>No runs found.</li>"}
</ul>
</body>
</html>
EOF
}
# 1) npm audit
@ -137,6 +198,17 @@ cat >"$SUMMARY_FILE" <<EOF
</html>
EOF
META_FILE="$RUN_DIR/meta.txt"
cat >"$META_FILE" <<EOF
RUN_TS=${RUN_TS}
TARGET=${TARGET}
PASS_COUNT=${PASS_COUNT}
FAIL_COUNT=${FAIL_COUNT}
SKIP_COUNT=${SKIP_COUNT}
EOF
update_index
log "Summary:"
for row in "${SUMMARY_TEXT_ROWS[@]}"; do
echo " - ${row}"