48 lines
1.8 KiB
Bash
Executable File
48 lines
1.8 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
|
|
|
|
# Image de production lancée, étiquette propre à ce dépôt : site_image,
|
|
# container, port.
|
|
# shellcheck source=tests/site-image.sh
|
|
. tests/site-image.sh
|
|
|
|
# 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"
|