gestion_table_tournante_libre/Makefile
Mathieu Benoit 079b158587 [ADD] bench: headless Chromium harness, statistics and make banc entry
Rendering thresholds must be measured in a real browser, apart from the
test series that guard behaviour. A separate Vitest project runs
scripts/banc/**/*.banc.js in headless Chromium at 1366 x 700, scale 1,
without frame-rate limit, CPU throttling set per run; the statistics module
gives medians and spreads over repeated samples. Outputs go to an ignored
folder. make banc and npm run banc name the entry; its orchestrator comes
with the bench measures.
Checked: red first; 3410 node tests green from the index; the bench project
runs its harness.

--- FR ---

[ADD] banc : harnais Chromium sans tête, statistiques, entrée make banc

Les seuils de rendu se mesurent dans un vrai navigateur, à part des séries
qui gardent le comportement. Un projet Vitest distinct joue
scripts/banc/**/*.banc.js dans Chromium sans tête à 1366 × 700, facteur 1,
sans limite d'images, le ralentissement du processeur réglé par lancement ;
le module de statistiques rend médianes et dispersions sur des mesures
répétées. Les sorties vont dans un dossier ignoré. make banc et npm run banc
nomment l'entrée ; son orchestrateur vient avec les mesures du banc.
Vérifié : rouge d'abord ; 3410 node verts depuis l'index ; le projet du
banc joue son harnais.

Assisted-by: Claude Opus 5.5
2026-10-09 13:03:37 -04:00

116 lines
3.7 KiB
Makefile

# © 2026 TechnoLibre (http://www.technolibre.ca)
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl)
#
# Cibles du projet. Chacune délègue à un script qui porte la logique et se
# lance aussi sans make : ./run.sh, ./install.sh, ./install_dev.sh, et sous
# Windows run.cmd, install.cmd, install_dev.cmd. npm, npx et node passent par
# avec_node, qui pose le Node du projet en tête du PATH après avoir vérifié
# l'installation.
#
# make lance l'application, comme ./run.sh
# make help la liste des cibles
ifeq ($(OS),Windows_NT)
PS := powershell.exe -NoProfile -ExecutionPolicy Bypass
LANCER := $(PS) -File scripts/windows/lancer.ps1
INSTALLER := $(PS) -File scripts/windows/installer.ps1
INSTALLER_DEV := $(PS) -File scripts/windows/installer.ps1 -Dev
AVEC_NODE := $(PS) -File scripts/windows/avec_node.ps1
else
# bash, où qu'il soit : /bin/bash n'existe pas sous NixOS, et make s'y
# arrêterait avant la première recette.
SHELL := $(shell command -v bash 2>/dev/null || echo /bin/bash)
LANCER := ./run.sh
INSTALLER := ./install.sh
INSTALLER_DEV := ./install_dev.sh
AVEC_NODE := scripts/installation/avec_node.sh
endif
.DEFAULT_GOAL := run
.PHONY: run
run: ## Lance l'application : Electron sur une session graphique, sinon le serveur de Vite
$(LANCER)
.PHONY: web
web: ## Sert l'application à un navigateur, http://localhost:5173
$(LANCER) --web
.PHONY: electron
electron: ## Lance la coquille Electron
$(LANCER) --electron
.PHONY: install
install: ## Installe de quoi lancer l'application et jouer les épreuves sous node
$(INSTALLER)
.PHONY: install_dev
install_dev: ## Installe aussi Chromium, des polices et podman
$(INSTALLER_DEV)
.PHONY: test
test: ## Joue la série surveillée, sous node (§ 14.4)
$(AVEC_NODE) npm test
.PHONY: test_long
test_long: ## Joue la série longue, sous node
$(AVEC_NODE) npm run test:long
.PHONY: test_navigateur
test_navigateur: ## Joue les épreuves du navigateur, sous Chromium
$(AVEC_NODE) npm run test:navigateur
.PHONY: test_tout
test_tout: ## Joue les trois séries
$(AVEC_NODE) npm run test:tout
.PHONY: couverture
couverture: ## Mesure la couverture de la série node, module par module ; seuils durs du § 14.13
$(AVEC_NODE) npm run couverture
.PHONY: banc
banc: ## Relève les constantes du banc de mesure (§ 19.10), avant une livraison
$(AVEC_NODE) npm run banc
.PHONY: build
build: ## Construit la page dans www/
$(AVEC_NODE) npm run build
.PHONY: verifier
verifier: ## Contrôle la version, le nom du livrable et le changelog (§ 18.5)
$(AVEC_NODE) node scripts/version.js controler
.PHONY: essai_demarrage
essai_demarrage: ## Construit la page et joue une séance par gestes dans Electron, en mode portable
$(AVEC_NODE) node scripts/essai_demarrage.js
ifeq ($(OS),Windows_NT)
.PHONY: windows
windows: ##W Construit l'exécutable Windows portable (sous Linux seulement, § 16)
@echo La construction de l'executable se fait sous Linux, en conteneur : make windows.
@exit 1
.PHONY: clean
clean: ##W Retire la page construite, www/
$(PS) -Command "Remove-Item -Recurse -Force -ErrorAction SilentlyContinue www"
.PHONY: help
help: ##W Affiche cette liste
@findstr /R /C:"^[a-z_]*:.*## " /C:"^[a-z_]*:.*##W " Makefile
else
.PHONY: windows
windows: ##U Construit l'exécutable Windows portable, sous podman (§ 16)
$(AVEC_NODE) scripts/construire_windows.sh
.PHONY: verifier_systemes
verifier_systemes: ##U Installe et éprouve sur chaque système du catalogue, en conteneurs
scripts/verifier_systemes.sh
.PHONY: clean
clean: ##U Retire la page construite, www/
rm -rf www
.PHONY: help
help: ##U Affiche cette liste
@awk 'BEGIN { FS = ":.*##U? " } /^[a-z_]+:.*##U? / { printf " make %-18s %s\n", $$1, $$2 }' $(MAKEFILE_LIST)
endif