From d9d4a99e1de3fd4ea99962d2b3f33d0f003a7647 Mon Sep 17 00:00:00 2001 From: Alejandro Alonso Date: Fri, 13 Feb 2026 09:19:28 +0100 Subject: [PATCH] :wrench: Migrate variants tests to wasm viewport --- frontend/playwright/ui/pages/WorkspacePage.js | 13 +++++++-- frontend/playwright/ui/specs/variants.spec.js | 28 +++++++++---------- 2 files changed, 25 insertions(+), 16 deletions(-) diff --git a/frontend/playwright/ui/pages/WorkspacePage.js b/frontend/playwright/ui/pages/WorkspacePage.js index 9bc6e1b19b..0aab8bdd4d 100644 --- a/frontend/playwright/ui/pages/WorkspacePage.js +++ b/frontend/playwright/ui/pages/WorkspacePage.js @@ -338,9 +338,18 @@ export class WorkspacePage extends BaseWebSocketPage { async clickWithDragViewportAt(x, y, width, height) { await this.page.waitForTimeout(100); - await this.viewport.hover({ position: { x, y } }); + const box = await this.viewport.boundingBox(); + if (!box) throw new Error('Viewport not visible'); + + const startX = box.x + x; + const startY = box.y + y; + const endX = startX + width; + const endY = startY + height; + + await this.page.mouse.move(startX, startY); await this.page.mouse.down(); - await this.viewport.hover({ position: { x: x + width, y: y + height } }); + // Use steps so mouseup is properly processed (see Playwright issue #20254) + await this.page.mouse.move(endX, endY, { steps: 10 }); await this.page.mouse.up(); } diff --git a/frontend/playwright/ui/specs/variants.spec.js b/frontend/playwright/ui/specs/variants.spec.js index 51eafa2156..b053a2ca7d 100644 --- a/frontend/playwright/ui/specs/variants.spec.js +++ b/frontend/playwright/ui/specs/variants.spec.js @@ -1,12 +1,12 @@ import { test, expect } from "@playwright/test"; -import { WorkspacePage } from "../pages/WorkspacePage"; +import { WasmWorkspacePage } from "../pages/WasmWorkspacePage"; import { BaseWebSocketPage } from "../pages/BaseWebSocketPage"; import { Clipboard } from "../../helpers/Clipboard"; test.beforeEach(async ({ page, context }) => { await Clipboard.enable(context, Clipboard.Permission.ALL); - await WorkspacePage.init(page); + await WasmWorkspacePage.init(page); await BaseWebSocketPage.mockRPC(page, "get-teams", "get-teams-variants.json"); }); @@ -127,7 +127,7 @@ const validateVariant = async (variant) => { }; test("User creates a variant", async ({ page }) => { - const workspacePage = new WorkspacePage(page); + const workspacePage = new WasmWorkspacePage(page); await setupVariantsFileWithVariant(workspacePage); await workspacePage.clickLeafLayer("Rectangle"); @@ -154,7 +154,7 @@ test("User creates a variant", async ({ page }) => { }); test("User duplicates a variant container", async ({ page }) => { - const workspacePage = new WorkspacePage(page); + const workspacePage = new WasmWorkspacePage(page); await setupVariantsFileWithVariant(workspacePage); const variant = await findVariant(workspacePage, 0); @@ -177,7 +177,7 @@ test("User duplicates a variant container", async ({ page }) => { }); test("User copy paste a variant container", async ({ page, context }) => { - const workspacePage = new WorkspacePage(page); + const workspacePage = new WasmWorkspacePage(page); // Access to the read/write clipboard necesary for this functionality await setupVariantsFileWithVariant(workspacePage); await workspacePage.mockRPC( @@ -212,7 +212,7 @@ test("User copy paste a variant container", async ({ page, context }) => { }); test("User cut paste a variant container", async ({ page }) => { - const workspacePage = new WorkspacePage(page); + const workspacePage = new WasmWorkspacePage(page); await setupVariantsFileWithVariant(workspacePage); const variant = await findVariant(workspacePage, 0); @@ -240,7 +240,7 @@ test("User cut paste a variant container", async ({ page }) => { test("User cut paste a variant container into a board, and undo twice", async ({ page, }) => { - const workspacePage = new WorkspacePage(page); + const workspacePage = new WasmWorkspacePage(page); await setupVariantsFileWithVariant(workspacePage); const variant = await findVariant(workspacePage, 0); @@ -283,7 +283,7 @@ test("User cut paste a variant container into a board, and undo twice", async ({ }); test("User copy paste a variant", async ({ page }) => { - const workspacePage = new WorkspacePage(page); + const workspacePage = new WasmWorkspacePage(page); await setupVariantsFileWithVariant(workspacePage); const variant = await findVariant(workspacePage, 0); @@ -308,7 +308,7 @@ test("User copy paste a variant", async ({ page }) => { }); test("User cut paste a variant outside the container", async ({ page }) => { - const workspacePage = new WorkspacePage(page); + const workspacePage = new WasmWorkspacePage(page); await setupVariantsFileWithVariant(workspacePage); const variant = await findVariant(workspacePage, 0); @@ -333,7 +333,7 @@ test("User cut paste a variant outside the container", async ({ page }) => { }); test("User drag and drop a variant outside the container", async ({ page }) => { - const workspacePage = new WorkspacePage(page); + const workspacePage = new WasmWorkspacePage(page); await setupVariantsFileWithVariant(workspacePage); const variant = await findVariant(workspacePage, 0); @@ -347,7 +347,7 @@ test("User drag and drop a variant outside the container", async ({ page }) => { }); test("User cut paste a component inside a variant", async ({ page }) => { - const workspacePage = new WorkspacePage(page); + const workspacePage = new WasmWorkspacePage(page); await setupVariantsFileWithVariant(workspacePage); const variant = await findVariant(workspacePage, 0); @@ -378,7 +378,7 @@ test("User cut paste a component inside a variant", async ({ page }) => { test("User cut paste a component with path inside a variant", async ({ page, }) => { - const workspacePage = new WorkspacePage(page); + const workspacePage = new WasmWorkspacePage(page); await setupVariantsFileWithVariant(workspacePage); const variant = await findVariant(workspacePage, 0); @@ -417,7 +417,7 @@ test("User cut paste a component with path inside a variant", async ({ test("User drag and drop a component with path inside a variant", async ({ page, }) => { - const workspacePage = new WorkspacePage(page); + const workspacePage = new WasmWorkspacePage(page); await setupVariantsFileWithVariant(workspacePage); const variant = findVariantNoWait(workspacePage, 0); @@ -450,7 +450,7 @@ test("User drag and drop a component with path inside a variant", async ({ }); test("User cut paste a variant into another container", async ({ page }) => { - const workspacePage = new WorkspacePage(page); + const workspacePage = new WasmWorkspacePage(page); await setupVariantsFileWithVariant(workspacePage); // Create anothe variant