先给结论:不要试图找一个“能复现全部页面”的样例,而要按组件所处的页面条件分层构造。通常把页面分成“组件独立出现”和“组件被其他布局挤压”两类,各写一份最小样例,再补一份跨页对照样例。这样做的目的是让差异变成可核对的证据,而不是靠记忆描述。如果只在一个页面里反复刷新,往往只能得到“有时好有时坏”的模糊印象,无法支撑后续修改决策。
同一组件在不同页面表现不同,常见原因有三类:组件自身状态未覆盖全、父级容器约束不同、页面其他脚本或样式介入。验收样例要能把这三种解释区分开。做法是固定组件输入,只改变页面条件,观察输出是否变化。
注意一个反例:某页面组件高度异常,不一定是布局问题,也可能是字体加载前后测量时机不同。请求量或报错量归零也不能单独证明处理正确,因为差异可能只是被掩盖,而非被消除。此时应保留对照页面,而不是只修一个页面。
第一种条件:组件独占一个内容区,父容器宽度固定,页面不加载其他业务脚本。第二种条件:组件被放入带侧栏或折叠面板的窄容器,且页面同时加载了其他模块。两种条件成立时,样例的写法不同。
独立条件下的样例只需覆盖组件的输入、初始状态和一次交互后的状态,重点确认组件自身逻辑是否自洽。被挤压条件下的样例则要额外记录容器宽度、可用高度、滚动行为和相邻元素占位。实施动作是:为每种条件各建一个静态页面,只保留必要样式,把组件以相同参数嵌入,然后逐项记录渲染结果。这个动作的结果会直接影响下一步——如果独立条件下正常、挤压条件下异常,修改方向应放在容器约束和响应式规则上,而不是重写组件逻辑。
假设一个短例子:某筛选组件在列表页显示为一行,在详情页侧栏中变成三行并遮挡按钮。此时不要先改组件,而是先构造两个样例页面,一个给足宽度,一个限制宽度,分别截图并记录容器计算后的宽度值。若限制宽度样例中组件内部换行阈值与预期不符,就能定位到是断点设置问题,而非数据问题。
跨页对照样例的价值在于把“页面差异”变成可比较的变量。构造时保持组件参数、数据源和交互步骤一致,只改变页面级因素,例如容器宽度、是否加载某脚本、是否处于折叠状态。每次只改一个因素,改动后重新记录。
如果差异在还原某一项后消失,说明该项就是有效变量;如果还原全部因素后仍存在差异,说明还有未记录的变量,需要回到样例构造阶段补充条件。这个判断依据比“看起来正常了”更可靠。
当组件依赖实时数据或用户登录态时,静态样例无法完全复现,此时应改用可控制的模拟数据,并明确标注假设条件。当差异只在特定浏览器或特定网络条件下出现时,样例要补充对应环境记录,而不是只记录页面结构。例外情况还包括:组件本身处于实验阶段、接口尚未稳定,此时构造验收样例的意义有限,应先冻结接口再谈样例。
最后,验收样例要能回答“改哪里、改完看什么”。如果一份样例只能说明“这里不一样”,却不能指出下一次检查哪个条件,它就还不算合格。把条件、动作和预期结果写在同一份记录里,才能让不同页面之间的差异变成可复用的判断依据,而不是一次性的排查结论。