Improve Android app UI and controller flows
This commit is contained in:
@@ -211,6 +211,7 @@ def _run_frontend_tests(env: dict[str, str]) -> None:
|
||||
"tests/test_frp_ui.mjs",
|
||||
"tests/test_interaction_feedback.mjs",
|
||||
"tests/test_scene_model.mjs",
|
||||
"tests/test_scene_layers.mjs",
|
||||
"tests/test_settings_ui.mjs",
|
||||
"tests/test_template_management_ui.mjs",
|
||||
"tests/test_ui_copy_editor.mjs",
|
||||
|
||||
@@ -65,6 +65,9 @@ NetworkManager DNS 往返:`tests/test_wifi.py::test_nmcli_multiple_dns_can_rou
|
||||
| `TEST-ADC-HARDWARE` | `HW-SCREEN-VOLTAGE`、校准、故障恢复 | 核桃派 + ADC | 接线/万用表停顿 |
|
||||
| `TEST-LOW-VOLTAGE` | 限亮、图标、恢复 | 实屏 + ADC + 可调电源 | 每一档停顿 |
|
||||
| `TEST-CLEANUP` | 临时项、持久数据、GPIO 安全状态 | 本机和核桃派 | 否 |
|
||||
| `TEST-LAYERS` | WEB-LAYERS、扩展画布、图层复制与跨端输出 | Node/Python/浏览器/核桃派 | 否 |
|
||||
| `TEST-LAYER-OVERFLOW` | 黑色笔迹、背景、候选确认/取消、文字裁切与撤销 | Node/Python/浏览器 | 否 |
|
||||
| `TEST-SCENE-V2-MIGRATION` | 草稿/模板/动图迁移、摘要、原子批量提交 | Node/Python及持久副本 | 否 |
|
||||
| `TEST-INDEPENDENCE` | 单目录可拿走、无外部依赖 | 隔离临时副本 | 否 |
|
||||
| `TEST-LOCAL-ENV` | `DEPLOY-WORKSPACE-LAYOUT` 项目专用环境、路径刷新和 Git 边界 | Windows 本机及中文/空格隔离副本 | 否 |
|
||||
|
||||
@@ -315,3 +318,37 @@ TEST-MOBILE-INTEGRATION 增补 MOBILE-STATUS/DISCOVERY/PREVIEW 对应的 AND
|
||||
## Android 选测入口
|
||||
|
||||
遵循 [按影响选测](../../移动端相关内容/安卓app/如何安卓测试/按影响选测.md)。日常变更不自动执行模拟器或 root 真机全量矩阵;独立 uiTest 使用真实 Compose 界面与 Controller、测试专用假平台,不替代物理 BLE。历史版本专项不作为每轮门槛。
|
||||
|
||||
## 多图层与扩展画布(TEST-LAYERS / TEST-LAYER-OVERFLOW / TEST-SCENE-V2-MIGRATION)
|
||||
|
||||
直接影响画图工具、文字编辑、草稿、模板/动图存储和共享库渲染。运行完整 `local_test.py test --suite all`、全部Node `tests/*.mjs`;定向文件为 `test_scene_layers.py`、`test_scene_layers.mjs`、场景/画笔模型、模板、动图、配置、媒体导入和手机业务契约测试。驱动、BLE线格式和App未改:不选Android真机、摄像头、实屏图案或ADC。
|
||||
|
||||
浏览器使用隔离mock数据及新context,按以下状态核验:
|
||||
|
||||
1. 清空按钮下图层面板可达;新建/复制置顶并选中,命名和排序互不干扰;至少一个画笔层,文字层可删空。每个文字层可有多段文字,切层工具和选中元素隔离。
|
||||
2. 空白透出下层,黑色遮挡;背景各层独立且随层位移,擦除/清空只删笔迹。导入每帧仅一个画笔层。
|
||||
3. 扩展开关默认关闭、刷新记忆,开关往返不改内容;192外围可编辑,实际64边框清晰。普通预览、保存后缩略图、播放、导出/应用只取中央区域。
|
||||
4. 图层移动输入只在回车/失焦提交,各轴±1/±10逐次提交,±64限位提示;拖动预览不写草稿,松手确认。切到视线模式仍可操作移动面板,平移/捏合/滚轮不改偏移或草稿。
|
||||
5. 背景越界不报警、黑色笔迹报警、移出中央不报警;越界取消保留原稿,确认只清越界内容。文字部分裁切、整段删除、移回不恢复,字号/编辑/保存重载保留裁切,撤销完整恢复。切层后撤销对象正确,成功保存按既有检查点规则清空历史。
|
||||
6. 复制当前板、静态模板、动图单帧/多帧/全帧,副本独立置顶;未选帧/原层/帧序/时长不变。脏目标先保存/放弃/取消;过期If-Match冲突,模拟场景/缩略图/索引写入失败后重启检查原帧均不变。
|
||||
7. 桌面、390px和320px窄屏分别检查工具、文字字段、复制对话框、悬浮菜单滚动及触摸输入;菜单不能溢出视口,所有按钮通过滚动可达。PNG及叠层像素由Node/Pillow逐字节对比;迁移前后64输出相同。
|
||||
|
||||
部署使用凭据门禁、远端工具检查及 `update_walnutpi.sh`。在持久数据副本迁移后才切换,健康失败恢复原程序/数据;比对所有既有内容中央输出、帧序和时长。部署后只用接口/网页逻辑验证,读取真实驱动统计,不发送诊断图案。测试创建内容仅用独立ID,验证后删除并核验;临时载荷精确清理。保持VERSION,不导出OTA/IMG。
|
||||
|
||||
排障经验:合并文字工作区后文案选择器会改变,重建目录并更新测试中实际迁移的选择器,不能绕过目录校验。文字位置输入必须与字号/文本的input即时更新分开,位置仅change/回车提交。复制控件遵守 `runControlAction(control, options, action)`,目标修订号在选择时捕获,不能在提交前重新读取而悄悄接受并发修改。浏览器原生确认测试使用单一dialog处理器,每步后移除或切换策略;未触发的一次性监听器会残留,不得让两个处理器同时确认同一弹窗。Windows曾出现一次无关WiFi原子替换PermissionError,单测及完整重测通过,根因未证实,不改业务逻辑。
|
||||
|
||||
浏览器自动化入口:`核桃派软件源代码/scripts/check_layers_browser.mjs` 导出 `checkLayersBrowser(page, baseUrl)`。在Playwright交互REPL中使用已有浏览器的新context及隔离mock服务,动态导入该文件并调用;不安装或固定开发机浏览器路径。该入口覆盖图层增删/复制/排序/命名、多文字隔离、背景、位置输入提交、部分裁切/整段删除/撤销、笔迹越界确认/取消、视线不改草稿、扩展开关记忆及重载。触摸和320/390布局另用已有Playwright context验证。
|
||||
|
||||
独立副本验证:复制源码、需求及本机harness到隔离中文/空格目录,不复制venv/缓存/数据或凭据;以现有解释器运行复制目录中的pytest和全部Node测试,设置 `MATRIX_SOURCE_ONLY_UPDATE_TESTS=1` 仅表示不含发行载荷,跳过项逐项记录。隔离环境不可作为便携venv复用。出现Windows原子替换/目录rename的偶发WinError5时保留首轮证据,排除并发和进程占用后重测;仅在完整重测通过后签收,不把未证实原因固化成根因。
|
||||
|
||||
scene迁移比对经验:内容摘要/修订改变会让手机 `mobile/previews/<64位SHA256>.png` 缓存过期,既有 `PreviewCache.reconcile` 在新内容列表建立后清理。比对时先逐帧核验64×64像素、名称、顺序/时长、业务配置和其余持久文件,缓存例外只允许严格命名且不属于当前有效修订的旧PNG;不能泛化忽略整个mobile目录或把用户数据丢失视为缓存变化。
|
||||
|
||||
HTML验证经验:服务启动时读取首页模板;修改HTML后重启隔离mock再检查实际DOM,避免把旧服务缓存误判成布局失败。旧导航仅含文字入口、旧草稿未知字段及越界数字均纳入迁移边界测试。
|
||||
|
||||
### TEST-LAYERS-UI:颜色区、复制弹窗与移动退出
|
||||
|
||||
对应WEB-LAYERS、WEB-EXTENDED-CANVAS。桌面及390/320px分别检查颜色标题与按钮对齐、背景开关20px且整标签可点;复制帧复选框20px、合法长名称换行、弹窗不透明,帧列表独立滚动、操作按钮可达且不横向溢出。复制当前板/独立模板/独立动图多帧,并在脏目标“保存后复制”提示中检查背景与操作。
|
||||
|
||||
画笔及文字层移动后分别点击“退出图层移动”,检查仍处于全屏编辑、扩展显示和视线位置不变、面板隐藏、已提交偏移保留且撤销仍能恢复。切到视线后退出同样成立;拖动尚未松手时用键盘激活退出,候选取消且不增加历史。原来的“继续编辑”在移动图层时也应可用。可复用scripts/check_layers_browser.mjs;有持久化目标的UI操作只能针对独立测试ID,设备已有目标仅打开检查并取消,不能修改用户内容。
|
||||
|
||||
经验:全局input的width/min-height会作用于原生checkbox,必须以局部高优先级样式指定尺寸、padding及margin;不要改全局表单样式。CSS未定义变量且无fallback会使dialog背景声明失效,应复用已定义的surface变量。DOM颜色区新增子项需显式行列结构,不能依赖原两列grid自动排放。文案目录同时更新并执行--check。截图需避开固定顶栏遮挡,先将颜色标题滚动到顶栏下再裁取颜色区域。独立测试长名称遵守现有长度上限,测试数据创建后立即记录ID,以便后续失败也可精确清理。
|
||||
|
||||
Reference in New Issue
Block a user