Interface : écran Nouvelle partie, score du match et partie Crawford

Écran #/nouvelle-partie (type de partie, niveau, conseil du maître,
choix gardés), score du match en portrait et en paysage, videau caché
pendant la partie Crawford, « Partie suivante » ; test navigateur d'un
match en 3 points jusqu'au bout.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Pierre MARTIN
2026-11-09 23:31:26 +01:00
co-authored by Claude Opus 5.5
parent 339d699488
commit 85bdf4bb93
10 changed files with 1136 additions and 65 deletions
+18 -4
View File
@@ -819,8 +819,7 @@ async function checkAddresses() {
for (const selector of ["#menu-games", "#menu-help"]) {
check(await isLink(tab, selector), `${selector} n'est pas un lien`);
}
check((await tab.locator("#menu-new-game").and(tab.getByRole("button")).count()) === 1,
"« Nouvelle partie » n'est plus un bouton");
check(await isLink(tab, "#menu-new-game"), "« Nouvelle partie » n'est pas un lien");
await tab.goBack();
await expectScreen(tab, "retour : menu fermé", playing);
await tab.click("#menu-button");
@@ -881,8 +880,20 @@ async function openMenu() {
check(await page.isVisible("#menu"), "le menu ne s'ouvre pas");
}
/** Nouvelle partie depuis le menu : effet immédiat, bandeau 10 s. Renvoie
* le journal de la partie quittée. */
/** L'écran « Nouvelle partie » est ouvert : « Commencer » lance la partie
* choisie, et l'adresse redevient celle de la partie. */
async function startChosenGame() {
await page.waitForSelector("#new-game-start", { state: "visible", timeout: 5000 }).catch(() => {});
check(await page.isVisible("#new-game"), "l'écran « Nouvelle partie » ne s'ouvre pas");
const hash = await page.evaluate(() => location.hash);
check(hash === "#/nouvelle-partie", `écran « Nouvelle partie » à l'adresse ${hash}`);
await page.click("#new-game-start");
check((await page.evaluate(() => location.hash)) === "#/" && !(await page.isVisible("#new-game")),
"« Commencer » ne ramène pas à la partie");
}
/** Nouvelle partie depuis le menu, par l'écran « Nouvelle partie » : effet
* immédiat, bandeau 10 s. Renvoie le journal de la partie quittée. */
async function newGameFromMenu() {
const before = await savedJournal();
const started = () =>
@@ -891,6 +902,7 @@ async function newGameFromMenu() {
await openMenu();
const start = Date.now();
await page.click("#menu-new-game");
await startChosenGame();
check(await page.isVisible("#banner"), "pas de bandeau « Reprendre l'ancienne »");
check((await page.textContent("#banner")).includes("Reprendre l'ancienne"),
`bandeau : « ${await page.textContent("#banner")} »`);
@@ -1454,6 +1466,7 @@ step("mes parties");
{
const finished = await savedJournal();
await page.click("#again");
await startChosenGame();
await waitForPlayer();
const second = await savedJournal();
check(second.head !== finished.head || second.events.length !== finished.events.length,
@@ -1535,6 +1548,7 @@ log("compte de points : bulle avec la fiche du glossaire");
step("thème sombre");
await page.emulateMedia({ colorScheme: "dark" });
await page.click("#again");
await startChosenGame();
await waitForPlayer();
await shot("6-sombre");
await page.emulateMedia({ colorScheme: "light" });