Ctrl K
ComunidadGuías…

e2e/inventory-images.spec.ts

Rama main · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
import { expect, test } from "@playwright/test";
const png = Buffer.from("iVBORw0KGgoAAAANSUhEUgAAAAgAAAAGCAIAAABxZ0isAAAACXBIWXMAAAPoAAAD6AG1e1JrAAAAEUlEQVQImWMw6piAFTEMpAQAEKQ94TX+ea8AAAAASUVORK5CYII=", "base64");
test("inventory image gallery uploads, renders and survives reload on a narrow screen", 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 page.getByRole("button", { name: /^Inventory(?: \d+)?$/u }).click();
  await page.getByRole("button", { name: /^Open Bambu Lab H2D/u }).first().click();
  const gallery = page.getByRole("region", { name: "Item images" });
  await gallery.getByText("Add image", { exact: true }).click();
  await gallery.getByLabel("Image file").setInputFiles({ name: "synthetic-printer.png", mimeType: "image/png", buffer: png });
  await gallery.getByLabel("Image source").selectOption("reference");
  await gallery.getByLabel("Caption (optional)").fill("Synthetic printer reference");
  await gallery.getByRole("button", { name: "Save image", exact: true }).click();
  const photo = gallery.getByRole("img", { name: "Synthetic printer reference", exact: true });
  await expect(photo).toBeVisible();
  await expect.poll(() => photo.evaluate(img => (img as HTMLImageElement).naturalWidth)).toBe(8);
  await expect(gallery.locator("figcaption")).toContainText("Reference image");
  await page.reload();
  await page.getByRole("button", { name: /^Open Bambu Lab H2D/u }).first().click();
  await page.setViewportSize({ width: 390, height: 844 });
  await expect(photo).toBeVisible();
  const bounds = await photo.boundingBox(); expect(bounds!.width).toBeLessThanOrEqual(390);
});

test("closing an image draft keeps focus in the discard confirmation and preserves the draft on cancel", 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 page.getByRole("button", { name: /^Inventory(?: \d+)?$/u }).click();
  await page.getByRole("button", { name: /^Open Bambu Lab H2D/u }).first().click();
  const gallery = page.getByRole("region", { name: "Item images" });
  await gallery.getByText("Add image", { exact: true }).click();
  await gallery.getByLabel("Image file").setInputFiles({ name: "draft.png", mimeType: "image/png", buffer: png });
  await page.getByRole("button", { name: "Close item details" }).click();
  const confirmation = page.getByRole("alertdialog", { name: "Leave without saving?" });
  await expect(confirmation).toBeVisible();
  await page.keyboard.press("Tab");
  await expect(confirmation.getByRole("button", { name: "Discard changes and leave" })).toBeFocused();
  await confirmation.getByRole("button", { name: "Keep editing" }).click();
  await expect(gallery.getByRole("button", { name: "Save image" })).toBeEnabled();
  await page.getByRole("button", { name: "Close item details" }).click();
  await confirmation.getByRole("button", { name: "Discard changes and leave" }).click();
  await expect(page.getByRole("dialog")).toHaveCount(0);
});