用途:为使用 Patrol 编写端到端测试提供架构规范,覆盖测试组织、键管理与执行流程。
主要能力:采用 Modules、System、ApiClients 模式组织测试;每个测试文件只含一个测试,使用自定义 testApp 包装器。Module 按用户视角的功能划分(如 Auth、Home、Downloads、Player);System 负责 $.platform 原生交互(如开启飞行模式);ApiClients 聚合后端、邮件等 API 客户端。
使用方式:先直接读取 modules 聚合器、测试包装器、main keys.dart 与相关功能文件,复用已有模块函数;为所需元素分配测试键;在新测试文件中直接写 Patrol 动作,开发中频繁运行;测试通过后再把代码整理进模块,测试文件只调用模块方法。运行用 patrol-run({ "testFile": "patrol_test/your_test.dart" }),截图用 patrol-screenshot({ "platform": "android" }),退出用 patrol-quit({}),状态用 patrol-status({}),原生 UI 树用 patrol-native-tree({})。
限制与规则:只用 Patrol API,不用 flutter_test;不要自行写 patrolSetUp/patrolTearDown;tap、scrollTo、enterText 前后不加等待方法,仅在测试末尾使用;断言放在测试末尾,优先 waitUntilVisible;用键查找控件,键按功能放在 keys.dart 并字母排序,主 keys.dart 只聚合;不得改控件签名、重构结构、硬编码键或新建控件;参数化键用于动态或枚举/DTO 生成的控件。原生对话框需在触发动作后立即处理,权限优先用 $.platform.mobile.grantPermissionWhenInUse。具体 API 以 Patrol 官方文档为准。