fix(lab): запускать RAV004 с первого кадра
This commit is contained in:
@@ -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 = [];
|
||||
|
||||
Reference in New Issue
Block a user