Passando a un'altra app sul telefono musica e voce si fermano e la partita va in pausa
Nascosta la pagina il browser non disegna più fotogrammi, e la musica (che sfuma a ogni fotogramma) restava accesa. Ora Music.setAway ferma subito tutti i brani; voce e musichetta del cartello si fermano, la partita va in pausa e riparte con Riprendi. Nello stato: Campomigliaio si collega dal bivio, dopo La Luna. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01ApqNBvNbNCwXqR2RLo8QJh
This commit is contained in:
@@ -157,6 +157,15 @@ try {
|
||||
await page.locator('#voice-volume').fill('70');
|
||||
assert.deepEqual(await page.evaluate(() => JSON.parse(localStorage.getItem('leggenda-regolo-audio'))), { volume: 0.3, muted: false, voices: 0.7 });
|
||||
assert.equal(await page.evaluate(() => voices.volume), 0.7);
|
||||
// Sul telefono si passa a un'altra app: la pagina diventa nascosta, la musica si ferma subito e la partita va in
|
||||
// pausa; tornando la musica riparte solo con Riprendi (la pausa la tiene ferma).
|
||||
const hide = hidden => page.evaluate(h => { Object.defineProperty(document, 'hidden', { value: h, configurable: true }); document.dispatchEvent(new Event('visibilitychange')); }, hidden);
|
||||
await hide(true);
|
||||
assert.ok(await page.evaluate(() => music.current.audio.paused), 'nascosta la pagina, la musica è ferma');
|
||||
assert.ok(await page.isVisible('#pause'), 'e la partita è in pausa');
|
||||
await hide(false);
|
||||
await page.click('#resume');
|
||||
await page.waitForFunction(() => !music.current.audio.paused, null, { timeout: 5000 });
|
||||
|
||||
for (const [verb, target, item] of solution) {
|
||||
if (verb === 'choose') {
|
||||
|
||||
@@ -58,3 +58,23 @@ test('in pausa la musica sfuma fino a zero e si ferma', () => {
|
||||
assert.ok(!m.current.audio.paused && played.length === 2, 'riprende lo stesso brano');
|
||||
delete globalThis.Audio;
|
||||
});
|
||||
|
||||
test('passando a un\'altra app la musica si ferma subito, e tornando riparte', () => {
|
||||
globalThis.Audio ??= class { constructor(src) { this.src = src; this.volume = 0; this.paused = true; } play() { this.paused = false; return Promise.resolve(); } pause() { this.paused = true; } };
|
||||
const m = new Music({ volume: 0.6 });
|
||||
for (let i = 0; i < 20; i++) m.update('a.mp3', 0.1);
|
||||
m.update('b.mp3', 0.1); // a.mp3 sta ancora sfumando
|
||||
const [old, now] = [m.old[0], m.current.audio];
|
||||
assert.ok(!now.paused && !old.paused);
|
||||
m.setAway(true);
|
||||
assert.ok(now.paused && old.paused, 'ferma subito, senza aspettare i fotogrammi');
|
||||
m.update('b.mp3', 0.1);
|
||||
assert.ok(now.paused, 'finché la pagina è nascosta non riparte');
|
||||
m.setAway(false);
|
||||
m.update('b.mp3', 0.1);
|
||||
assert.ok(!now.paused, 'tornati, riparte');
|
||||
m.hold = true;
|
||||
m.setAway(true); m.setAway(false);
|
||||
m.update('b.mp3', 0.1);
|
||||
assert.ok(now.paused, 'con la pausa aperta resta ferma');
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user