From c3d41d1b4f042d09a637b375ce930190b7ea0d8c Mon Sep 17 00:00:00 2001 From: Christophe Besson Date: Sat, 17 Oct 2026 14:42:51 +0200 Subject: fix(spa): a reconnection's resume calls the landing, not a number A constant in startStream hid resumeAt, so a reconnection with read-ahead left the player waiting and the film froze at the end of its buffer. Co-Authored-By: Claude Opus 5.5 --- packages/meshbay-hub/tests/test_video_reconnect.py | 15 +++++++++++++++ 1 file changed, 15 insertions(+) (limited to 'packages/meshbay-hub/tests/test_video_reconnect.py') diff --git a/packages/meshbay-hub/tests/test_video_reconnect.py b/packages/meshbay-hub/tests/test_video_reconnect.py index 91aa87b0..f888ec16 100644 --- a/packages/meshbay-hub/tests/test_video_reconnect.py +++ b/packages/meshbay-hub/tests/test_video_reconnect.py @@ -250,3 +250,18 @@ def test_a_new_stream_and_a_seek_both_clear_the_resume_flag(app): assert "resumingRef.current = false" in seek, ( "a seek after an unlanded resume takes the resume branch and keeps the " "buffer it was supposed to discard") + + +def test_the_landings_are_the_functions_and_nothing_hides_them(app): + # `onStreamInit` picks its landing by name, inside `startStream`, and + # `startStream` once declared its own `resumeAt`: the position the film was + # left at, a number. That one was in scope, so a reconnection's landing + # called a number, threw where nothing reported it, and left the player + # waiting for a landing that never came: the read-ahead played out and the + # film froze at its end, every time (measured on a phone moving between + # mobile data and Wi-Fi, 2026-10-17). + player = _player(app) + for name in ("resumeAt", "reinitAt"): + found = re.findall(rf"\b(?:const|let|var|function)\s+{name}\b", player) + assert len(found) == 1, f"{name} is declared {len(found)} times in the player" + assert f"const {name} = async" in player -- cgit v1.2.3