aboutsummaryrefslogtreecommitdiffstats
path: root/tools/live-stream-test.js
diff options
context:
space:
mode:
authorAdam Soltys <[email protected]>2026-10-18 08:16:57 -0700
committerAdam Soltys <[email protected]>2026-10-18 08:17:11 -0700
commita9cdc8a6fd7abd38a185f9d8828531374307cf41 (patch)
tree04aa9267fcc9538f50ccf0319fa094e16a05934f /tools/live-stream-test.js
parent88194134aebe4a516f32afd39ac95cc757024e9b (diff)
downloadcoinosv3-a9cdc8a6fd7abd38a185f9d8828531374307cf41.tar.gz
coinosv3-a9cdc8a6fd7abd38a185f9d8828531374307cf41.zip
Live rings and going live. A face whose person is streaming wears a red ring (LIVE under the bigger ones) and opens the stream. Go live (the composer's red dot, or your profile) sends your camera or screen to coinos's live server (coinosv3-server live/: the recording over a WebSocket, HLS out), announces it as your kind 30311 once three segments exist (Chrome's own player won't start a live playlist with fewer), refreshes it each minute with how many watch, reconnects to the same stream if the link drops, and ends it with its recording. Needs a coinos name. Also: the service worker leaves /live/ and /vmedia/hls alone (it froze a live playlist at its first copy).
Co-Authored-By: Claude Opus 5.5 <[email protected]> Claude-Session: https://claude.ai/code/session_013ZDf1cyCQLkfjftYhymZAg
Diffstat (limited to 'tools/live-stream-test.js')
-rw-r--r--tools/live-stream-test.js5
1 files changed, 5 insertions, 0 deletions
diff --git a/tools/live-stream-test.js b/tools/live-stream-test.js
index 7bc0228..4b8172d 100644
--- a/tools/live-stream-test.js
+++ b/tools/live-stream-test.js
@@ -145,6 +145,11 @@ try {
check('...titled, marked LIVE, with how many watch and who', tile.length && /LIVE/.test(tile[0]) && /12 watching/.test(tile[0]) && /Building coinos live/.test(tile[0]), JSON.stringify(tile));
check('...and a stream unrefreshed for two hours is not there', tile.length === 1 && !(await page.evaluate(() => document.body.innerText.includes('Forgotten stream'))));
check('a post linking the stream shows it as a card', await waitFor(() => !!document.querySelector('.notes-feed .live-card'), 15000));
+ check('the host\'s face on their post wears the live ring', await waitFor((pk) => !!document.querySelector('.notes-feed .note-post .note-avatar.live-ring'), 5000));
+ await page.evaluate(() => document.querySelector('.notes-feed .note-post .note-avatar.live-ring').click());
+ check('...and a tap on it opens the stream', await waitFor(() => !!document.querySelector('.live-page'), 5000));
+ await page.goBack();
+ await waitFor(() => !document.querySelector('.live-page') && !!document.querySelector('.live-strip'), 5000);
console.log('\n[the stream\'s page]');
await page.evaluate(() => document.querySelector('.live-strip .live-tile').click());