# Task 14 — Smoke esteso e verifica end-to-end ## Step 1-2: Smoke script esteso ed eseguito Aggiunti controlli in `scripts/smoke.sh` (stile esistente, no `$BASE`, pattern `fail=0`/`|| fail=1`/`exit $fail`): - `GET /login` → 200 - home `/` contiene "Accedi" (anonimo) - home `/` NON contiene `tag-badge` (anonimo, in aggiunta al check già esistente con `?annotate=1`) - `GET /admin/users` → 302 (redirect login da anonimo) Comando eseguito: `fuser -k 4399/tcp 2>/dev/null; bash scripts/smoke.sh` Output finale: ``` > insanitylab-website@0.1.0 build > astro build ... 22:21:24 [@astrojs/node] Server listening on http://localhost:4399 200 / 200 /about 200 /training 200 /services 200 /services/performance-class 200 /services/rehab 200 /blog 200 /contact 200 /admin/login 200 /robots.txt 302 /admin (atteso 302) 200 /sitemap.xml 12 in sitemap (atteso >= 12) 1 righe con data-tag= in home (atteso >= 1) 0 tag-badge da anonimo con ?annotate=1 (atteso 0) 200 /login 0 tag-badge da anonimo in home semplice (atteso 0) 302 /admin/users (atteso 302) smoke ruoli/login/inline OK EXIT=0 ``` Risultato: exit 0, tutti i controlli passano. ## Step 3: Verifica funzionale locale (browser) NON eseguita in questo task — richiede sessione browser interattiva (login manuale come user/superuser/admin, click UI). Fuori scope per l'esecuzione automatizzata di questo agente. Da fare manualmente dall'operatore se richiesto. ## Step 4: Commit ``` be77285 test(smoke): login pubblico, badge, protezione /admin/users ```