import { randomUUID } from "node:crypto"; import { expect, test } from "@playwright/test"; import { loginViaUi } from "../support/login-via-ui"; const fillDocumentSeriesForm = async ( page: import("@playwright/test").Page, values: { code: string; name: string; prefix: string; suffix: string; nextNumber: number } ) => { await page.locator('input[name="code"]').fill(values.code); await page.locator('input[name="name"]').fill(values.name); await page.locator('input[name="prefix"]').fill(values.prefix); await page.locator('input[name="suffix"]').fill(values.suffix); await page.locator('input[name="nextNumber"]').fill(String(values.nextNumber)); await page.getByTestId("document-series-form-submit").click(); }; test.describe .serial("document-series settings", () => { test.beforeEach(async ({ page }) => { await loginViaUi(page); await page.goto("/settings/billing/document-series"); await expect(page.getByTestId("document-series-title")).toBeVisible(); }); test("DOCUMENT-SERIES-SETTINGS-001: administra creación, edición, default, avance, estado y filtros", async ({ page, }, testInfo) => { const suffix = `${Date.now()}-${testInfo.workerIndex}-${randomUUID().slice(0, 8)}`; const first = { code: `E2EP${suffix}`, name: `E2E Proforma ${suffix}`, prefix: "P-", suffix: "", nextNumber: 10, }; const second = { code: `E2EQ${suffix}`, name: `E2E Secundaria ${suffix}`, prefix: "Q-", suffix: "-X", nextNumber: 20, }; await page.getByTestId("document-series-create").click(); await expect(page.getByTestId("document-series-form-dialog")).toBeVisible(); await fillDocumentSeriesForm(page, first); await expect(page.getByTestId(`document-series-code-${first.code}`)).toHaveText(first.code); await expect(page.getByTestId(`document-series-next-number-${first.code}`)).toHaveText("10"); await page.getByTestId(`document-series-edit-${first.code}`).click(); await expect(page.locator('input[name="code"]')).toHaveCount(0); await expect(page.locator('input[name="documentType"]')).toHaveCount(0); await page.locator('input[name="name"]').fill(`${first.name} editada`); await page.locator('input[name="padding"]').fill("5"); await page.getByTestId("document-series-form-submit").click(); await page.reload(); await expect(page.getByTestId(`document-series-name-${first.code}`)).toHaveText( `${first.name} editada` ); await page.getByTestId("document-series-create").click(); await fillDocumentSeriesForm(page, second); await expect(page.getByTestId(`document-series-code-${second.code}`)).toHaveText(second.code); await page.getByTestId(`document-series-default-${second.code}`).click(); await expect(page.getByTestId(`document-series-default-${second.code}`)).toHaveCount(0); await expect(page.getByTestId(`document-series-default-state-${second.code}`)).toBeVisible(); await expect(page.getByTestId(`document-series-default-state-${first.code}`)).toBeEmpty(); await page.getByTestId(`document-series-advance-${second.code}`).click(); await expect(page.getByTestId("document-series-advance-dialog")).toBeVisible(); await page.locator('input[name="nextNumber"]').fill("25"); await page.getByTestId("document-series-advance-submit").click(); await expect(page.getByTestId(`document-series-next-number-${second.code}`)).toHaveText("25"); await page.getByTestId(`document-series-disable-${second.code}`).click(); await expect(page.getByTestId("document-series-disable-dialog")).toBeVisible(); await expect(page.getByTestId("document-series-disable-dialog")).toContainText( /predeterminada|default/i ); await page.getByTestId("document-series-disable-confirm").click(); await expect(page.getByTestId(`document-series-enable-${second.code}`)).toBeVisible(); await expect(page.getByTestId(`document-series-default-state-${second.code}`)).toBeEmpty(); await page.getByTestId(`document-series-enable-${second.code}`).click(); await expect(page.getByTestId(`document-series-disable-${second.code}`)).toBeVisible(); await page.getByTestId("document-series-search").locator("input").fill(second.code); await expect(page.getByTestId(`document-series-code-${second.code}`)).toBeVisible(); }); });