From 9f72b6212fd5919d66d86b1fcc3091eee7bd1385 Mon Sep 17 00:00:00 2001 From: Pierre MARTIN Date: Tue, 10 Nov 2026 16:03:01 +0100 Subject: [PATCH] Bilan : ne se redessine que si ce qu'il montre change ; le test attend son mini-plateau MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Les analyses de l'ordinateur et les chances de gagner, rangées en arrière-plan pour l'écran d'analyse, redessinaient tout le bilan, et son mini-plateau disparaissait le temps d'être redessiné. Co-Authored-By: Claude Opus 5.5 --- app/src/ui/summary-view.ts | 19 +++++++++++++++++-- tests/browser/play.mjs | 2 ++ 2 files changed, 19 insertions(+), 2 deletions(-) diff --git a/app/src/ui/summary-view.ts b/app/src/ui/summary-view.ts index c289ec9..3b22ecf 100644 --- a/app/src/ui/summary-view.ts +++ b/app/src/ui/summary-view.ts @@ -13,7 +13,6 @@ import { type GameSummary, - missingAnalyses, readyForSummary, summarizeAnalysis, } from "../domain/analysis/game-analysis.js"; @@ -112,15 +111,31 @@ export function createSummaryView(options: SummaryViewOptions): SummaryView { function render(data: SummaryData | null): void { const ready = data !== null && data.phrases !== null && readyForSummary(data.journal); const summary = ready ? summarizeAnalysis(data.journal) : null; + // Seulement ce que le bilan montre : les analyses qui arrivent + // ensuite en arrière-plan pour l'écran d'analyse (coups de + // l'ordinateur, chances de gagner) ne le redessinent pas, sinon le + // panneau et son mini-plateau sauteraient sous les yeux du joueur. + const shown = + summary === null || data === null || data.phrases === null + ? null + : { + counts: summary.counts, + level: summary.player.errorRate.level, + dice: summary.player.luck.rating, + reading: summaryReading(data.phrases, summary), + toReview: summary.toReview?.advice.eventId ?? null, + turn: summary.toReview?.turn ?? null, + }; const key = data === null ? "missing" : [ data.id, data.end?.title ?? "", + data.end?.detail ?? "", data.afterLabel ?? "", ready, - ready ? JSON.stringify(summary) : missingAnalyses(data.journal).length, + JSON.stringify(shown), ].join("|"); if (key === drawn) { return; diff --git a/tests/browser/play.mjs b/tests/browser/play.mjs index 52b774c..94f1cd8 100644 --- a/tests/browser/play.mjs +++ b/tests/browser/play.mjs @@ -1538,6 +1538,8 @@ for (let actions = 0; ; actions++) { // Le panneau de fin de partie, puis le bilan à sa place une fois // l'analyse prête (étape 1e, testé en détail par bilan.mjs). await page.waitForSelector('#summary[data-ready="true"]', { timeout: 120_000 }); +// Le bilan posé : son mini-plateau dessiné (ou « Aucun coup à revoir »). +await page.waitForSelector("#summary-board .board-frame, #summary .summary-none", { state: "attached" }); const journal = await savedJournal(); /** Le titre du bilan et la phrase du résultat. */ async function summaryResult() {