Files
pss/scripts/smoke-imagem.sh
T
Lucas RayanandClaude Sonnet 5.5 ab7f532456
Release / Plano (reaproveitar a imagem?) (push) Failing after 4s
Release / ci (push) Skipped
Release / Publica a imagem (linux/arm64) (push) Skipped
Release / Cria a release no Gitea (push) Skipped
ci: imagem construída do código, esteira para os runners do Gitea e changelog
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-01 21:35:00 -03:00

34 lines
1.4 KiB
Bash

#!/usr/bin/env bash
# Teste de fumaça da imagem: a SPA serve o index, cai no index em rotas internas
# e entrega os assets com cache longo.
#
# scripts/smoke-imagem.sh http://127.0.0.1:3998
#
# Cada falha é impressa e o script sai com 1 no fim, para mostrar tudo de uma vez.
set -uo pipefail
base=${1:?uso: smoke-imagem.sh <url-base>}
falhas=0
falhou() { echo "FALHOU $1"; falhas=$((falhas + 1)); }
# O nginx leva um instante para subir.
for _ in $(seq 1 30); do curl -fsS -o /dev/null "$base/" 2>/dev/null && break; sleep 1; done
index=$(curl -fsS "$base/") || { echo "FALHOU /: sem resposta"; exit 1; }
grep -q 'id="root"' <<< "$index" || falhou "/: o index não tem o #root"
# Rota interna da SPA devolve o mesmo index (try_files), não 404.
[ "$(curl -s -o /dev/null -w '%{http_code}' "$base/qualquer/rota")" = 200 ] || falhou "/qualquer/rota: esperado 200"
# Todo asset que o index referencia existe e tem cache imutável.
assets=$(grep -oE '(src|href)="/assets/[^"]+"' <<< "$index" | cut -d'"' -f2)
[ -n "$assets" ] || falhou "o index não referencia nenhum /assets/"
for a in $assets; do
head=$(curl -sI "$base$a")
grep -q '^HTTP/[0-9.]* 200' <<< "$head" || falhou "$a: esperado 200"
grep -qi 'cache-control:.*immutable' <<< "$head" || falhou "$a: sem cache imutável"
done
[ "$falhas" = 0 ] && echo "ok: $(wc -w <<< "$assets") assets e rotas conferidos"
[ "$falhas" = 0 ]