SuperAPI AI 工具集

verify-form-validation

测试与质量

查看项目

更新于 10-16 02:23

技能介绍

verify-form-validation 是一个面向表单校验的自动化验证技能,属于 Reticle 技能集,来源仓库为 reticlehq/reticle。它的核心目标是解决一类常见的线上缺陷:表单虽然拒绝了错误输入,界面上看起来一切正常,但代码实际上从未被真正驱动过——开发者往往只用一个明显错误的值在浏览器里扫一眼就放过,而真正出问题的是那些没试过的值,例如某个字段直到失焦才禁用提交按钮、按钮只靠 CSS 看起来不可点击实际上仍可点击、或者处理函数在检查完成前就发出了请求。

主要能力 该技能可以在真实浏览器中驱动真实表单,并一次性检查三个失效点:第一,错误信息是由应用自身的元素渲染(比如 data-testid、role 或具体字符串),而不是浏览器原生的约束校验气泡;第二,提交控件的 disabled 状态是真实的,而不是 opacity 或 cursor 之类的样式伪装;第三,确实没有匹配的请求被发出,是通过计数而非推断得出。此外它要求验证拒绝是有条件的:填入合法值后错误应消失、提交应重新启用。如果表单从未重新启用,则说明还存在第二个缺陷。

使用方式 技能基于 Reticle 的工具调用接口。典型流程包括:先用 reticle_look 获取字段和提交控件的引用;再用 reticle_act_and_wait 填入非法值并等待错误元素出现、提交按钮变为禁用;若校验在失焦时触发,需先 focus 到另一个控件以触发 blur;若存在防抖,应使用 reticle_clock 精确推进时间窗口,而不是固定 sleep。随后即使按钮显示禁用,也应尝试点击提交,以捕获伪禁用控件;再通过 reticle_assert 配合 settled 谓词和 timeout_ms(例如 3000 毫秒)轮询,确认页面真正静默后再断言匹配请求计数为 0。最后填入合法值,确认错误消失且提交重新启用。注意 reticle_assert 默认 timeout_ms 为 0,仅做一次即时求值,不足以证明应用已空闲,必须显式设置等待时间,并且 since 应取自点击自身的结果。

适用场景 适用于需要验证表单对非法输入拒绝行为的开发与测试环节,尤其是重视端到端真实性、需要区分应用校验与浏览器原生校验、以及需要证明请求未被发出的场景。

限制与注意事项 判定结论仅针对所驱动的这一个字段和这一个非法值,不能代表整个表单或其他字段的校验逻辑。如果只驱动了一个输入,应明确说明其余部分未验证,不能让单次通过被读作“该表单校验有效”。浏览器自身的 required、pattern、type="email" 等原生校验会先于应用 JS 运行,若断言的是原生提示,则验证的是浏览器而非被测代码。此外,文档未提供该技能的具体收费、价格、平台支持范围或版本信息。