feat: edit moving source trajectories
This commit is contained in:
@@ -100,6 +100,16 @@ test("Dataset Builder 전체 저장·재연결 흐름이 동일한 scene과 prev
|
||||
assertNear(Number(documentObject.querySelector("#source-x").value), 0.3, 0.002, "canvas x");
|
||||
assertNear(Number(documentObject.querySelector("#source-y").value), 0.225, 0.002, "canvas y");
|
||||
|
||||
dispatchChecked(windowObject, documentObject.querySelector("#source-motion"), true);
|
||||
assertEqual(documentObject.querySelectorAll(".trajectory-row").length, 2, "default trajectory points");
|
||||
assertEqual(documentObject.querySelector(".trajectory-row input").value, "0", "trajectory starts at zero");
|
||||
documentObject.querySelector("#add-keyframe-button").click();
|
||||
assertEqual(documentObject.querySelectorAll(".trajectory-row").length, 3, "keyframe added");
|
||||
documentObject.querySelectorAll(".trajectory-row")[1].querySelector(".trajectory-row__remove").click();
|
||||
assertEqual(documentObject.querySelectorAll(".trajectory-row").length, 2, "keyframe removed");
|
||||
dispatchValue(windowObject, documentObject.querySelector("#preview-time"), "0.1");
|
||||
assertEqual(documentObject.querySelector("#preview-time-value").textContent, "0.10 s", "preview time label");
|
||||
|
||||
dispatchValue(windowObject, documentObject.querySelector("#ambient-type"), "asset", "change");
|
||||
dispatchChecked(windowObject, documentObject.querySelector("#ambient-loop"), true);
|
||||
await waitFor(() => documentObject.documentElement.dataset.sceneValid === "true", "편집 scene 검증");
|
||||
@@ -122,6 +132,9 @@ test("Dataset Builder 전체 저장·재연결 흐름이 동일한 scene과 prev
|
||||
const firstScene = JSON.parse(firstJsonText);
|
||||
assertEqual(firstScene.sources.length, 2, "exported source count");
|
||||
assertEqual(firstScene.sources[1].signal.loop, true, "source loop exported");
|
||||
assertEqual(firstScene.sources[1].trajectory.length, 2, "trajectory exported");
|
||||
assertEqual(firstScene.sources[1].trajectory[0].position.join(","), firstScene.sources[1].position.join(","), "fallback position synced");
|
||||
assertEqual(firstScene.sources[1].trajectory[1].time, firstScene.duration, "trajectory spans scene");
|
||||
assertEqual(firstScene.ambient[0].signal.loop, true, "ambient loop exported");
|
||||
assertEqual(firstScene.image.widthPixels, 640, "image width exported");
|
||||
assert(firstScene.assets.every((asset) => /^[a-f0-9]{64}$/.test(asset.sha256)), "asset hashes exported");
|
||||
|
||||
Reference in New Issue
Block a user