All'Ingorgo Andrea ha la sua birra (foglio di Codex): camminando la tiene davanti al petto, parlando pure, e fermo alza il bicchiere schiumante a tempo con la folla (Andrea)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GiECd9RWGMKV7n3K1mdy8T
This commit is contained in:
2026-10-31 15:20:22 +01:00
co-authored by Claude Opus 5.5
parent 70f4e641dc
commit 3ba108cf88
6 changed files with 93 additions and 18 deletions
-17
View File
@@ -1,17 +0,0 @@
import { chromium } from 'playwright';
import { staticServer } from './helpers.mjs';
const server = await staticServer();
const browser = await chromium.launch({ args: ['--use-gl=angle', '--use-angle=swiftshader', '--enable-unsafe-swiftshader'] });
const page = await browser.newPage({ viewport: { width: 1280, height: 860 } });
await page.goto(`http://127.0.0.1:${server.port}/`);
await page.click('#splash'); await page.click('#new-game'); await page.click('#rione [data-rione="campomigliaio"]'); await page.click('#skip-intro');
for (const [scene, at] of JSON.parse(process.env.SPOTS)) {
await page.evaluate(async ([scene, at]) => {
const { settle } = await import('/tests/helpers.mjs');
settle(game); game.state.flags.ingorgo = true;
game.go(scene, at, 'right'); settle(game);
}, [scene, at]);
await page.waitForTimeout(1500);
await page.screenshot({ path: `${process.env.S}/folla-${scene}-${at[1]}.png`, clip: { x: 98, y: 60, width: 1084, height: 610 } });
}
await browser.close(); server.kill();
+10
View File
@@ -168,6 +168,16 @@ test('le musiche e gli sfondi della festa esistono', () => {
for (const f of files) assert.ok(existsSync(new URL('../' + f, import.meta.url)), `manca ${f}`);
});
test('all\'Ingorgo Andrea ha la birra: il foglio coi passi, il braccio alzato a tempo e la battuta', async () => {
const { readFileSync } = await import('node:fs');
const atlas = JSON.parse(readFileSync(new URL('../assets/characters/andrea-birra.json', import.meta.url)));
for (const f of ['walk_1', 'walk_2', 'walk_3', 'walk_4', 'cheer_1', 'cheer_2', 'cheer_3', 'talk']) assert.ok(atlas.frames[f], f);
assert.equal(story.characters.andrea_birra.sprite, 'assets/characters/andrea-birra.json');
const { festa } = await import('../src/engine/render.js');
const g = new Game(story); g.go('piazza'); settle(g);
assert.equal(festa(g, 0), null, 'senza la festa (e senza il foglio caricato) Andrea è quello di sempre');
});
test('alla festa Andrea sta dentro la folla: dalla vita in giù la gente dello sfondo gli passa davanti', async () => {
const { crowdFront } = await import('../src/engine/render.js');
const g = new Game(story); g.go('piazzetta', [330, 320]); settle(g);