e2e/inventory-deletion.spec.ts
Rama main · réplica de lectura del repositorio original.
import { expect, test } from "@playwright/test";
for (const kind of ["printer", "electronic"] as const) test(`delete ${kind} with one confirmation and retain cancellation`, async ({ page }) => {
await page.goto("/");
await page.getByLabel("Workspace password").fill("demo-password-please-change");
await page.getByRole("button", { name: "Sign in", exact: true }).click();
await expect(page.getByRole("heading", { name: "Projects", exact: true })).toBeVisible();
const name = `Deletion test ${kind}`;
const result = await page.evaluate(async ({ name, kind }) => {
const csrf = document.cookie.split("; ").find((entry) => entry.startsWith("forge_csrf="))?.split("=")[1];
const response = await fetch("/api/v1/inventory", { method: "POST", headers: { "Content-Type": "application/json", "x-csrf-token": decodeURIComponent(csrf ?? "") }, body: JSON.stringify({ name, kind, quantity: 1, unit: "each", tags: [], links: [], evidence: { state: "physically_counted" } }) });
return { status: response.status, data: await response.json() };
}, { name, kind });
expect(result.status).toBe(201);
await page.reload();
await page.getByRole("button", { name: /^Inventory(?: \d+)?$/u }).click();
await page.getByRole("button", { name: new RegExp(`^Open ${name}`) }).click();
const label = kind === "printer" ? "Delete printer" : "Delete item";
await page.getByRole("button", { name: label, exact: true }).click();
const dialog = page.getByRole("alertdialog", { name: `Delete ${name}?` });
await dialog.getByRole("button", { name: "Cancel", exact: true }).click();
await expect(page.getByRole("dialog")).toBeVisible();
await page.getByRole("button", { name: label, exact: true }).click();
await dialog.getByRole("button", { name: label, exact: true }).click();
await expect(page.getByRole("alertdialog")).toHaveCount(0);
await expect(page.getByRole("dialog")).toHaveCount(0);
await expect(page.getByRole("button", { name: new RegExp(name) })).toHaveCount(0);
await page.reload();
await expect(page.getByRole("button", { name: new RegExp(name) })).toHaveCount(0);
});