先给结论:不要继续争论组件“到底有没有问题”,而是把它在两类页面上的差异写成可复现的验收样例。一类是组件处于标准容器与完整数据下的页面,另一类是它被放进窄栏、空数据或嵌套布局中的页面。验收样例要固定输入数据、容器宽度、字体加载状态和交互步骤,让每个人看到同一结果,再决定是改组件本身,还是约束它的使用条件。
同一组件表现不同,通常不是代码随机出错,而是它在不同上下文里承担了不同职责。构造验收样例前,要先判断它属于哪一种。
两种条件的动作不同。前者要求开发修改组件内部逻辑,后者要求设计和使用方调整放置位置。把这两件事混在一起,评审就会变成互相说服,而不是核对事实。
要让不同角色对同一事实有共同理解,验收样例至少要固定以下变量,缺一项就可能在复现时产生新分歧。
假设有一个课程卡片组件,在列表页正常,放进详情页侧栏后标题挤成三行、按钮掉到卡片外。可以构造两个样例:样例A使用列表页容器宽度和两条数据,预期是标题两行内、按钮与卡片底部对齐;样例B使用侧栏宽度和一条超长标题,预期是标题截断且按钮仍在可视区域内。这里的数据和宽度都是假设值,实际项目要换成团队能共同复现的数值。执行后如果样例B失败,下一步就不是继续争论,而是确认侧栏是否属于该组件的允许使用范围。
有效的顺序是先写出当前会失败的样例,再让开发、设计和使用方分别确认。这个动作的结果会直接影响下一步:
把这些结论写进验收记录时,要保留失败样例本身。只写“已修复”会让后来的人无法判断修复是否覆盖了原来的条件。
有一种常见误判:某个页面不再报错,就认为组件已经通用。实际上,可能只是这个页面恰好没有触发窄栏、空数据或长标题。反过来,某个页面出现错位,也不能单独证明组件有缺陷,还要排除父级样式覆盖、内容录入格式异常和临时资源加载失败。
因此,验收样例要保留一组对照:同一组件在标准条件下的结果,以及在目标边界条件下的结果。只有对照成立,才能说明差异来自组件与容器的关系,而不是某一次操作或某一台设备的偶然表现。对于只在特定页面使用的组件,明确写出“不承诺支持哪些容器”,比强行让它适配所有位置更可维护。
当团队对同一组件的表现各执一词时,先固定输入、容器、加载状态和操作路径,写出一个会失败的样例和一个会通过的样例,再根据失败范围决定改组件还是限制用法;这样验收就不再依赖谁的描述更响亮,而是依赖可重复核对的事实。