From 69e385be373c564f5c5deed3f8ca468292fab14b Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 23 Feb 2026 22:00:12 +0000 Subject: [PATCH 1/2] Initial plan From 5adfeaef20a5c7b1caee1ad039e7e7af8d37e080 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 23 Feb 2026 22:04:41 +0000 Subject: [PATCH 2/2] test(multi-select): add boundary test for out-of-bounds group drag and update header checklist Co-authored-by: makuchpatryk <19875907+makuchpatryk@users.noreply.github.com> --- tests/e2e/multi-select.spec.ts | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/tests/e2e/multi-select.spec.ts b/tests/e2e/multi-select.spec.ts index 5cdbd48..30b9854 100644 --- a/tests/e2e/multi-select.spec.ts +++ b/tests/e2e/multi-select.spec.ts @@ -9,6 +9,7 @@ * – drag&drop jednego klocka: zamiana miejsc, licznik moves +1 * – drag&drop jednego klocka NIE kończy gry natychmiast (główny naprawiony bug) * – drag&drop grupy klocków: licznik moves rośnie, klocki nadal widoczne + * – drag&drop grupy klocków poza granicę planszy: licznik moves NIE rośnie * – RESTART czyści selekcję * – PAUSE czyści selekcję */ @@ -344,4 +345,28 @@ test.describe('Multi-selekcja i Drag & Drop', () => { expect(hintText).toMatch(/Ctrl|Shift/); }); + // ── 16. Grupowy drag poza granicę planszy: moves NIE rośnie ─────────────── + test('grupowy drag poza granicę planszy nie zwiększa moves', async ({ + page, navigateToHome, selectDifficulty9x13, startGame, + }) => { + await startEasyGame(navigateToHome, selectDifficulty9x13, startGame, page); + + await expect(page.locator('text=/0 Move/')).toBeVisible(); + + const pieces = page.locator('.cursor-grab'); + + // Zaznacz dwa pierwsze klocki (pozycje 0 i 1) + await pieces.nth(0).click(); + await pieces.nth(1).click({ modifiers: ['Shift'] }); + await page.waitForTimeout(150); + await expect(selectedPieces(page)).toHaveCount(2); + + // Przeciągnij klocek 1 → klocek 0 (offset = –1). + // isGroupMoveValid odrzuci ten ruch, bo klocek 0 musiałby trafić na pozycję –1. + await dragPiece(page, 1, 0); + + // Ruch jest nieprawidłowy → licznik moves wciąż 0 + await expect(page.locator('text=/0 Move/')).toBeVisible(); + }); + });