From f26f3bdf504cf0bbc111993b1b7d416ad28ab52e Mon Sep 17 00:00:00 2001 From: yaroslav k Date: Sun, 16 Aug 2026 13:07:07 +0300 Subject: [PATCH] =?UTF-8?q?e2e:=20character=20spec=20=E2=80=94=20extra=20a?= =?UTF-8?q?ttunement=20slot,=20AC=20persistence?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - drop the player-card test (components removed) - new: '+ слот' grows attunements to 4+ and a new slot binds an item - new: armor class starts at 16 (mock) and persists through a reload --- end2end/tests/character.spec.ts | 46 +++++++++++++++++++++++---------- 1 file changed, 33 insertions(+), 13 deletions(-) diff --git a/end2end/tests/character.spec.ts b/end2end/tests/character.spec.ts index ee16f91..d800304 100644 --- a/end2end/tests/character.spec.ts +++ b/end2end/tests/character.spec.ts @@ -14,18 +14,6 @@ function trackErrors(page: Page): string[] { } test.describe("character page", () => { - test("player card shows the campaign character", async ({ page }) => { - const errors = trackErrors(page); - await page.goto(`${BASE}/`); - - await expect(page.locator(".player-name")).toHaveText("Абоба «Такелажник» Амогус"); - await expect(page.locator(".player-class")).toHaveText("Чувствительный молодой человек"); - await expect(page.locator(".player-level")).toHaveText("уровень 8"); - await expect(page.locator(".player-xp")).toHaveText("3231 XP"); - - expect(errors).toEqual([]); - }); - test("add a spell, undo it, redo it", async ({ page }) => { const errors = trackErrors(page); await page.goto(`${BASE}/`); @@ -97,4 +85,36 @@ test.describe("character page", () => { expect(errors).toEqual([]); }); -}); + + test("more attunement slots can be added for custom campaigns", async ({ page }) => { + const errors = trackErrors(page); + await page.goto(`${BASE}/`); + + await expect(page.locator(".attunement-slot")).toHaveCount(3); + await page.locator("button[title='Добавить слот привязки']").click(); + await expect(page.locator(".attunement-slot")).toHaveCount(4); + + const fourth = page.locator(".attunement-slot").nth(3); + await fourth.locator("input").fill("Волшебный рог"); + await fourth.locator("button[title='Привязать предмет']").click(); + await expect(page.locator(".attuned-item")).toHaveText("Волшебный рог"); + + expect(errors).toEqual([]); + }); + + test("armor class is set manually and persists", async ({ page }) => { + const errors = trackErrors(page); + await page.goto(`${BASE}/`); + + const ac = page.locator("#ac"); + await expect(ac).toHaveValue("16"); + await ac.fill("18"); + + // Autosave is debounced by 500 ms; give it time before reloading. + await page.waitForTimeout(700); + await page.reload(); + await expect(page.locator("#ac")).toHaveValue("18"); + + expect(errors).toEqual([]); + }); +}); \ No newline at end of file