Files
Randify.pro/test-results/dm-initiative-Initiative-T-9c1f7-urn-cycles-active-combatant-chromium/error-context.md
T

91 lines
4.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Instructions
- Following Playwright test failed.
- Explain why, be concise, respect Playwright best practices.
- Provide a snippet of code with the fix, if possible.
# Test info
- Name: dm/initiative.spec.ts >> Initiative Tracker >> next turn cycles active combatant
- Location: tests/dm/initiative.spec.ts:31:3
# Error details
```
Error: page.click: Target page, context or browser has been closed
Call log:
- waiting for locator('[data-testid=\'init-next-btn\']')
- locator resolved to <button type="button" id="it-next-btn" data-testid="init-next-btn" data-astro-source-loc="51:94" data-astro-source-file="/home/emil/Desktop/Coding/AI/Randify.pro/src/components/dm/DmButton.astro" class="inline-flex items-center justify-center font-semibold focus:outline-none focus-visible:ring-2 focus-visible:ring-[var(--accent)] focus-visible:ring-offset-2 focus-visible:ring-offset-[var(--bg-primary)] transition-all duration-[var(--transition-base)] cursor-pointer disabled:opacity-50 disabled:cursor-…>Следующий ход</button>
- attempting click action
- waiting for element to be visible, enabled and stable
```
# Test source
```ts
1 | import { test, expect } from "@playwright/test";
2 |
3 | test.describe("Initiative Tracker", () => {
4 | test.beforeEach(async ({ page }) => {
5 | await page.goto("/dm/#initiative");
6 | });
7 |
8 | test("add combatant with auto-roll", async ({ page }) => {
9 | await page.fill("[data-testid='init-name-input']", "Гоблин");
10 | await page.fill("[data-testid='init-mod-input']", "2");
11 | await page.click("[data-testid='init-add-btn']");
12 | await expect(page.locator("[data-testid='init-combatant']")).toBeVisible();
13 | await expect(page.locator("[data-testid='init-combatant-name']")).toContainText("Гоблин");
14 | });
15 |
16 | test("sort by initiative descending", async ({ page }) => {
17 | await page.fill("[data-testid='init-name-input']", "А");
18 | await page.fill("[data-testid='init-mod-input']", "5");
19 | await page.fill("[data-testid='init-initiative-input']", "25");
20 | await page.click("[data-testid='init-add-btn']");
21 |
22 | await page.fill("[data-testid='init-name-input']", "Б");
23 | await page.fill("[data-testid='init-mod-input']", "0");
24 | await page.fill("[data-testid='init-initiative-input']", "10");
25 | await page.click("[data-testid='init-add-btn']");
26 |
27 | const scores = await page.locator("[data-testid='init-score']").allTextContents();
28 | expect(Number(scores[0])).toBeGreaterThan(Number(scores[1]));
29 | });
30 |
31 | test("next turn cycles active combatant", async ({ page }) => {
32 | await page.fill("[data-testid='init-name-input']", "Гоблин");
33 | await page.fill("[data-testid='init-mod-input']", "2");
34 | await page.fill("[data-testid='init-initiative-input']", "20");
35 | await page.click("[data-testid='init-add-btn']");
36 |
37 | await page.fill("[data-testid='init-name-input']", "Орк");
38 | await page.fill("[data-testid='init-mod-input']", "0");
39 | await page.fill("[data-testid='init-initiative-input']", "15");
40 | await page.click("[data-testid='init-add-btn']");
41 |
42 | const firstActive = await page.locator("[data-testid='init-combatant'].active").textContent();
> 43 | await page.click("[data-testid='init-next-btn']");
| ^ Error: page.click: Target page, context or browser has been closed
44 | const secondActive = await page.locator("[data-testid='init-combatant'].active").textContent();
45 | expect(firstActive).not.toBe(secondActive);
46 | });
47 |
48 | test("delete combatant", async ({ page }) => {
49 | await page.fill("[data-testid='init-name-input']", "Гоблин");
50 | await page.fill("[data-testid='init-mod-input']", "2");
51 | await page.fill("[data-testid='init-initiative-input']", "20");
52 | await page.click("[data-testid='init-add-btn']");
53 |
54 | await page.click("[data-testid='init-delete-btn']");
55 | await expect(page.locator("[data-testid='init-empty-state']")).toBeVisible();
56 | });
57 |
58 | test("mobile viewport renders correctly", async ({ page }) => {
59 | await page.setViewportSize({ width: 375, height: 812 });
60 | await expect(page.locator("[data-testid='init-section']")).toBeVisible();
61 | });
62 | });
63 |
```