先别改组件。你要做的是把“表现不同”拆成可观察的差异,再为每种差异各写一条能复现、能判定的验收样例。假设你正在零基础建站,同一个按钮组件在首页显示正常,到了文章页却换行、间距变大,并且在窄屏下更明显——这时如果只截图给开发者,往往会被回一句“我这边看没问题”。构造验收样例的目的,就是让双方在同一组条件下看到同一结果。
同一组件在不同页面表现不同,最常见的原因不是组件本身,而是它所在的容器不同。首页可能给按钮一个固定宽度的父容器,文章页的正文区域则可能更窄;首页的标题层级少,文章页的标题和正文可能把按钮挤到下一行。所以在写样例之前,先记录三个条件:页面路径、视口宽度、组件所处的父容器。
一个可执行的判断方法是:把出现问题的页面复制成最小测试页,只保留容器和这个组件,去掉其他内容。如果最小测试页里差异消失,说明问题来自周边内容或布局;如果差异仍在,说明问题更可能出在组件样式或它依赖的全局规则。这个动作会直接决定下一步是查页面结构,还是查组件定义。
不要只凭肉眼判断。你可以按下面这组证据逐项核对,每项都写成可勾选的验收样例:
这些证据的作用是排除法。比如,假设在 375 像素宽度下,首页按钮宽度为 160 像素,文章页为 120 像素,同时文章页父容器可用宽度只有 130 像素——那么优先怀疑容器约束,而不是组件定义。这个假设只是用来说明比较方法,不代表真实项目数据。
零基础建站时最容易犯的错误,是把验收样例写成“按钮显示正常”。这种描述无法判定。更可用的写法是固定条件、动作和预期:
如果预期没有达成,就把实际观察到的差异补进样例,而不是直接改代码。这样做的结果是,你手里会有一组能重复执行的检查项,后续每次调整都能用同一组样例复测,避免修好一个页面又弄坏另一个页面。
并不是所有差异都要消除。如果两个页面的内容密度、阅读距离或容器宽度本来就不同,强行让组件完全一致,反而可能让文章页的按钮显得过大或过小。判断标准可以落到两个条件上:
选择前者时,验收样例要写明“允许的差异范围”,例如宽度在 120 到 160 像素之间都算通过。选择后者时,样例要写明“不允许出现的表现”,例如文字换行、点击区域小于可操作范围。把取舍写进样例,比事后争论“哪个页面更好看”更容易执行。
调整之后,重新跑一遍样例,并记录每个条件的结果。重点不是写“已修复”,而是写清楚改了什么、哪个页面的哪个条件发生了变化。例如:把文章页父容器的内边距减小后,375 像素宽度下按钮不再换行,但 320 像素宽度下仍会换行。这个记录会直接告诉你下一步是继续调整断点,还是接受该宽度下的换行表现。
如果复测后两个页面仍然不同,不要急着下结论说组件有问题。更合理的解释可能是页面内容长度不同、字体加载状态不同或测试时浏览器缓存不同。把“请求量归零”或“某次抓取异常”单独当作判断依据也不可靠,因为这些现象可能来自缓存、临时网络波动或测试环境差异。验收样例的价值在于把可观察的条件固定下来,让每次判断都有同一把尺子。