先给结论:不要试图用一个“标准页面”验收组件,而要把组件出现的每个上下文差异抽成变量,再为每种变量组合构造最小样例。组件本身很少是唯一原因,页面级样式、容器约束和加载顺序经常才是差异来源。验收样例的目标不是证明组件正确,而是找出它在哪些上下文条件下会失效,并把这些条件固定成可复现的检查项。
在网站建设论坛里常见这类反馈:某个组件在样板页里显示正常,一旦放进列表页、详情页或弹窗内,间距、换行、层级或交互就变了。个别样本成立并不能说明组件可靠,只说明该样本恰好满足了组件需要的上下文条件。
规模化后出现例外,通常不是组件“时好时坏”,而是页面提供的环境不同。验收如果只覆盖一个页面,就等于默认所有页面的环境一致,这个假设往往不成立。
差异通常可以归到两类解释。
解释一:样式作用域冲突。组件自带样式与页面样式同名或优先级接近,谁生效取决于选择器权重和引入顺序。同一组件在不同页面表现不同,可能只是某页面多了一条更具体的选择器。
解释二:容器与加载条件不同。组件被放进宽度受限的侧栏、被放进异步加载的弹窗,或依赖的字体、脚本晚于组件渲染,都会改变最终呈现。此时改组件样式未必有效,因为约束来自外部。
两类解释的修复方向相反:前者要收敛样式边界,后者要调整容器或加载时序。判断错方向,会在错误的地方反复修改。
可以用以下动作收集能区分解释的证据,并据此决定下一步。
若改变容器宽度就能复现或消除差异,优先按解释二处理;若最终生效样式来自页面而非组件,优先按解释一处理。这个判断直接决定下一步是改容器,还是收敛组件样式边界。
把组件出现的上下文差异列成变量,例如容器宽度档位、是否在弹窗内、是否异步加载、页面是否覆盖了同名样式。然后为每个变量取两个极端值,交叉出最小样例集,而不是穷举所有页面。
假设某组件在窄侧栏和宽主栏表现不同,可以构造两个样例:一个固定窄容器,一个固定宽容器,其余条件完全一致。运行后若只有窄容器异常,就把窄容器作为必测条件写入验收项;若两者都异常,问题更可能在组件自身。
每个样例应记录:容器约束、页面级样式是否覆盖、依赖资源加载顺序、预期表现。验收时逐项对照,出现偏差就回到上面的证据收集步骤,而不是直接改组件。
这套方法适用于组件在多个页面复用、且页面环境存在可识别差异的场景。如果组件只在一个页面出现,或所有页面环境完全一致,构造多套样例的收益有限,按单页验收即可。
另外,样例只能覆盖你已识别的变量。未识别的上下文差异仍可能在规模化后暴露,因此验收样例需要随新页面类型补充,而不是一次定稿后长期不变。把每次新出现的例外反推成新变量,样例集才会逐步贴近真实使用条件。