diff --git a/client/electron/test/narrow-layout.test.mjs b/client/electron/test/narrow-layout.test.mjs index efda5df..c5b82d6 100644 --- a/client/electron/test/narrow-layout.test.mjs +++ b/client/electron/test/narrow-layout.test.mjs @@ -221,8 +221,19 @@ check( check( '回复框展开后有收回归口(宽窄都有,不再只在窄屏渲染),点开时焦点落到输入框', mv.includes('aria-label="收起回复框"') && - // 焦点:原来是 autoFocus={narrow},宽屏点开悬浮球就不会聚焦 - /autoFocus(?![={])/.test(mv) + /* + * 焦点要钉在**回复框自己的 Composer** 上。 + * + * 第一版写的是 `/autoFocus(?![={])/` —— 全文件搜一个裸 `autoFocus`, + * 而 MailView 里预算输入框、编辑器还有几处 `autoFocus`,于是把回复框改回 + * `autoFocus={narrow}` 时它**照样绿**(变异测试抓到的)。 + * 按 §1:取那个标签自己的 `{...}`/`/>` 体再断言,不靠全文件搜关键字。 + */ + (() => { + const blocks = [...mv.matchAll(//g)].map(m => m[0]); + const reply = blocks.find(b => b.includes('density="roomy"')); + return !!reply && /\bautoFocus\b/.test(reply) && !/autoFocus=\{/.test(reply); + })() ); check( '折叠控件里没有一处只在窄屏生效(narrow && … 的折叠分支已清空)',