fix(lab): запускать RAV004 с первого кадра

This commit is contained in:
DCCONSTRUCTIONS
2026-08-30 14:33:17 +03:00
parent 35daf73d5c
commit 9c5259dbc9
3 changed files with 152 additions and 1 deletions
@@ -6,12 +6,14 @@ import { createServer } from "vite";
let server;
let canPublishRecordedPlaybackController;
let createRecordedAutoplayGate;
let createRecordedInitialSeekGate;
let isRecordedPlaybackReady;
let isRecordedPlaybackPresentationReady;
let isUsableRecordedPlaybackRange;
let recordedPlaybackBufferState;
let recordedPlaybackRangeWhenReady;
let rerunPresentationStatus;
let shouldReapplyRecordedBlueprint;
before(async () => {
server = await createServer({
@@ -22,12 +24,14 @@ before(async () => {
({
canPublishRecordedPlaybackController,
createRecordedAutoplayGate,
createRecordedInitialSeekGate,
isRecordedPlaybackReady,
isRecordedPlaybackPresentationReady,
isUsableRecordedPlaybackRange,
recordedPlaybackBufferState,
recordedPlaybackRangeWhenReady,
rerunPresentationStatus,
shouldReapplyRecordedBlueprint,
} = await server.ssrLoadModule("/src/components/RerunViewport.tsx"));
});
@@ -159,6 +163,58 @@ test("recorded autoplay waits for the full range and then runs exactly once", ()
assert.equal(gate.attempted(), true);
});
test("paused recorded replay seeks once to its first presentable frame", () => {
const gate = createRecordedInitialSeekGate();
const seeks = [];
const range = { min: 0, max: 535_717_620_042 };
assert.equal(gate.attempt(
true,
true,
true,
range,
(value) => seeks.push(value),
39_215_263_458,
), true);
assert.equal(gate.attempt(
true,
true,
true,
range,
(value) => seeks.push(value),
50_000_000_000,
), false);
assert.deepEqual(seeks, [39_215_263_458]);
assert.equal(gate.attempted(), true);
});
test("LAB sidecar store reopen reapplies only its matching recorded blueprint", () => {
const identity = {
applicationId: "nodedc_mission_core_recorded",
recordingId: "recording-001",
};
const event = {
application_id: "nodedc_mission_core_recorded",
recording_id: "recording-001",
};
assert.equal(
shouldReapplyRecordedBlueprint(true, true, true, identity, event),
true,
);
assert.equal(
shouldReapplyRecordedBlueprint(false, true, true, identity, event),
false,
);
assert.equal(
shouldReapplyRecordedBlueprint(true, true, true, identity, {
...event,
recording_id: "recording-002",
}),
false,
);
});
test("recorded autoplay starts at the first presentable camera frame without shrinking the range", () => {
const gate = createRecordedAutoplayGate();
const seeks = [];