结论先行:先把“组件本身”和“组件所处页面环境”分开验证。做法是固定一份组件基准样例,再为每个出现差异的页面各建一份环境样例,两份样例都跑同一组断言,差异才能被定位到具体变量,而不是笼统判为“组件坏了”。
同一组件在不同页面表现不同,通常只有三类原因:页面传入的数据不同、页面提供的样式或布局上下文不同、页面加载时序不同。验收样例要先能区分这三类,否则修完一处又会在另一处复现。
一个可操作的判断方式是:把该组件单独放进一个最小页面,只喂入固定数据,记录它的渲染结果、交互响应和布局尺寸,作为基准样例。然后回到出问题的页面,用同一份数据复现,如果结果不同,差异就落在环境侧;如果结果相同,差异就落在数据侧。这一步的产出会直接决定下一步是改组件代码,还是改页面的调用方式。
基准样例不是截图存档,而是一份可重复执行的断言清单。建议至少固定以下变量,让每次比对都有可比性:
这些变量写进样例后,任何一个页面出现差异,都能对应到具体某一项,而不是靠肉眼描述“看起来不一样”。
如果站点有几十个页面都用了这个组件,不必逐页建样例。先按差异表现分组:布局容器宽度接近的归为一组,传入数据结构接近的归为一组,加载路径接近的归为一组。每组选一个代表页面建环境样例,组内其余页面用同一份断言抽查。
这样做的代价是覆盖粒度变粗,收益是维护成本可控。适用前提是页面模板同源、差异主要来自内容而非结构;如果某些页面是独立开发的模板,就应单独建样例,不要强行合并。
验收过程中常会遇到一类情况:某个旧页面依赖的组件写法已经过时,但它仍然承载着有价值的内容。这时有三种取舍,各有前提。
保留适用于该页面流量结构稳定、组件行为已验证、且没有安全或兼容性风险。保留时仍要把它纳入环境样例,防止后续改动波及。
改写适用于内容仍有价值、但组件调用方式或样式上下文已经无法与新版页面共存。改写前先确认内容本身可以平移,再把组件替换为新版并重跑基准断言。
退出适用于页面内容已无独立价值、或维护成本持续高于收益。退出前应确认没有其他页面依赖它的数据或跳转关系,避免留下断链。
三种取舍不要求同时成立,判断依据是内容价值与维护成本的比较,而不是组件新旧本身。
假设某按钮组件在列表页显示正常,在详情页文字被截断。按上面的方法,先建基准样例:固定按钮文案为固定长度,容器宽度设为 320 像素,断言文字不换行、不溢出。再建详情页环境样例:容器宽度设为 200 像素,其余条件相同。
执行后如果基准样例通过、环境样例失败,说明差异来自容器宽度约束,应优先调整详情页的布局规则或为窄容器定义单独的换行策略,而不是修改按钮组件本身。如果两份样例都失败,才需要回到组件内部检查。这个例子的数字仅用于说明比较方法,实际取值应按项目自身布局确定。
验收样例的价值在于让结论可追踪。每次执行后记录三件事:哪份样例失败、失败对应哪个变量、该变量属于数据侧还是环境侧。数据侧失败通常改调用方,环境侧失败通常改样式或布局,组件内部失败才动组件代码。
如果同一变量在多个环境样例中反复失败,说明它不是页面特例,而是组件缺少对该条件的默认处理,应升级为组件级修复并回填到基准样例。反之,只在单一页面失败的变量,优先在页面层解决,避免为个别场景给组件增加不必要的分支。