From cbcdf216fac3cfa92658654f4fe1472a7f5c8441 Mon Sep 17 00:00:00 2001 From: Adegbite Ayoade Date: Fri, 18 Sep 2026 02:51:23 +0100 Subject: [PATCH] fix(vscode): scope render tab assertions to the editor tab The render e2e tests asserted on the rendered model's tab title with a bare text selector. Recent VS Code builds show the active editor's name in the chat view as well, so the selector matches two elements and Playwright fails with a strict mode violation: locator('text=sushi.customers (rendered)') resolved to 2 elements: 1) sushi.customers (rendered) 2) sushi.customers (rendered) aka getByLabel('Enable current file context').locator('a') Match the editor tab by role instead, which ignores the chat entry. Verified against code-server 4.107.1 and 4.137.0. Signed-off-by: Adegbite Ayoade --- vscode/extension/tests/render.spec.ts | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/vscode/extension/tests/render.spec.ts b/vscode/extension/tests/render.spec.ts index db660daae1..be0ad0fc41 100644 --- a/vscode/extension/tests/render.spec.ts +++ b/vscode/extension/tests/render.spec.ts @@ -38,7 +38,7 @@ test('Render works correctly', async ({ page, sharedCodeServer, tempDir }) => { // Check if the model is rendered by check if "`oi`.`order_id` AS `order_id`," is in the window await expect(page.locator('text="marketing"."customer_id" AS')).toBeVisible() - await expect(page.locator('text=sushi.customers (rendered)')).toBeVisible() + await expect(page.getByRole('tab', { name: 'sushi.customers (rendered)' })).toBeVisible() }) test('Render works correctly with model without a description', async ({ @@ -74,7 +74,7 @@ test('Render works correctly with model without a description', async ({ // Check if the model is rendered correctly await expect(page.locator('text="orders"."id" AS "id",')).toBeVisible() - await expect(page.locator('text=sushi.latest_order (rendered)')).toBeVisible() + await expect(page.getByRole('tab', { name: 'sushi.latest_order (rendered)' })).toBeVisible() }) test('Render works correctly with every rendered model opening a new tab', async ({ @@ -104,7 +104,7 @@ test('Render works correctly with every rendered model opening a new tab', async await runCommand(page, 'Render Model') // Check if the model is rendered correctly - await expect(page.locator('text=sushi.latest_order (rendered)')).toBeVisible() + await expect(page.getByRole('tab', { name: 'sushi.latest_order (rendered)' })).toBeVisible() // Open the customers model await page @@ -117,8 +117,8 @@ test('Render works correctly with every rendered model opening a new tab', async await runCommand(page, 'Render Model') // Assert both tabs exist - await expect(page.locator('text=sushi.latest_order (rendered)')).toBeVisible() - await expect(page.locator('text=sushi.customers (rendered)')).toBeVisible() + await expect(page.getByRole('tab', { name: 'sushi.latest_order (rendered)' })).toBeVisible() + await expect(page.getByRole('tab', { name: 'sushi.customers (rendered)' })).toBeVisible() }) test('Render shows model picker when no active editor is open', async ({ @@ -146,7 +146,7 @@ test('Render shows model picker when no active editor is open', async ({ await page.locator('text=sushi.customers').click() // Verify the rendered model is shown - await expect(page.locator('text=sushi.customers (rendered)')).toBeVisible({ + await expect(page.getByRole('tab', { name: 'sushi.customers (rendered)' })).toBeVisible({ timeout: 2_000, }) })