From 55b0ffa4fd2f8cfe275a9699bc632be91f7ae4f8 Mon Sep 17 00:00:00 2001 From: Nick Shirokov Date: Sat, 14 Mar 2026 14:20:12 +0300 Subject: [PATCH] fix(web-test): pass table scope to highlight in clickElement MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit highlight() was ignoring the table parameter, always highlighting the first matching button (e.g. "Добавить" for Входящие instead of Исходящие). Now clickElement passes { table } to highlight, and highlight pre-resolves the grid via resolveGridScript to pass gridSelector to findClickTargetScript — same pattern as clickElement itself. Co-Authored-By: Claude Opus 4.6 --- .claude/skills/web-test/scripts/browser.mjs | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/.claude/skills/web-test/scripts/browser.mjs b/.claude/skills/web-test/scripts/browser.mjs index af6a6544..6e47dae5 100644 --- a/.claude/skills/web-test/scripts/browser.mjs +++ b/.claude/skills/web-test/scripts/browser.mjs @@ -1444,7 +1444,7 @@ export async function fillFields(fields) { export async function clickElement(text, { dblclick, table } = {}) { ensureConnected(); await dismissPendingErrors(); - if (highlightMode) try { await highlight(text); await page.waitForTimeout(500); await unhighlight(); } catch {} + if (highlightMode) try { await highlight(text, { table }); await page.waitForTimeout(500); await unhighlight(); } catch {} try { // First check if there's a confirmation dialog — click matching button @@ -4012,7 +4012,7 @@ export async function hideTitleSlide() { */ export async function highlight(text, opts = {}) { ensureConnected(); - const { color = '#e74c3c', padding = 4 } = opts; + const { color = '#e74c3c', padding = 4, table } = opts; // Remove previous highlight first await unhighlight(); @@ -4108,7 +4108,12 @@ export async function highlight(text, opts = {}) { const formNum = await page.evaluate(detectFormScript()); if (formNum !== null) { // 3a. Try button/link/tab/gridRow via findClickTargetScript - const target = await page.evaluate(findClickTargetScript(formNum, text)); + let gridSelector; + if (table) { + const resolved = await page.evaluate(resolveGridScript(formNum, table)); + if (!resolved.error) gridSelector = resolved.gridSelector; + } + const target = await page.evaluate(findClickTargetScript(formNum, text, table ? { tableName: table, gridSelector } : undefined)); if (target && !target.error) { if (target.id) { elId = target.id;