Étape 0d.2 : guide de test, aide documentée, résultat du plan

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Pierre MARTIN
2026-11-03 00:46:48 +01:00
co-authored by Claude Opus 5.5
parent 2c43a0a69f
commit e3b31f3269
3 changed files with 62 additions and 4 deletions
+55 -2
View File
@@ -2,7 +2,7 @@
- **Date** : 2026-11-02
- **Étape** : 0d.2
- **Statut** : en cours
- **Statut** : terminé (2026-11-03)
- **Exécutant** : sous-agent general-purpose, dans un worktree isolé
## Objectif
@@ -101,4 +101,57 @@ partie jouée dans les navigateurs sans interface, taille du site, difficultés,
## Résultat
À remplir à la clôture.
Fait en deux sessions de sous-agent (la première interrompue par la fin
d'un quota, la seconde l'a reprise), sur la branche `plateau-ui-travail`.
- **Domaine** (`app/src/domain/game/game.ts`) : reprise d'une partie depuis
son journal, plateau vu de chaque camp, demi-coups possibles à la suite de
ceux déjà saisis, droit de doubler ; tout vient du moteur.
- **Interface** (`app/src/ui/`) : plateau en SVG (24 cases, barre, pions
sortis, dés, videau), saisie au toucher avec cases d'arrivée en
surbrillance, annulation, boutons du jet, du videau et de nouvelle partie,
coup de l'ordinateur affiché avec son temps, fin de partie (simple, gammon,
backgammon, points), reprise depuis `localStorage` (`app/src/storage/`),
textes dans `texts.ts`, thème clair et sombre en variables CSS
(`web/app.css`).
- **Assemblage** : `app/src/main.ts`, seul point d'entrée autorisé à tout
importer (règles dependency-cruiser) ; moteur dans le Web Worker.
- **Aide** (`app/src/ui/help.ts`) : scénario « Jouer une partie contre
l'ordinateur » et fiches du glossaire (terme et « En bref »), lus à
l'exécution dans les copies de `docs/` faites par `make site`.
- **PWA** : manifeste, icônes provisoires, service worker qui met en cache
les 70 fichiers du site (empreinte du contenu comme version), enregistré
une fois le moteur chargé.
- **Site** : application à la racine, pages de test sous `/moteur/` ; CSP
dans `deploy/Caddyfile`, vérifiée par `tests/test_site.sh` (en-tête) et
dans les navigateurs (aucune violation, script en ligne bloqué). Site de
9,1 Mo (70 fichiers, dont 8,6 Mo pour le moteur), archive de 8,8 Mo.
- **Tests** : tests unitaires de l'interface et du domaine ; `make
test-browser` (Playwright, Apache-2.0, hors de `make test` : plusieurs
minutes et une image de 3 Go) joue une partie complète dans Chromium et
Firefox sans écran : videau proposé des deux côtés, reprise après
rechargement, aide, thème sombre, hors ligne, CSP. Les deux passent.
- **Guide de test** : section « Étape 0d » de `docs/guide-test-etape-0.md`.
Deux défauts trouvés par la vérification dans les navigateurs et corrigés :
1. **Pile du moteur WebAssembly** : `callMain` d'Emscripten laissait ses
arguments sur la pile (64 Ko) ; vers la 540e commande d'une partie, elle
débordait (moteur muet dans Firefox, onglet planté dans Chromium,
« memory access out of bounds » sous Node). La pile est remise en place
après chaque commande (`web/engine-wasm.mjs`) ; test de 3000 commandes.
2. **Installation du service worker dans Chromium** : elle échouait quand le
Worker téléchargeait les données du moteur au même moment ; le service
worker est désormais enregistré une fois le moteur chargé.
Écarts et limites :
- le hors ligne n'est vraiment simulé que dans Chromium (Firefox sous
Playwright refuse toute navigation hors ligne) : à confirmer en mode avion
sur le téléphone ;
- temps des coups de l'ordinateur en niveau standard, sur ce PC chargé :
0,6 s au plus dans Chromium, jusqu'à 4,6 s dans Firefox ; le critère de
2 s est à mesurer sur le Fairphone 4 ;
- thème sombre : les pions foncés sur les cases foncées restent lisibles
grâce à leur contour, mais le contraste est le point faible de la palette
provisoire.