先给结论:不要试图复现“组件本身”,而要复现“组件所处的页面条件”。同一组件在不同页面表现不同,通常不是组件坏了,而是它继承的容器宽度、字体上下文、数据条数或加载顺序不同。构造验收样例的正确做法是把这些差异显式写进样例,让每个样例只改变一个条件,再观察结果是否稳定复现。
在昭通网站制作的交付验收中,遇到“同一个卡片组件,列表页正常、详情页错位”这类现象,先做一次二分判断:差异是上下文驱动还是数据驱动。这两类问题的验收样例构造方式完全不同。
区分动作:把出问题的组件原样复制到一个空白测试页,只保留最外层容器,分别套用两个页面的容器宽度和字体设置。如果错位跟着容器走,就是上下文问题;如果跟着数据走,就是数据问题。这一步的结果直接决定下一步是调容器样式还是补数据边界样例,不要跳过。
确认是上下文问题后,样例构造的核心是“控制变量”。假设列表页容器可用宽度约 960px,详情页主栏约 640px,那么验收样例至少要包含这两档宽度,而不是只测当前屏幕。
<div class="case-640"> 和 <div class="case-960">。这样做的结果是:你能明确说出“组件在 640 宽度下会多出一行,导致按钮被挤出容器”。有了这条结论,修复方向就是给容器设最小高度或改用弹性布局,而不是去改组件内部逻辑。验收时也只需复测这两档宽度,不必每次全站回归。
如果差异跟着数据走,样例就不再围绕宽度,而是围绕内容边界。一个可用的最小样例集是四种:字段为空、字段极短、字段超长、条目数超过预期。
动作与结果:把这四组假设数据填入样例页并截图。如果只有“超长”这一组出问题,说明组件缺少截断或换行约束,修复点集中在文本容器;如果四组都出问题,说明组件的高度和对齐本身依赖内容,需要重设布局基准。下一步的验收范围也随之收窄或扩大。
有一种反常结果值得单独说明:样例页里一切正常,回到真实页面又错位。这通常意味着差异来自样例页之外的加载顺序或样式覆盖,而不是组件本身。此时不要继续加样例,而要先排查两件事:
需要提醒的是,抓取量、请求量或某项统计归零,并不能单独证明问题已解决,也可能是缓存、抓取节奏或统计口径变化造成的。判断修复是否有效,仍要看样例页与真实页面在同一条件下是否表现一致。
对昭通网站制作这类多页面项目,最省事的做法不是每次临时复现,而是把上面两类样例合并成一份固定清单:两档容器宽度、四种数据边界,共八张对照截图。每次组件改动后只跑这八张,出现新差异时再针对性地增加一档条件。这样既控制了验收工作量,也保证每个结论都有可核对的证据支撑,而不是靠“看起来正常”来判断。