From f7a8b9eda5e000fa9bfa29e892dd628c9c18af3d Mon Sep 17 00:00:00 2001 From: AetherNo2332 <130164460+AetherNo2332@users.noreply.github.com> Date: Mon, 21 Sep 2026 07:18:47 +0800 Subject: [PATCH] =?UTF-8?q?test(web):=20Director=20E2E=20-=20=E7=82=B9?= =?UTF-8?q?=E5=87=BB=E5=89=8D=E8=A6=81=E6=B1=82=E7=9B=AE=E6=A0=87=E7=AB=99?= =?UTF-8?q?=E7=A8=B3=20300ms=20(#565)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Original-Commit: 8af5d28da78feeb30ca673030422a20e4ede0411 test(web): Director E2E - 点击前要求目标站稳 300ms clickPoint() 原来只要相邻两次读数坐标相同(间隔 100ms)就判定就绪。AntD 弹窗/抽屉有约 200ms 入场动画,动画刚开始、坐标还没动的那一拍会被判成"稳定",真正派发鼠标事件时控件已移位, 点击落到遮罩(mask.closable=false)上无效。 改为要求坐标连续 300ms 不动、等待上限 5000ms→8000ms。上游 main 上连跑两次都失败在 F6「留在导演台」(57/58),打补丁后连跑两次都是 58/58。 --- web/scripts/director-p0-chrome-e2e.mjs | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/web/scripts/director-p0-chrome-e2e.mjs b/web/scripts/director-p0-chrome-e2e.mjs index 419037acd..0bc6ae2a9 100644 --- a/web/scripts/director-p0-chrome-e2e.mjs +++ b/web/scripts/director-p0-chrome-e2e.mjs @@ -278,14 +278,23 @@ async function connectCdp(cdpPort) { if (!hit || (hit !== el && !el.contains(hit))) return null; return { x: Math.round(x), y: Math.round(y) }; })()`); - const deadline = Date.now() + 5000; + // 目标必须"站稳"再点:AntD 弹窗/抽屉有约 200ms 入场动画,只要求相邻两次读数相同 + // 会在动画刚开始、坐标还没动的那一拍就下判定,真正派发鼠标事件时控件已经移位 —— + // 点击落到遮罩上(mask.closable=false)就完全无效("留在导演台" 曾这样偶发失败)。 + const deadline = Date.now() + 8000; let previous = null; + let stableSince = 0; let box = null; while (Date.now() < deadline) { const next = await readInteractiveBox(); if (next && previous && next.x === previous.x && next.y === previous.y) { - box = next; - break; + if (!stableSince) stableSince = Date.now(); + if (Date.now() - stableSince >= 300) { + box = next; + break; + } + } else { + stableSince = 0; } previous = next; await sleep(100);