结论是:先固定“组件版本、页面上下文、判定口径”三个变量,再构造能复现差异的最小样例;如果差异只在某个页面出现,验收样例就应该以该页面为基准,而不是要求组件在所有页面表现一致。反例是:当差异来自页面模板本身的旧代码残留,而不是组件版本不同,那么按组件版本构造样例就会失效,需要先清理模板再验收。
同一组件在不同页面表现不同,通常有三种来源:组件版本不一致、页面传入的数据结构不同、页面模板里残留了旧样式或旧脚本。验收样例要能区分这三类,否则会把模板问题误判为组件问题。
一个可操作的判断方法是:在出现差异的两个页面上,分别记录组件加载的文件版本、传入参数、外层容器结构。假设 A 页面组件显示正常,B 页面显示错位,先对比两者加载的组件文件是否指向同一版本号。如果版本不同,问题在版本;如果版本相同,再看 B 页面外层是否存在覆盖组件样式的旧类名。这个动作的结果直接决定下一步:版本不同就统一版本后重测,版本相同就进入模板清理。
验收样例要能复现问题,必须固定以下三项,缺一项就可能出现“这次好了下次又坏”的情况。
把这三项写进验收项后,再构造一个只保留组件和必要外层结构的最小页面。如果最小页面能复现差异,说明问题在组件本身;如果不能复现,说明差异来自原页面的其他部分。
旧内容或旧系统退出时,常见做法是整页替换。但同一组件在旧页面和新页面表现不同,往往说明旧页面里还有仍然有价值的配置,比如特定的数据映射关系或已调好的间距参数。验收样例应该把这些保留项单独列出,而不是随旧页面一起丢弃。
具体动作是:在旧页面中定位组件实际生效的样式和参数,逐条与组件默认值对比。只保留那些在旧页面中确实改变了显示结果、且新页面也需要保持一致的项目。保留项进入新页面的验收样例,其余旧代码清理。这样做的结果是,新页面不会因为继承了无关旧代码而再次出现同一组件表现不一致。
如果差异来自页面模板中残留的旧脚本,且该脚本在组件加载之后执行,那么无论怎样统一组件版本,表现差异都会继续存在。此时按组件版本构造的验收样例全部无效。
识别方法是:在差异页面中暂时移除疑似旧脚本,刷新后观察组件表现是否恢复一致。如果恢复,说明问题在脚本执行顺序,而不是组件本身。这一步必须在构造正式验收样例之前完成,否则样例会建立在错误的前提上。
完成上述区分后,下一步是写一份只针对该组件的验收记录,包含:组件版本、涉及页面、每个页面的上下文差异、最小复现样例、保留项清单、判定口径。验收时逐页对照记录执行,出现不一致时先查记录中的上下文差异,而不是直接改组件代码。
如果清理模板后差异消失,验收样例可以简化为只保留组件版本和判定口径;如果差异仍然存在,则需要在样例中保留页面上下文这一项,并把它作为后续每次组件升级的必查内容。这样处理的结果是,同一组件在不同页面的表现差异从“偶发问题”变成“可核对的验收项”,下一步的修改也有了明确依据。