É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:
co-authored by
Claude Opus 5.5
parent
2c43a0a69f
commit
e3b31f3269
@@ -5,8 +5,8 @@ Document temporaire de l'étape 0 : il sera supprimé avec `docs/etape-0.md`.
|
||||
Deux tests sur le téléphone :
|
||||
|
||||
- **Étape 0d : jouer une partie** (section suivante), sur le site publié ;
|
||||
- **Étape 0b : mesurer le moteur** (déjà fait le 2026-11-02), sur une page servie par
|
||||
le PC.
|
||||
- **Étape 0b : mesurer le moteur** (fait le 2026-11-02), sur une page
|
||||
servie par le PC.
|
||||
|
||||
## Étape 0d : jouer une partie sur le téléphone
|
||||
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -5,6 +5,11 @@ joueur, écrit pour lui. Ces fichiers sont la seule source (ADR 0008) :
|
||||
l'application les met en forme comme pages d'aide, et ils sont exécutés comme
|
||||
tests d'intégration sur le domaine et le moteur réel.
|
||||
|
||||
`make site` copie ce dossier dans le site publié (`docs/scenarios/`) ; l'aide
|
||||
de l'application (bouton « Aide ») lit ces copies à l'exécution
|
||||
(`app/src/ui/help.ts`). Les fichiers affichés dans l'aide sont ceux de la
|
||||
liste `FEATURES` de `help.ts`.
|
||||
|
||||
`make test` les exécute avec Cucumber : les étapes, définies dans
|
||||
`app/tests/steps/`, pilotent le domaine branché sur le vrai moteur
|
||||
WebAssembly, avec des dés imposés pour que chaque exécution soit identique. Une
|
||||
|
||||
Reference in New Issue
Block a user