make test-browser vérifie maintenant la politique de sécurité dans Chromium et Firefox : aucune violation pendant toute la partie, et un script en ligne ajouté exprès est bloqué. Un blocage est diagnostiqué (étape, capture, dernière commande du moteur, journal de la partie) au lieu d'attendre sans fin. Firefox sous Playwright refuse toute navigation hors ligne : on y vérifie le cache et le contrôle par le service worker. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
49 lines
1.9 KiB
Bash
Executable File
49 lines
1.9 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# Joue une partie complète par l'interface dans Chromium et Firefox sans
|
|
# écran (tests/browser/play.mjs), sur le site servi par l'image de production
|
|
# construite en local, comme tests/test_site.sh. Les captures d'écran vont
|
|
# dans build/browser-shots/.
|
|
#
|
|
# Outils : l'image de Playwright (navigateurs) et le paquet playwright,
|
|
# installé une fois par npm dans build/browser-tools/ (réseau nécessaire la
|
|
# première fois). Lent (plusieurs minutes) : lancé par make test-browser,
|
|
# pas par make test.
|
|
|
|
set -euo pipefail
|
|
cd "$(dirname "$0")/.."
|
|
|
|
image="${PLAYWRIGHT_IMAGE:?lancer via make test-browser}"
|
|
browsers="${BROWSERS:-chromium firefox}"
|
|
|
|
unset MAKEFLAGS MFLAGS MAKELEVEL
|
|
make -s package >/dev/null
|
|
|
|
site_image="ustagammon/site-test:local"
|
|
docker build -q -t "$site_image" build/deploy >/dev/null
|
|
container="$(docker run -d --rm -p 127.0.0.1::80 "$site_image")"
|
|
trap 'docker stop "$container" >/dev/null' EXIT
|
|
port="$(docker port "$container" 80/tcp | head -n1 | sed 's/.*://')"
|
|
|
|
# Le paquet playwright, à la version des navigateurs de l'image.
|
|
tools=build/browser-tools
|
|
version="${image##*:v}"
|
|
version="${version%%-*}"
|
|
if [ ! -f "$tools/node_modules/playwright/package.json" ]; then
|
|
mkdir -p "$tools"
|
|
docker run --rm --user "$(id -u):$(id -g)" -e HOME=/tmp -v "$PWD/$tools:/tools" -w /tools \
|
|
"$image" npm install --no-audit --no-fund --save-exact "playwright@$version" >/dev/null
|
|
fi
|
|
|
|
rm -rf build/browser-shots
|
|
mkdir -p build/browser-shots
|
|
cp tests/browser/play.mjs "$tools/"
|
|
status=0
|
|
for browser in $browsers; do
|
|
# Réseau de l'hôte : le site est sur 127.0.0.1. Le service worker
|
|
# demande un contexte sûr, ce qu'est localhost.
|
|
docker run --rm --init --ipc=host --network host --user "$(id -u):$(id -g)" -e HOME=/tmp \
|
|
-e TRACE -v "$PWD/$tools:/tools" -v "$PWD/build/browser-shots:/shots" -w /tools "$image" \
|
|
node play.mjs "http://localhost:$port/" "$browser" /shots || status=1
|
|
done
|
|
exit "$status"
|