From efb1a7be2e9dd02c5cf46fdf952c4a45dd2c99f9 Mon Sep 17 00:00:00 2001 From: Victor Giers Date: Thu, 2 Apr 2026 22:40:22 +0200 Subject: [PATCH] Add E2E test for orthographic views --- tests/e2e/orthographic-views.e2e.ts | 61 +++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 tests/e2e/orthographic-views.e2e.ts diff --git a/tests/e2e/orthographic-views.e2e.ts b/tests/e2e/orthographic-views.e2e.ts new file mode 100644 index 00000000..05aae855 --- /dev/null +++ b/tests/e2e/orthographic-views.e2e.ts @@ -0,0 +1,61 @@ +import { expect, test } from "@playwright/test"; + +import { clickViewport, getViewportOverlay, getViewportPanel } from "./viewport-test-helpers"; + +test("orthographic panel controls keep brush authoring and selection behavior intact", async ({ page }) => { + const pageErrors: string[] = []; + const consoleErrors: string[] = []; + + page.on("pageerror", (error) => { + pageErrors.push(error.message); + }); + + page.on("console", (message) => { + if (message.type() === "error") { + consoleErrors.push(message.text()); + } + }); + + await page.goto("/"); + await page.evaluate((storageKey) => { + window.localStorage.removeItem(storageKey); + }, "webeditor3d.scene-document-draft"); + await page.reload(); + + await page.getByRole("button", { name: "Box Create" }).click(); + await clickViewport(page, "topLeft"); + + await expect(page.getByRole("button", { name: /Box Brush 1/ })).toBeVisible(); + await expect(page.getByText("1 brush selected (Box Brush 1)")).toBeVisible(); + await expect(page.getByTestId("viewport-active-panel")).toContainText("Top Left"); + await expect(page.getByTestId("viewport-panel-topLeft-view-perspective")).toHaveAttribute("aria-pressed", "true"); + + await page.getByTestId("viewport-panel-topLeft-view-top").click(); + await expect(page.getByTestId("viewport-panel-topLeft-view-top")).toHaveAttribute("aria-pressed", "true"); + await expect(getViewportOverlay(page, "topLeft")).toContainText("XZ grid"); + + await clickViewport(page, "topLeft"); + await expect(page.getByRole("button", { name: /Box Brush 2/ })).toBeVisible(); + await expect(page.getByText("1 brush selected (Box Brush 2)")).toBeVisible(); + + await page.getByTestId("viewport-panel-topLeft-view-front").click(); + await expect(page.getByTestId("viewport-panel-topLeft-view-front")).toHaveAttribute("aria-pressed", "true"); + await expect(getViewportOverlay(page, "topLeft")).toContainText("XY grid"); + + await clickViewport(page, "topLeft"); + await expect(page.getByRole("button", { name: /Box Brush 3/ })).toBeVisible(); + await expect(page.getByText("1 brush selected (Box Brush 3)")).toBeVisible(); + + await page.getByTestId("viewport-panel-topLeft-view-side").click(); + await expect(page.getByTestId("viewport-panel-topLeft-view-side")).toHaveAttribute("aria-pressed", "true"); + await expect(getViewportOverlay(page, "topLeft")).toContainText("YZ grid"); + + await page.getByTestId("viewport-panel-topLeft-display-authoring").click(); + await expect(page.getByTestId("viewport-panel-topLeft-display-authoring")).toHaveAttribute("aria-pressed", "true"); + await expect(page.getByTestId("viewport-canvas-topLeft")).toHaveCSS("background-color", "rgb(0, 0, 0)"); + await expect(getViewportPanel(page, "topLeft")).toHaveAttribute("data-active", "true"); + await expect(page.getByText("1 brush selected (Box Brush 3)")).toBeVisible(); + + expect(pageErrors).toEqual([]); + expect(consoleErrors).toEqual([]); +});