fix(game): no placement auto-zoom in landscape
CI / changes (pull_request) Successful in 3s
CI / unit (pull_request) Has been skipped
CI / integration (pull_request) Has been skipped
CI / ui (pull_request) Successful in 59s
CI / conformance (pull_request) Successful in 9s
CI / gate (pull_request) Successful in 0s
CI / deploy (pull_request) Successful in 2m12s

Landscape fits the whole board, so the coarse-pointer auto-zoom on tile
placement, drag hover-hold and hint only hid the rest of the position.
Gate all three on portrait; manual double-tap/pinch zoom is unchanged.
New e2e lock both sides: landscape placement stays unzoomed, portrait
placement still auto-zooms (touch-emulated, both engines).
This commit is contained in:
Ilia Denisov
2026-07-02 15:08:30 +02:00
parent 2ab01ed8f7
commit 622d3965a7
3 changed files with 53 additions and 6 deletions
+22
View File
@@ -53,3 +53,25 @@ test('landscape still places a tile and commits via the make button', async ({ p
await expect(page.locator('.cell.pending')).toHaveCount(1);
await expect(page.locator('.make')).toBeVisible();
});
// Placement auto-zoom is portrait-only (Game.svelte gates it on !landscape): landscape fits the
// whole board, so magnifying on every placed tile would only hide the position. The gate also
// requires a coarse pointer, so the block emulates touch and skips on an engine whose emulation
// does not flip `(pointer: coarse)` (desktop WebKit). The portrait counterpart lives in
// zoom.spec.ts.
test.describe('touch placement', () => {
test.use({ hasTouch: true });
test('landscape does not auto-zoom when a tile is placed', async ({ page }) => {
await openGame(page);
test.skip(
!(await page.evaluate(() => matchMedia('(pointer: coarse)').matches)),
'touch emulation does not report a coarse pointer in this engine',
);
await page.locator('.rack .tile').first().click();
await page.locator('[data-cell][data-row="9"][data-col="6"]').click();
await expect(page.locator('.cell.pending')).toHaveCount(1);
await page.waitForTimeout(400); // the would-be zoom transition window
await expect(page.locator('.viewport.zoomed')).toHaveCount(0);
});
});