该技能用于指导 Claude 为 Vaadin 25 Flow 视图编写 Browserless Testing(原 UI Unit Testing)测试。测试在服务端 JVM 内直接操作视图类与 Vaadin 组件,不启动浏览器或 Servlet 容器,速度快且适合 CI。Vaadin 25.1 起对所有用户免费;更早版本需 TestBench 商业订阅。不确定 API 细节时用 Vaadin MCP 的 search_vaadin_docs 查文档,vaadin_version 设为 25,ui_language 设为 java。
主要能力:继承 BrowserlessTest 或 SpringBrowserlessTest(后者配合 @SpringBootTest 用于 Spring Boot 项目)搭建会话、UI 与路由;navigate 按视图类、URL 参数、路由模板参数或路径字符串跳转并返回视图实例;test(component) 生成类型专用 tester 模拟打字、点击、勾选、下拉选择等,Grid 用 GridTester 点击行,Notification 可读取文本;$(ComponentClass.class) 查询当前 UI 组件,支持 first、id、all、exists 与嵌套查询。
使用方式:加入测试依赖 browserless-test-junit6。从旧版迁移时替换 vaadin-testbench-unit(JUnit 4)或 vaadin-testbench-unit-junit5,并重命名基类(UIUnitTest → BrowserlessTest,SpringUIUnitTest → SpringBrowserlessTest),测试 API 不变。用 @ViewPackages 限制路由扫描范围,优先用 classes 数组以避免重构失效;非 Spring 项目直接继承 BrowserlessTest 并去掉 @SpringBootTest,Quarkus 需查 Vaadin 文档。
适用场景:视图逻辑、导航、表单校验、组件状态、数据绑定与 Binder、通知与对话框等;本地 UI 测试作为默认选择,端到端测试仅留给登录、结账、客户端 JS、视觉回归与跨浏览器等关键路径。
限制与要点:视图字段应为包级可见而非 private,便于同包测试访问;用 test() 交互而非直接调用方法;每个测试聚焦一个行为,命名采用 action_expectedResult;商业组件(如 Chart)需在测试类实现 CommercialTesterWrappers。其他细节暂未提供。