mirror of
https://github.com/Matysh/houseplan-card
synced 2026-10-07 06:59:46 +00:00
test: закрыть отпечаток документации и добить свидетеля полей (#594)
Две находки код-ревью r1 из трёх; третья — эталоны — снаружи песочницы, см. комментарий в issue. **Отпечаток скриншотов.** `check-docs` краснел ожидаемо: отпечаток считается от всего `src/**`, а диф его трогает. Прогнал `npm run docs:accept -- --identical` — все одиннадцать кадров совпали с закоммиченными **попиксельно**, поэтому принят только отпечаток исходников (`b678af43`), ни один PNG не переснят. Это и есть доказательство среды по правилу #334/#401: снимать можно где угодно, принять получится лишь там, где кадры воспроизводятся. **Свидетель полей.** Ревьюер прав: снимок черновика доказывал «пишет только своё» для трёх полей из восьми, а перетипизированный `FILL_CHOICES` и выбор зоны исполнимого oracle не имели вовсе. Добавлены две проверки по образцу соседних: смена зоны меняет только `_areaSel`, смена режима заливки — только `_roomFill`. Зона переключается на «Без зоны»: свободных зон в фикстуре может не остаться, а этот вариант есть всегда, и имя уже заполнено, поэтому автоподстановка имени по зоне в игру не вступает. Issue: #594 User-Visible: no
This commit is contained in:
@@ -198,6 +198,31 @@ const res = await page.evaluate(async () => {
|
||||
range.dispatchEvent(new Event('input', { bubbles: true }));
|
||||
await c.updateComplete;
|
||||
out.scaleWritesOnlyItsOwnKey = JSON.stringify(changedFields(before, draft())) === JSON.stringify(['nameScale']);
|
||||
// Область: меняется только область (и имя, если оно было пустым, — это
|
||||
// давнее поведение селектора, а не набора).
|
||||
before = draft();
|
||||
const areaSelect = sr().querySelector('hp-dialog .areasel');
|
||||
// Свободных зон в фикстуре может не остаться — комната держит единственную.
|
||||
// «Без зоны» доступна всегда, и для проверки соседа этого достаточно: имя уже
|
||||
// заполнено, поэтому автоподстановка имени по зоне в игру не вступает.
|
||||
const values = [...areaSelect.options].map((o) => o.value);
|
||||
const otherArea = c._areaSel ? '' : values.find((v) => v);
|
||||
out.areaOptionAvailable = otherArea !== undefined;
|
||||
areaSelect.value = otherArea;
|
||||
areaSelect.dispatchEvent(new Event('change', { bubbles: true }));
|
||||
await c.updateComplete;
|
||||
out.areaWritesOnlyItsOwnKey = JSON.stringify(changedFields(before, draft())) === JSON.stringify(['area']);
|
||||
// Режим заливки: перетипизированный FILL_CHOICES пишет в _roomFill и, уходя
|
||||
// с «Свой цвет», обнуляет цвет — это его давний контракт (#581), а не сосед.
|
||||
before = draft();
|
||||
const tempRadio = [...sr().querySelectorAll('hp-dialog .srcrow')]
|
||||
.find((l) => l.textContent.trim() === c._t('fill.temp'))?.querySelector('input[type="radio"]');
|
||||
out.fillOptionAvailable = !!tempRadio;
|
||||
tempRadio.checked = true;
|
||||
tempRadio.dispatchEvent(new Event('change', { bubbles: true }));
|
||||
await c.updateComplete;
|
||||
out.fillWritesOnlyItsOwnKey = JSON.stringify(changedFields(before, draft())) === JSON.stringify(['fill'])
|
||||
&& c._roomFill === 'temp';
|
||||
// Источник влажности: сегмент открывает список и не трогает температуру.
|
||||
before = draft();
|
||||
const humSeg = segmentOf('hum');
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
"fixture": "synthetic-only",
|
||||
"chromium": "151.0.7922.34",
|
||||
"oxipng": "oxipng 10.2.0",
|
||||
"sourceFingerprint": "9b5b6618ac78ca56b3d724f998451dcbff19b20619b8abecd35088aee7a0775a",
|
||||
"sourceFingerprint": "b678af433a400f150ea1cf4cdb4e585a02e9b5f8e3cd3fa236a78178ffe6de96",
|
||||
"captureScriptSha256": "9e4b0ae533407fe003a129078aec020f2c83d67cdb6fc6da696ce3d829beaeb5",
|
||||
"command": "npm run build && node demo/docs/capture.mjs",
|
||||
"scenarios": {
|
||||
@@ -15,7 +15,7 @@
|
||||
},
|
||||
"theme": "dark",
|
||||
"language": "en",
|
||||
"sourceSha256": "9b5b6618ac78ca56b3d724f998451dcbff19b20619b8abecd35088aee7a0775a",
|
||||
"sourceSha256": "b678af433a400f150ea1cf4cdb4e585a02e9b5f8e3cd3fa236a78178ffe6de96",
|
||||
"imageSha256": "5d1e816c2fde72316809991e9651e242d3cbcd897fb9db0554dc3bde943486f5"
|
||||
},
|
||||
"view-touch": {
|
||||
@@ -26,7 +26,7 @@
|
||||
},
|
||||
"theme": "dark",
|
||||
"language": "en",
|
||||
"sourceSha256": "9b5b6618ac78ca56b3d724f998451dcbff19b20619b8abecd35088aee7a0775a",
|
||||
"sourceSha256": "b678af433a400f150ea1cf4cdb4e585a02e9b5f8e3cd3fa236a78178ffe6de96",
|
||||
"imageSha256": "bc2001f9cd51715a38ad8d913b1c5a4f2220b3917c8dc03b2de65cfb3f62f808"
|
||||
},
|
||||
"space-create": {
|
||||
@@ -37,7 +37,7 @@
|
||||
},
|
||||
"theme": "dark",
|
||||
"language": "en",
|
||||
"sourceSha256": "9b5b6618ac78ca56b3d724f998451dcbff19b20619b8abecd35088aee7a0775a",
|
||||
"sourceSha256": "b678af433a400f150ea1cf4cdb4e585a02e9b5f8e3cd3fa236a78178ffe6de96",
|
||||
"imageSha256": "9f0970de09772674c3156b9fc5b2d49de0ceb22be11ecf8b136047d37d100a84"
|
||||
},
|
||||
"room-contour-close": {
|
||||
@@ -48,7 +48,7 @@
|
||||
},
|
||||
"theme": "dark",
|
||||
"language": "en",
|
||||
"sourceSha256": "9b5b6618ac78ca56b3d724f998451dcbff19b20619b8abecd35088aee7a0775a",
|
||||
"sourceSha256": "b678af433a400f150ea1cf4cdb4e585a02e9b5f8e3cd3fa236a78178ffe6de96",
|
||||
"imageSha256": "0c354a79f9c3660788b6c5e889a27b6bd78b1f209dc0eef6bb43e2c1344028c4"
|
||||
},
|
||||
"plan-context-tray": {
|
||||
@@ -59,7 +59,7 @@
|
||||
},
|
||||
"theme": "dark",
|
||||
"language": "en",
|
||||
"sourceSha256": "9b5b6618ac78ca56b3d724f998451dcbff19b20619b8abecd35088aee7a0775a",
|
||||
"sourceSha256": "b678af433a400f150ea1cf4cdb4e585a02e9b5f8e3cd3fa236a78178ffe6de96",
|
||||
"imageSha256": "64169c543291bc4df806dcf8ff484b42c8ea55eb343323d945344e0e28f2ce97"
|
||||
},
|
||||
"device-editor": {
|
||||
@@ -70,7 +70,7 @@
|
||||
},
|
||||
"theme": "dark",
|
||||
"language": "en",
|
||||
"sourceSha256": "9b5b6618ac78ca56b3d724f998451dcbff19b20619b8abecd35088aee7a0775a",
|
||||
"sourceSha256": "b678af433a400f150ea1cf4cdb4e585a02e9b5f8e3cd3fa236a78178ffe6de96",
|
||||
"imageSha256": "3c8703175605fcf0387d654cd30783ecfd33e21743e70b45190a5ae1a8d355c2"
|
||||
},
|
||||
"device-display-preview": {
|
||||
@@ -81,7 +81,7 @@
|
||||
},
|
||||
"theme": "dark",
|
||||
"language": "en",
|
||||
"sourceSha256": "9b5b6618ac78ca56b3d724f998451dcbff19b20619b8abecd35088aee7a0775a",
|
||||
"sourceSha256": "b678af433a400f150ea1cf4cdb4e585a02e9b5f8e3cd3fa236a78178ffe6de96",
|
||||
"imageSha256": "5d6193202102f5e6d85567f1111fa105895b933979fbf369c6ba0b1029deb823"
|
||||
},
|
||||
"background-editor": {
|
||||
@@ -92,7 +92,7 @@
|
||||
},
|
||||
"theme": "dark",
|
||||
"language": "en",
|
||||
"sourceSha256": "9b5b6618ac78ca56b3d724f998451dcbff19b20619b8abecd35088aee7a0775a",
|
||||
"sourceSha256": "b678af433a400f150ea1cf4cdb4e585a02e9b5f8e3cd3fa236a78178ffe6de96",
|
||||
"imageSha256": "375900a29aa62632883ede6727b7dbb8b48cabe9d7d0e16425f9779c837f3dd9"
|
||||
},
|
||||
"room-card": {
|
||||
@@ -103,7 +103,7 @@
|
||||
},
|
||||
"theme": "dark",
|
||||
"language": "en",
|
||||
"sourceSha256": "9b5b6618ac78ca56b3d724f998451dcbff19b20619b8abecd35088aee7a0775a",
|
||||
"sourceSha256": "b678af433a400f150ea1cf4cdb4e585a02e9b5f8e3cd3fa236a78178ffe6de96",
|
||||
"imageSha256": "c985783769da1bce50c9abe92ce1c6852d62701ce940f6f0a041d634ac21e888"
|
||||
},
|
||||
"device-info": {
|
||||
@@ -114,7 +114,7 @@
|
||||
},
|
||||
"theme": "dark",
|
||||
"language": "en",
|
||||
"sourceSha256": "9b5b6618ac78ca56b3d724f998451dcbff19b20619b8abecd35088aee7a0775a",
|
||||
"sourceSha256": "b678af433a400f150ea1cf4cdb4e585a02e9b5f8e3cd3fa236a78178ffe6de96",
|
||||
"imageSha256": "19e247d5bf49375b238292d45ae32e9eb38a83f5d1a53f6ddde860ed4adcef42"
|
||||
},
|
||||
"pdf-export": {
|
||||
@@ -125,7 +125,7 @@
|
||||
},
|
||||
"theme": "light",
|
||||
"language": "en",
|
||||
"sourceSha256": "9b5b6618ac78ca56b3d724f998451dcbff19b20619b8abecd35088aee7a0775a",
|
||||
"sourceSha256": "b678af433a400f150ea1cf4cdb4e585a02e9b5f8e3cd3fa236a78178ffe6de96",
|
||||
"imageSha256": "4537692fd57a3ed95528eddd748eee5cb6e456ffab7cc49169853d62459252cd"
|
||||
}
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user