先给结论:不要试图用“再刷新几次看看”来判定,而要把组件从页面里“抽出来”单独构造样例。做法是固定同一份数据、同一套样式变量,只改变组件所处的页面上下文,逐个记录差异。当差异能稳定复现,才说明它来自上下文而非偶发;若换个页面就消失,验收对象就应从组件本身转到该页面的容器、样式作用域或数据来源上。
同一组件在不同页面表现不同,常见有三类解释:一是页面级样式覆盖了组件内部样式;二是两处传入的数据结构或字段缺失程度不同;三是组件被放在不同宽度的容器中,触发了响应式分支。这三类的验收方式完全不同,所以第一步不是改代码,而是确认差异是否稳定。
具体动作:把两个页面的地址、视口宽度、登录状态、数据来源各记录一行,然后各刷新三次并截图。若三次结果一致,差异稳定,可进入样例构造;若结果在页面内部就来回跳变,那更可能是异步数据或字体、图片加载时序造成的,应先固定加载条件再谈组件问题。这一步的结果直接决定下一步:稳定差异按“上下文对照”做样例,不稳定差异按“时序与依赖”做样例。
可执行的验收样例建议包含三部分,缺一不可。
假设一个列表组件在首页显示正常、在详情页侧栏文字被截断。基线样例传入 5 条标准长度数据,正常;变量样例把容器宽度收窄到侧栏宽度,复现截断;回退样例传入一条 40 字标题,若截断更严重,就能确认问题出在容器约束与文本换行策略的组合,而不是数据本身。这个判断会决定下一步:改容器约束还是改组件内部换行规则。
验收样例要产出可对照的证据,而不是主观描述。建议每个样例固定记录以下几项:
当两处证据只有一项不同,就能把原因收敛到那一个变量上。若多项同时不同,先不要下结论,回到变量样例重新只改一项。这一步的价值在于:它把“首页正常、详情页异常”这种模糊描述,转换成“容器宽度从 1200px 变为 720px 时出现截断”的可执行结论。
样例构造完成后,不要只留在聊天记录里。把基线、变量、回退三类样例整理成一个可重复打开的页面或组件预览入口,并注明每组样例对应的假设条件。这样下次同一组件在第三个页面出问题时,可以直接套用已有样例,先判断它属于哪一类,而不是从零排查。
需要注意的适用条件:如果两处页面的数据来自不同接口或不同字段映射,样例必须先统一数据来源,否则测的其实是两份数据而非同一个组件。另外,若差异只在特定浏览器或特定网络条件下出现,应把该条件作为变量单独列出,不要混进容器宽度的对照里。把条件写清楚,样例才具备可复用性;条件含糊,样例只会变成另一份“看起来没问题”的截图。