Bilan : ne se redessine que si ce qu'il montre change ; le test attend son mini-plateau

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 <noreply@anthropic.com>
This commit is contained in:
Pierre MARTIN
2026-11-10 16:03:01 +01:00
co-authored by Claude Opus 5.5
parent f2417097f9
commit 9f72b6212f
2 changed files with 19 additions and 2 deletions
+17 -2
View File
@@ -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;
+2
View File
@@ -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() {