#!/usr/bin/env bash
# Captura os baselines visuais dos checkpoints listados no manifesto sniff/manifest.json
# Uso: bash scripts/sniff-baseline.sh
set -euo pipefail

DIR="$(cd "$(dirname "$0")/.." && pwd)"
cd "$DIR"
MANIFEST="$DIR/sniff/manifest.json"

[ -f "$MANIFEST" ] || { echo "Manifesto não encontrado: $MANIFEST (rode o teste primeiro)"; exit 1; }

mkdir -p "$DIR/sniff/baselines" "$DIR/sniff/current"

CAPTURE_FLAGS=(--no-summary --depth 12 --wait "network-idle:800")

python3 - "$MANIFEST" "$DIR" "${CAPTURE_FLAGS[@]}" <<'PY'
import json, subprocess, sys, os

manifest_path, base_dir = sys.argv[1], sys.argv[2]
flags = sys.argv[3:]
checkpoints = json.load(open(manifest_path))
out_dir = os.path.join(base_dir, 'sniff', 'baselines')

for cp in checkpoints:
    label, url, selector = cp['label'], cp['url'], cp['selector']
    target = os.path.join(out_dir, f'{label}.jsonl')
    cmd = ['sniffCSS', '-u', url, '-s', selector, *flags]
    print(f'[baseline] {label} <- {url} ({selector})')
    with open(target, 'w') as fh:
        subprocess.run(cmd, stdout=fh, check=True)
    print(f'  -> {target}')
PY

echo "Baselines atualizados."