mirror of
https://github.com/Matysh/houseplan-card
synced 2026-10-04 13:48:57 +00:00
test(touch): align kiosk smoke and Russian guide (#691)
Issue: #691 User-Visible: no
This commit is contained in:
+16
-10
@@ -9,7 +9,8 @@
|
|||||||
// at 800 %, in view mode and in every editor; how far you may walk is decided
|
// at 800 %, in view mode and in every editor; how far you may walk is decided
|
||||||
// by `_clampView` (PAN_SLACK: about a screen past the content) and not by the
|
// by `_clampView` (PAN_SLACK: about a screen past the content) and not by the
|
||||||
// zoom. The tools keep the pointer they already owned — a resize handle, a
|
// zoom. The tools keep the pointer they already owned — a resize handle, a
|
||||||
// device badge, an opening — and the kiosk keeps its floor swipe.
|
// device badge, an opening — and the kiosk keeps its floor swipe from the
|
||||||
|
// active 48 px edge while central horizontal drags remain pan.
|
||||||
import { launch, check, checkAll, finish } from './serve.mjs';
|
import { launch, check, checkAll, finish } from './serve.mjs';
|
||||||
const { page, browser } = await launch();
|
const { page, browser } = await launch();
|
||||||
const out = {};
|
const out = {};
|
||||||
@@ -192,7 +193,7 @@ Object.assign(out, await page.evaluate(async () => {
|
|||||||
return o;
|
return o;
|
||||||
}));
|
}));
|
||||||
|
|
||||||
// ---- the kiosk keeps its floor swipe ---------------------------------------
|
// ---- the kiosk keeps its edge-owned floor swipe ----------------------------
|
||||||
Object.assign(out, await page.evaluate(async () => {
|
Object.assign(out, await page.evaluate(async () => {
|
||||||
const c0 = window.__card;
|
const c0 = window.__card;
|
||||||
const o = {};
|
const o = {};
|
||||||
@@ -207,19 +208,24 @@ Object.assign(out, await page.evaluate(async () => {
|
|||||||
const sr = k.shadowRoot || k.renderRoot;
|
const sr = k.shadowRoot || k.renderRoot;
|
||||||
const stage = sr.querySelector('.stage');
|
const stage = sr.querySelector('.stage');
|
||||||
const fire = (type, id, x, y) => stage.dispatchEvent(new PointerEvent(type, {
|
const fire = (type, id, x, y) => stage.dispatchEvent(new PointerEvent(type, {
|
||||||
bubbles: true, composed: true, cancelable: true, pointerId: id, clientX: x, clientY: y,
|
bubbles: true, composed: true, cancelable: true, pointerId: id,
|
||||||
|
pointerType: 'touch', isPrimary: true, button: 0,
|
||||||
|
buttons: type === 'pointerup' ? 0 : 1, clientX: x, clientY: y,
|
||||||
}));
|
}));
|
||||||
k._applyView(1); await k.updateComplete;
|
k._applyView(1); await k.updateComplete;
|
||||||
|
const rect = stage.getBoundingClientRect();
|
||||||
|
const rightEdgeX = rect.right - 20;
|
||||||
|
const centerY = rect.top + rect.height / 2;
|
||||||
const s0 = k._space;
|
const s0 = k._space;
|
||||||
const v0 = { ...k._viewOr(k._baseVb()) };
|
const v0 = { ...k._viewOr(k._baseVb()) };
|
||||||
// a REAL swipe: down, several moves, up — the moves are what used to be
|
// A real floor swipe starts inside the active right-edge strip and moves
|
||||||
// impossible to add to smoke_kiosk without hijacking the gesture
|
// inward. Several moves prove that the plan never pans under the gesture.
|
||||||
fire('pointerdown', 41, 600, 300);
|
fire('pointerdown', 41, rightEdgeX, centerY);
|
||||||
fire('pointermove', 41, 540, 302);
|
fire('pointermove', 41, rightEdgeX - 60, centerY + 2);
|
||||||
fire('pointermove', 41, 480, 305);
|
fire('pointermove', 41, rightEdgeX - 120, centerY + 5);
|
||||||
fire('pointermove', 41, 450, 305);
|
fire('pointermove', 41, rightEdgeX - 150, centerY + 5);
|
||||||
const midPan = Math.abs(k._viewOr(k._baseVb()).x - v0.x);
|
const midPan = Math.abs(k._viewOr(k._baseVb()).x - v0.x);
|
||||||
fire('pointerup', 41, 450, 305);
|
fire('pointerup', 41, rightEdgeX - 150, centerY + 5);
|
||||||
await k.updateComplete;
|
await k.updateComplete;
|
||||||
o.kioskSwipeStillSwitchesFloors = k._space !== s0;
|
o.kioskSwipeStillSwitchesFloors = k._space !== s0;
|
||||||
o.kioskHorizontalDragIsNotAPan = midPan < 1;
|
o.kioskHorizontalDragIsNotAPan = midPan < 1;
|
||||||
|
|||||||
@@ -471,9 +471,9 @@ desktop: для точного рисования, Resize, модификато
|
|||||||
|
|
||||||
| Сценарий | Мышь | Touch в просмотре | Touch в редакторах | Клавиатура |
|
| Сценарий | Мышь | Touch в просмотре | Touch в редакторах | Клавиатура |
|
||||||
|---|---|---|---|---|
|
|---|---|---|---|---|
|
||||||
| Масштаб и панорама | Колесо; drag пустого места; кнопки `−`/`+`; двойной клик по свободному фону вписывает всё | Щипок; drag; двойной тап по свободному фону вписывает всё | Работает, но точность не гарантируется; двойного тапа «Вписать всё» нет | — |
|
| Масштаб и панорама | Колесо; drag пустого места; кнопки `−`/`+`; двойной клик по фону, заливке комнаты или её пассивной подписи вписывает всё | Щипок; drag; двойной тап по фону, заливке комнаты или её пассивной подписи вписывает всё | Работает, но точность не гарантируется; двойного тапа «Вписать всё» нет | — |
|
||||||
| Комната | Клик по свободной части комнаты вписывает её с полями 10% | Одиночный tap вписывает комнату; повторный tap не сбрасывает киоск | — | `Enter`/`Space` на видимой подписи комнаты |
|
| Комната | Одиночный клик по свободной части комнаты ждёт 350 мс и вписывает её с полями 10%; второй чистый клик за это время вписывает весь план без промежуточного движения | Одиночный tap ждёт 350 мс и вписывает комнату; второй чистый tap за это время вписывает весь план без промежуточного движения | — | `Enter`/`Space` на видимой подписи комнаты вписывает её сразу |
|
||||||
| Переключение пространства | Клик по вкладке | Клик; в киоске свайп при масштабе 1:1 | Клик по вкладке | — |
|
| Переключение пространства | Клик по вкладке | Клик; в киоске при масштабе 1:1 — свайп внутрь из 48 CSS px у края, за которым есть соседнее пространство | Клик по вкладке | — |
|
||||||
| Устройство | Клик/двойной клик по правилам режима | Tap; безопасные действия как на desktop | Drag и свойства — best effort | `Esc` закрывает верхнюю поверхность |
|
| Устройство | Клик/двойной клик по правилам режима | Tap; безопасные действия как на desktop | Drag и свойства — best effort | `Esc` закрывает верхнюю поверхность |
|
||||||
| Рисование стен и точный drag | Полный контракт | Не применяется | Best effort; для Resize и точных точек используйте мышь | `Shift` меняет магнит/угол; `Esc` завершает цепочку стен или отменяет текущий точный drag |
|
| Рисование стен и точный drag | Полный контракт | Не применяется | Best effort; для Resize и точных точек используйте мышь | `Shift` меняет магнит/угол; `Esc` завершает цепочку стен или отменяет текущий точный drag |
|
||||||
| История редактора | Кнопки Undo/Redo | Не применяется | Кнопки могут работать, жест не гарантирован | `Ctrl/Cmd+Z`, `Ctrl/Cmd+Shift+Z`, `Ctrl+Y` |
|
| История редактора | Кнопки Undo/Redo | Не применяется | Кнопки могут работать, жест не гарантирован | `Ctrl/Cmd+Z`, `Ctrl/Cmd+Shift+Z`, `Ctrl+Y` |
|
||||||
@@ -482,7 +482,7 @@ desktop: для точного рисования, Resize, модификато
|
|||||||
Особенности:
|
Особенности:
|
||||||
|
|
||||||
- колесо, кнопки `−`/`+`, «Вписать всё», стрелка возврата и двойной клик/тап по
|
- колесо, кнопки `−`/`+`, «Вписать всё», стрелка возврата и двойной клик/тап по
|
||||||
свободному фону в Просмотре или киоске используют короткий плавный переход
|
фону, заливке комнаты или её пассивной подписи в Просмотре или киоске используют короткий плавный переход
|
||||||
камеры; частые события колеса меняют текущую цель, а не выстраиваются в очередь;
|
камеры; частые события колеса меняют текущую цель, а не выстраиваются в очередь;
|
||||||
- щипок и панорамирование по-прежнему следуют за пальцами без задержки; при
|
- щипок и панорамирование по-прежнему следуют за пальцами без задержки; при
|
||||||
включённом в системе уменьшении движения любой масштаб меняется мгновенно;
|
включённом в системе уменьшении движения любой масштаб меняется мгновенно;
|
||||||
@@ -1933,9 +1933,9 @@ cycle: 30
|
|||||||
| Шапка карточки | Скрыта |
|
| Шапка карточки | Скрыта |
|
||||||
| Редакторы | Недоступны |
|
| Редакторы | Недоступны |
|
||||||
| Высота | 100dvh |
|
| Высота | 100dvh |
|
||||||
| Свайп | Листает пространства по кругу при масштабе 1:1 |
|
| Свайп | При масштабе 1:1 листает пространства жестом внутрь из 48 CSS px у края, за которым есть соседнее пространство; drag вне этой зоны панорамирует план |
|
||||||
| Щипок/панорама | Масштабирует и двигает план |
|
| Щипок/панорама | Масштабирует и двигает план |
|
||||||
| Двойной тап по свободному фону | Вписывает весь план (как «Вписать всё») |
|
| Двойной тап по фону, заливке комнаты или её пассивной подписи | Вписывает весь план (как «Вписать всё») без промежуточного вписывания комнаты |
|
||||||
| Удержание пустого места 3 секунды | Открывает локальные размеры иконок и текста |
|
| Удержание пустого места 3 секунды | Открывает локальные размеры иконок и текста |
|
||||||
| `cycle` | Автоматически листает пространства; при взаимодействии пауза 60 секунд |
|
| `cycle` | Автоматически листает пространства; при взаимодействии пауза 60 секунд |
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user