aboutsummaryrefslogtreecommitdiffstats
path: root/tools/go-live-test.js
diff options
context:
space:
mode:
authorAdam Soltys <[email protected]>2026-10-19 11:15:35 -0700
committerAdam Soltys <[email protected]>2026-10-19 11:15:35 -0700
commit38d99f6e7f61bfc854e0349ac75d33f2b76ae1f8 (patch)
treefe329311849295e9828ff23922974d06b02b06cd /tools/go-live-test.js
parent0898bb16eb598215ab66c0e86c28a9da063c9357 (diff)
downloadcoinosv3-38d99f6e7f61bfc854e0349ac75d33f2b76ae1f8.tar.gz
coinosv3-38d99f6e7f61bfc854e0349ac75d33f2b76ae1f8.zip
Streams: Delete recording, and Past streams that scroll on.
- **Delete recording:** your own ended stream's page has the button. The live server lets the recording go, and the stream is announced again without it, so other apps drop the link too. A deleted one leaves Past streams and says the streamer deleted it. - **Admin:** the Take down button no longer shows on the admin's own streams. - **Past streams** scroll on: 24 at a time as the grid's foot comes near, then older ones from the relays (before the oldest held), until a page brings nothing. They're no longer cut off at a month. Co-Authored-By: Claude Opus 5.5 <[email protected]> Claude-Session: https://claude.ai/code/session_013ZDf1cyCQLkfjftYhymZAg
Diffstat (limited to 'tools/go-live-test.js')
-rw-r--r--tools/go-live-test.js10
1 files changed, 10 insertions, 0 deletions
diff --git a/tools/go-live-test.js b/tools/go-live-test.js
index 575f3ab..c3fc8e3 100644
--- a/tools/go-live-test.js
+++ b/tools/go-live-test.js
@@ -269,6 +269,16 @@ try {
const endedEv = (await lives(page)).at(-1);
check('...the same stream, with its recording', tag(endedEv, 'd') === tag(lost, 'd') && /index\.m3u8$/.test(tag(endedEv, 'recording') || ''), JSON.stringify(endedEv.tags));
check('...and the End button goes', await waitFor(() => !document.querySelector('.live-end-stale'), 5000));
+
+ console.log('\n[deleting your recording]');
+ check('the streamer has Delete recording on their ended stream', await waitFor(() => !!document.querySelector('.live-delete'), 25000));
+ const n2 = (await lives(page)).length;
+ await page.evaluate(() => document.querySelector('.live-delete').click());
+ check('...deleting it says so, and the button goes', await waitFor(() => /deleted this recording/.test(document.body.innerText) && !document.querySelector('.live-delete'), 8000),
+ await page.evaluate(() => document.querySelector('.live-page')?.innerText.slice(0, 200)));
+ check('...the server has let it go (410)', (await fetch(tag(lost, 'streaming').replace('live.m3u8', 'index.m3u8'))).status === 410);
+ const redone = (await lives(page)).slice(n2).at(-1);
+ check('...and the stream is announced again, ended, with no recording', !!redone && tag(redone, 'd') === tag(lost, 'd') && tag(redone, 'status') === 'ended' && !redone.tags.some((x) => x[0] === 'recording'), JSON.stringify(redone && redone.tags));
check('no page errors', !errs.length, errs.join(' | '));
} catch (e) { console.error(e); ok = false; } finally {
await browser.close(); server.stop(true); names.stop(true);