Save a position only from a player that has played since its last save
A tab left paused further into an episode saved its older place as it reloaded, over where the listener had got to since, and the episode dropped out of Currently Listening. A jump back is now saved at once. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -200,6 +200,26 @@ test('Currently Listening, its own place below Popular, resumes an episode you s
|
||||
await expect(row.locator('.eq')).toBeHidden();
|
||||
});
|
||||
|
||||
test('a player nobody has played since it last saved does not save again', async ({ page }) => {
|
||||
// A tab left paused at 41:15 saved that as it reloaded, over the 32:48 another had reached,
|
||||
// and the episode dropped out of Currently Listening. The fixture audio does not decode, so
|
||||
// this stands in for a loaded file paused at 2 seconds and counts what savePos sends.
|
||||
const sent = await page.evaluate(() => {
|
||||
Object.defineProperty(audio, 'readyState', { get: () => 4 });
|
||||
Object.defineProperty(audio, 'currentTime', { get: () => 2, set() {} });
|
||||
let n = 0;
|
||||
navigator.sendBeacon = () => (n++, true);
|
||||
player.guid = 'ui-2'; player.feed = 'test-show'; player.entry = null; player.moved = false;
|
||||
savePos(); // what a reload, a pause or the close button calls
|
||||
const idle = n;
|
||||
player.moved = true; // what playing sets
|
||||
savePos();
|
||||
savePos(); // and once saved, it is idle again
|
||||
return [idle, n];
|
||||
});
|
||||
expect(sent).toEqual([0, 1]);
|
||||
});
|
||||
|
||||
test('the filter tabs change what is listed', async ({ page }) => {
|
||||
await page.locator('.feed', { hasText: 'Test Show' }).click();
|
||||
await expect(page.locator('.ep').first()).toBeVisible({ timeout: 20_000 });
|
||||
|
||||
Reference in New Issue
Block a user