Cartello d'apertura «Manzolo (Poca) Art Presents»; il primo fotogramma non congela più il gioco

Il cartello dura 5 secondi prima del titolo e si salta con un clic o un tasto; il test nel browser
lo controlla. Il primo timestamp di requestAnimationFrame può precedere quello del caricamento:
il dt negativo dava alla musica un volume sotto zero, il browser lanciava un errore e il ciclo
dei fotogrammi si fermava (una volta su tre nella prova in orizzontale).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UdeKd62opy9PKgpQXtVctF
This commit is contained in:
2026-10-23 13:26:43 +02:00
co-authored by Claude Opus 5.5
parent 33e2598718
commit 5a07b5effc
4 changed files with 49 additions and 5 deletions
+9 -1
View File
@@ -44,7 +44,13 @@ const hotspotCenter = (page, id) => page.evaluate(id => { const h = game.hotspot
try {
const page = await open({ width: 1280, height: 860 });
await page.waitForSelector('#title:not([hidden])');
// Il cartello d'apertura, poi da solo il titolo.
assert.match(await page.textContent('#splash'), /Manzolo\s*\(Poca\)\s*Art\s*Presents/);
assert.ok(await page.isHidden('#title'), 'il titolo aspetta la fine del cartello');
await page.waitForTimeout(2800);
await page.screenshot({ path: `${OUT}/00-cartello.png` });
await page.waitForSelector('#title:not([hidden])', { timeout: 8000 });
assert.ok(await page.isHidden('#splash'), 'il cartello sparisce');
await page.screenshot({ path: `${OUT}/01-titolo.png` });
await page.click('#new-game');
// L'introduzione: una riga per clic, poi comincia la partita.
@@ -108,6 +114,8 @@ try {
assert.equal(await page.evaluate(() => game.state.scene), 'trebbio');
const phone = await open({ width: 390, height: 844 });
await phone.click('#splash'); // un clic salta il cartello
assert.ok(await phone.isVisible('#title'), 'il clic sul cartello porta al titolo');
await phone.click('#new-game');
await phone.click('#skip-intro');
await settle(phone);