L'application est à la racine du site : plateau en SVG, saisie au toucher (pion puis case d'arrivée, proposées à partir du moteur), boutons du jet, du videau et de nouvelle partie, coup de l'ordinateur affiché avec son temps, fin de partie, reprise depuis localStorage, aide lue dans les copies de docs/. Le moteur tourne dans le Web Worker existant ; main.ts est le seul assembleur (nouvelles règles dependency-cruiser). Le service worker met tout le site en cache, avec une empreinte du contenu comme version. Les pages de test du moteur passent sous /moteur/. Politique de sécurité du contenu dans le Caddyfile ; make test-browser joue une partie dans Chromium et Firefox sans écran (Playwright, hors de make test). 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 \
|
|
-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"
|