From 847ebc91a943e995b1d57210697f5426b60914b9 Mon Sep 17 00:00:00 2001 From: Sergey Matyunin Date: Sat, 26 Sep 2026 21:22:14 +0300 Subject: [PATCH] =?UTF-8?q?test(golden):=20=D0=BE=D1=82=D0=B4=D0=B5=D0=BB?= =?UTF-8?q?=D0=B8=D1=82=D1=8C=20=D1=81=D1=82=D1=80=D0=B5=D1=81=D1=81=20?= =?UTF-8?q?=D0=BB=D0=B5=D1=81=D1=82=D0=BD=D0=B8=D1=86=20=D0=BE=D1=82=20?= =?UTF-8?q?=D0=BA=D0=B0=D0=B4=D1=80=D0=BE=D0=B2=20(#663)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Performance fixture по умолчанию сохраняет максимум 250 лестниц, а визуальные large-house сцены исключают стрессовую коллекцию, уже покрытую четырьмя отдельными кадрами. Issue: #663 User-Visible: no --- demo/fixtures/large-house.mjs | 4 ++-- demo/golden/harness.mjs | 2 +- docs/images/screenshots.json | 24 ++++++++++++------------ test/large-house-fixture.test.mjs | 6 ++++-- 4 files changed, 19 insertions(+), 17 deletions(-) diff --git a/demo/fixtures/large-house.mjs b/demo/fixtures/large-house.mjs index 27020599..bac27442 100644 --- a/demo/fixtures/large-house.mjs +++ b/demo/fixtures/large-house.mjs @@ -209,7 +209,7 @@ export const LARGE_HOUSE_COUNTS = Object.freeze({ stairs: STAIR_COUNT, }); -export const makeLargeHouseFixture = () => { +export const makeLargeHouseFixture = ({ includeStairs = true } = {}) => { let openingsLeft = OPENING_COUNT; let partitionsLeft = PARTITION_COUNT; let columnsLeft = COLUMN_COUNT; @@ -247,7 +247,7 @@ export const makeLargeHouseFixture = () => { partitions: makePartitions(floor, rooms, partitionCount), wall_columns: makeColumns(floor, rooms, columnCount), decor: makeDecor(floor, decorCount), - ...(floor === 0 ? { stairs: makeStairs(floor, STAIR_COUNT) } : {}), + ...(includeStairs && floor === 0 ? { stairs: makeStairs(floor, STAIR_COUNT) } : {}), }; }); const runtime = makeRuntime(spaces); diff --git a/demo/golden/harness.mjs b/demo/golden/harness.mjs index 7a50796b..d947cbd0 100644 --- a/demo/golden/harness.mjs +++ b/demo/golden/harness.mjs @@ -42,7 +42,7 @@ const cardVersion = '0.0.0-golden'; const VERSION_RELOAD_ATTEMPT_KEY = 'houseplan-card:version-reload-target:v1'; const fixtureFor = (scenario) => scenario.fixture === 'large' - ? makeLargeHouseFixture() + ? makeLargeHouseFixture({ includeStairs: false }) : makeVisualMatrixFixture({ applianceLifecycle: !!scenario.applianceLifecycle }); const themeVars = { diff --git a/docs/images/screenshots.json b/docs/images/screenshots.json index 652c9f60..12d22d9d 100644 --- a/docs/images/screenshots.json +++ b/docs/images/screenshots.json @@ -3,7 +3,7 @@ "fixture": "synthetic-only", "chromium": "151.0.7922.34", "oxipng": null, - "sourceFingerprint": "a5bfcb5d30d01bf22c22fef05ab689a12dc639b2e15d6d1b1a48e43e0e6d9ace", + "sourceFingerprint": "8300252d3f02c22989d5b55ed383b592e0197d510d2f5cc823abe4a0ba207d38", "captureScriptSha256": "e2d14d89de793011615662af7c83c433768d4761f6cec7f0b3860c797494299e", "command": "npm run build && node demo/docs/capture.mjs", "scenarios": { @@ -15,7 +15,7 @@ }, "theme": "dark", "language": "en", - "sourceSha256": "a5bfcb5d30d01bf22c22fef05ab689a12dc639b2e15d6d1b1a48e43e0e6d9ace", + "sourceSha256": "8300252d3f02c22989d5b55ed383b592e0197d510d2f5cc823abe4a0ba207d38", "imageSha256": "1bde1bff8d4ab5f197320b54ef57186b3c07cf2121d5414ada63ce357826bfa8" }, "view-touch": { @@ -26,7 +26,7 @@ }, "theme": "dark", "language": "en", - "sourceSha256": "a5bfcb5d30d01bf22c22fef05ab689a12dc639b2e15d6d1b1a48e43e0e6d9ace", + "sourceSha256": "8300252d3f02c22989d5b55ed383b592e0197d510d2f5cc823abe4a0ba207d38", "imageSha256": "f9dd5b54f86b814c00bc84149af84485f052b103cdcc9263b5c50bf5d32c69d6" }, "space-create": { @@ -37,7 +37,7 @@ }, "theme": "dark", "language": "en", - "sourceSha256": "a5bfcb5d30d01bf22c22fef05ab689a12dc639b2e15d6d1b1a48e43e0e6d9ace", + "sourceSha256": "8300252d3f02c22989d5b55ed383b592e0197d510d2f5cc823abe4a0ba207d38", "imageSha256": "aab4811bba3afa6cc849cb9d3989d126b8c327b69a2f8f853e55fc077e0e9a1b" }, "room-contour-close": { @@ -48,7 +48,7 @@ }, "theme": "dark", "language": "en", - "sourceSha256": "a5bfcb5d30d01bf22c22fef05ab689a12dc639b2e15d6d1b1a48e43e0e6d9ace", + "sourceSha256": "8300252d3f02c22989d5b55ed383b592e0197d510d2f5cc823abe4a0ba207d38", "imageSha256": "e106ff9db6c96adb08beba12cc299a88ac5fa47c079be316f185e5657bc656f0" }, "plan-context-tray": { @@ -59,7 +59,7 @@ }, "theme": "dark", "language": "en", - "sourceSha256": "a5bfcb5d30d01bf22c22fef05ab689a12dc639b2e15d6d1b1a48e43e0e6d9ace", + "sourceSha256": "8300252d3f02c22989d5b55ed383b592e0197d510d2f5cc823abe4a0ba207d38", "imageSha256": "9b0db923fa7c8aff783b5c7050ee5b410b1b04df81a9e48bbc8111a7d0d47e76" }, "device-editor": { @@ -70,7 +70,7 @@ }, "theme": "dark", "language": "en", - "sourceSha256": "a5bfcb5d30d01bf22c22fef05ab689a12dc639b2e15d6d1b1a48e43e0e6d9ace", + "sourceSha256": "8300252d3f02c22989d5b55ed383b592e0197d510d2f5cc823abe4a0ba207d38", "imageSha256": "198c084c0a45aa3afdf79181b80d8bb0347c95f3248b4fac9e05d69eb8a35f8f" }, "device-display-preview": { @@ -81,7 +81,7 @@ }, "theme": "dark", "language": "en", - "sourceSha256": "a5bfcb5d30d01bf22c22fef05ab689a12dc639b2e15d6d1b1a48e43e0e6d9ace", + "sourceSha256": "8300252d3f02c22989d5b55ed383b592e0197d510d2f5cc823abe4a0ba207d38", "imageSha256": "e9b88d65dca74133646aa849d47bc09ad85eb8b16a168c4df6930e8f5856b5f5" }, "background-editor": { @@ -92,7 +92,7 @@ }, "theme": "dark", "language": "en", - "sourceSha256": "a5bfcb5d30d01bf22c22fef05ab689a12dc639b2e15d6d1b1a48e43e0e6d9ace", + "sourceSha256": "8300252d3f02c22989d5b55ed383b592e0197d510d2f5cc823abe4a0ba207d38", "imageSha256": "44beadd61365ac1730c1efde846e528bfe92d8935fd167f1b6bf3bbad6af8f33" }, "room-card": { @@ -103,7 +103,7 @@ }, "theme": "dark", "language": "en", - "sourceSha256": "a5bfcb5d30d01bf22c22fef05ab689a12dc639b2e15d6d1b1a48e43e0e6d9ace", + "sourceSha256": "8300252d3f02c22989d5b55ed383b592e0197d510d2f5cc823abe4a0ba207d38", "imageSha256": "d47988b03e6a078508b27b5612b6eafe8ecc33c891b589ddda1cc7c71f43b7c8" }, "device-info": { @@ -114,7 +114,7 @@ }, "theme": "dark", "language": "en", - "sourceSha256": "a5bfcb5d30d01bf22c22fef05ab689a12dc639b2e15d6d1b1a48e43e0e6d9ace", + "sourceSha256": "8300252d3f02c22989d5b55ed383b592e0197d510d2f5cc823abe4a0ba207d38", "imageSha256": "4ec8c6df671742b90ca55222917076c47c5035a6df0587282e60873c0ce5f64e" }, "pdf-export": { @@ -125,7 +125,7 @@ }, "theme": "light", "language": "en", - "sourceSha256": "a5bfcb5d30d01bf22c22fef05ab689a12dc639b2e15d6d1b1a48e43e0e6d9ace", + "sourceSha256": "8300252d3f02c22989d5b55ed383b592e0197d510d2f5cc823abe4a0ba207d38", "imageSha256": "ad3d735135b180ce015c9cda07fdcec08d7c8707abe0665734ef7b450a8a7093" } }, diff --git a/test/large-house-fixture.test.mjs b/test/large-house-fixture.test.mjs index 389ab16b..9af0fe79 100644 --- a/test/large-house-fixture.test.mjs +++ b/test/large-house-fixture.test.mjs @@ -18,6 +18,8 @@ test('large-house fixture meets the HP-PERF-01 reference counts', () => { assert.equal(Object.keys(fixture.entities).length, LARGE_HOUSE_COUNTS.devices); assert.equal(fixture.config.markers.length > 0, true); assert.equal(fixture.config.markers.every((marker) => marker.is_light === true), true); + assert.equal(makeLargeHouseFixture({ includeStairs: false }).config.spaces + .some((space) => space.stairs?.length), false, 'visual goldens can omit the stress-only collection'); }); test('large-house fixture is deterministic and geometry ids are unique per space', () => { @@ -26,8 +28,8 @@ test('large-house fixture is deterministic and geometry ids are unique per space assert.deepEqual(first, second); for (const space of first.config.spaces) { - const ids = ['rooms', 'openings', 'partitions', 'wall_columns', 'decor'] - .flatMap((field) => space[field].map((item) => item.id)); + const ids = ['rooms', 'openings', 'partitions', 'wall_columns', 'decor', 'stairs'] + .flatMap((field) => (space[field] || []).map((item) => item.id)); assert.equal(new Set(ids).size, ids.length, space.id); } });