From 7e7b79d5eab4eb450d01e9aa7ff0b4f33bf224af Mon Sep 17 00:00:00 2001 From: Samuel K Date: Mon, 29 Jun 2026 13:09:08 -0500 Subject: [PATCH] fix(desktop): scope Node.js template e2e selector to active tab panel The wizard Source step's "Node.js" template button collided with the Image catalog's "Node.js 20" card (both present in the DOM), causing an intermittent Playwright strict-mode violation on the integration e2e. Scope the locator to the active tabpanel, matching the existing Python-template flow and workspaces.e2e.ts. --- desktop/e2e/integration.e2e.ts | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/desktop/e2e/integration.e2e.ts b/desktop/e2e/integration.e2e.ts index 3cf98f8c8..58e38bce5 100644 --- a/desktop/e2e/integration.e2e.ts +++ b/desktop/e2e/integration.e2e.ts @@ -232,8 +232,13 @@ test.describe await dialog.locator("button", { hasText: "docker" }).first().click() await dialog.getByRole("button", { name: /^continue$/i }).click() - // Step 2 — Source: click Node.js template - await dialog.locator("button", { hasText: "Node.js" }).click() + // Step 2 — Source: click Node.js template. Scope to the active tab panel + // (Git) so the template button doesn't collide with the Image catalog's + // "Node.js 20" card, which is also present in the DOM. + await dialog + .getByRole("tabpanel") + .locator("button", { hasText: "Node.js" }) + .click() const sourceInput = dialog.locator('input[placeholder*="github"]') await expect(sourceInput).toHaveValue( "https://github.com/microsoft/vscode-remote-try-node",