Il cartello d'apertura: online, su un sito mai visitato, il browser bloccava la musichetta senza un gesto (in locale no, ci si gioca da giorni); ora in quel caso il cartello aspetta un tocco («Tocca per cominciare») e poi parte coi suoi tempi. La Ghiacciomobile non ripete più le battute due volte (la scelta la dice già Andrea). Licenza (codice MIT, storia e grafica CC BY-NC-SA, eccezioni per persone vere, palio, Suno, voci XTTS con la CPML, font OFL, Wikipedia), README riscritto, scripts/check-public.sh e make check-public dentro make verify. Prove nel browser con l'autoplay permesso, più una per il caso bloccato
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01A1dxvtsZx8NE9fwjXUNDBr
This commit is contained in:
+21
-1
@@ -11,7 +11,7 @@ import { checkMultimedia } from './multimedia.browser.mjs';
|
||||
const OUT = process.env.OUT ?? '/tmp/regolo-shots';
|
||||
mkdirSync(OUT, { recursive: true });
|
||||
const server = await staticServer(), PORT = server.port;
|
||||
const browser = await chromium.launch({ args: ['--use-gl=angle', '--use-angle=swiftshader', '--enable-unsafe-swiftshader'] });
|
||||
const browser = await chromium.launch({ args: ['--autoplay-policy=no-user-gesture-required', '--use-gl=angle', '--use-angle=swiftshader', '--enable-unsafe-swiftshader'] });
|
||||
const errors = [];
|
||||
|
||||
async function open(viewport, query = '') {
|
||||
@@ -64,6 +64,23 @@ try {
|
||||
await page.waitForTimeout(350);
|
||||
await page.screenshot({ path: `${OUT}/00b-dissolvenza.png` });
|
||||
await page.waitForSelector('#splash', { state: 'hidden', timeout: 3000 });
|
||||
// Senza un gesto il browser può bloccare la musichetta (succede online su un sito mai visto, non in locale): allora
|
||||
// il cartello aspetta un tocco, con l'invito a toccare, e solo dopo parte coi suoi tempi.
|
||||
{
|
||||
const muto = await chromium.launch(), p = await muto.newPage();
|
||||
await p.goto(`http://127.0.0.1:${PORT}/`);
|
||||
await p.waitForTimeout(800);
|
||||
if (await p.evaluate(() => document.getElementById('splash').classList.contains('wait'))) {
|
||||
assert.ok(await p.isVisible('#splash .splash-hint'), 'l\'invito a toccare');
|
||||
await p.waitForTimeout(5500);
|
||||
assert.ok(await p.isHidden('#title'), 'il cartello aspetta il tocco');
|
||||
await p.click('#splash');
|
||||
assert.ok(await p.isHidden('#splash .splash-hint'));
|
||||
await p.waitForSelector('#title:not([hidden])', { timeout: 8000 });
|
||||
console.log('Cartello senza suono permesso: aspetta il tocco, poi parte.');
|
||||
} else console.log('(questo Chromium lascia suonare senza gesto: il caso bloccato non si prova qui)');
|
||||
await muto.close();
|
||||
}
|
||||
await page.screenshot({ path: `${OUT}/01-titolo.png` });
|
||||
assert.match(await page.textContent('#title .version'), /^v\d+\.\d+\.\d+$/, 'la versione nell\'angolo del titolo');
|
||||
// Col codice lento ad arrivare (rete vera) il cartello aspetta il titolo: non sfuma prima per conto suo.
|
||||
@@ -83,6 +100,9 @@ try {
|
||||
});
|
||||
await slow.route('**/src/main.js', async route => { await new Promise(r => setTimeout(r, 2000)); await route.continue(); });
|
||||
await slow.goto(`http://127.0.0.1:${PORT}/`);
|
||||
await slow.waitForSelector('#splash');
|
||||
await slow.waitForTimeout(300);
|
||||
if (await slow.evaluate(() => document.getElementById('splash').classList.contains('wait'))) await slow.click('#splash');
|
||||
await slow.waitForSelector('#title:not([hidden])', { timeout: 12000 });
|
||||
const opacity = await slow.evaluate(() => window.titleRevealOpacity);
|
||||
assert.ok(opacity > 0.9, `il cartello era già sfumato (${opacity}) quando è comparso il titolo`);
|
||||
|
||||
Reference in New Issue
Block a user