Il taccuino: le tappe del capitolo e l'obiettivo di adesso (tasto N)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01ApqNBvNbNCwXqR2RLo8QJh
This commit is contained in:
2026-10-24 21:36:33 +02:00
co-authored by Claude Opus 5.5
parent b24a27b0e8
commit 7dc89c154b
8 changed files with 81 additions and 2 deletions
+8 -1
View File
@@ -238,8 +238,15 @@ try {
await page.waitForSelector('#continue:not([hidden])');
await page.click('#continue');
assert.equal(await page.evaluate(() => game.state.scene), 'trebbio');
// La mappa: dal Trebbio alla Piazza con due clic; i posti mai visti (la Pieve) non ci sono.
await settle(page);
// Il taccuino (N): la tappa di adesso in evidenza, Esc lo chiude.
await page.keyboard.press('n');
assert.ok(await page.isVisible('#notebook'));
assert.ok((await page.textContent('#notebook-list li.now')).length > 10, 'c\'è l\'obiettivo di adesso');
await page.screenshot({ path: `${OUT}/07a-taccuino.png` });
await page.keyboard.press('Escape');
assert.ok(await page.isHidden('#notebook'));
// La mappa: dal Trebbio alla Piazza con due clic; i posti mai visti (la Pieve) non ci sono.
await page.click('#map-button');
assert.equal(await page.locator('#map-board button[data-scene="pieve"]').count(), 0, 'la Pieve non è ancora vista');
assert.ok(await page.isVisible('#map-board button.here[data-scene="trebbio"]'));
+18
View File
@@ -104,6 +104,24 @@ test('i crediti: i nomi di ogni voce escono in ordine casuale, sempre tutti', ()
assert.ok(orders.size > 3, `${idee}: l'ordine non cambia`);
});
test('il taccuino: lungo la soluzione le tappe si spuntano in ordine, una alla volta, e alla fine sono tutte fatte', () => {
const g = new Game(story);
g.go(story.start.scene, story.start.at);
settle(g);
assert.equal(g.notebook().done.length, 0);
assert.match(g.notebook().now, /vecchietti/);
let last = 0;
for (const [verb, target, item] of solution) {
if (verb === 'choose') g.choose(g.options().findIndex(o => o.text === target)); else g.act(verb, target, item);
settle(g);
const n = g.notebook().done.length;
assert.ok(n === last || n === last + 1, `tappe saltate dopo ${verb} ${target}`);
last = n;
}
assert.equal(g.notebook().now, null);
assert.equal(g.notebook().done.length, story.notebook.length);
});
test('la ricerca della mappa: pezzi di parola, senza maiuscole, accenti e apostrofi', () => {
assert.ok(matchPlace('Campomigliaio', 'camp'));
assert.ok(matchPlace('Via de\' Medici', 'de medici'));