先给结论:不要用“首页正常”来证明组件合格,也不要把所有页面都塞进同一份样例。正确做法是按组件所处的上下文分组,每组选一个代表性页面作为验收样例,再单独列出会触发例外的页面。判断分组是否成立,看三个变量:容器宽度、数据形态、页面级样式覆盖。三者中任意一项不同,就应拆成独立样例,而不是靠肉眼在浏览器里来回切换。
同构复用指组件在多个页面里嵌入相同的容器宽度、相同的数据结构、相同的主题变量,只是文案不同。这种条件下,一个样例可以覆盖多个页面,验收时只需确认组件自身的渲染、交互和边界状态。
跨上下文复用指组件被放进侧栏、弹窗、文章正文、列表卡片等不同容器,或同一组件接收的数据字段数量不一致。这种条件下,一个样例不能代表另一处,必须为每种上下文各建一个样例。区分标准不是“页面多不多”,而是组件进入页面后,外部给它的约束是否一致。
实际操作上,可以先在浏览器开发者工具里选中组件根节点,记录它的计算宽度、继承的字体大小、生效的页面级样式规则数量。如果两个页面这三项基本一致,可归为同一组;只要有一项明显不同,就拆组。这个动作的结果直接决定后面要写几份验收样例,避免样例数量拍脑袋。
容器宽度是最常见的差异来源。同一张卡片放在通栏区域和窄侧栏里,换行位置、图片裁切、按钮是否溢出都会不同。构造样例时,不要只写“在首页检查卡片”,而要写清容器约束。
假设一个项目里,组件基准宽度按 960 像素设计,但实际会放进 320 像素左右的侧栏。此时宽容器样例通过并不代表窄容器通过,必须补一份窄容器样例。这里的数字只是说明比较方法,不代表任何真实项目数据。
同一组件接收的数据不同,表现也会不同。标题从四个字变成二十个字、列表从三条变成三十条、图片缺失或字段为空,都可能让原本正常的布局出问题。构造样例时,要按数据形态而非页面名称来分。
这些样例的价值在于:当某个页面出现异常时,你能快速判断它属于哪一类数据形态,从而知道是组件问题还是数据问题,避免在错误的层面反复修改。
很多“同一组件不同页面表现不同”的案例,根源不在组件,而在页面级样式覆盖。比如某个页面为了局部排版,给容器加了不同的盒模型、行高或外边距,组件进入后就被间接改变。
构造这类验收样例时,动作要具体:在目标页面打开开发者工具,查看组件根节点上生效的样式规则,区分哪些来自组件自身,哪些来自页面。若发现页面级规则覆盖了组件关键属性,应把该页面单独列为样例,并记录覆盖来源。
结果如何影响下一步:如果覆盖来自页面级样式,优先在页面层收敛,而不是在组件内部加对抗性样式;如果覆盖来自组件自身在不同上下文下的默认值差异,则需要在组件层统一。两种情况处理位置不同,样例记录必须写清来源,否则修复会互相干扰。
即便分组看起来合理,以下情况仍要单独建样例,不能直接复用:
这些例外的共同点是:组件进入页面后,外部约束发生了实质性变化。只要约束变了,样例就不能照搬。验收样例的边界应当写进交付说明,让后续维护者知道哪些页面已被覆盖、哪些需要重新验证。
最后给一个可执行的小结:先把组件按容器宽度、数据形态、页面级样式覆盖三个维度分组,每组选一个代表性页面写成样例,再单独维护例外清单。每份样例都要写明适用条件、验收动作和结果如何影响下一步。这样当某个页面出现异常时,你能判断它属于哪一组、是否在样例覆盖范围内,而不是靠反复刷新页面碰运气。