ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

aily Blockly E2E测试体系揭秘:Playwright+Electron自动化测试与AI执行手册完整设计指南

aily Blockly E2E测试体系揭秘:Playwright+Electron自动化测试与AI执行手册完整设计指南 aily Blockly E2E测试体系揭秘PlaywrightElectron自动化测试与AI执行手册完整设计指南【免费下载链接】aily-blocklyAI IDE for hardware development, support Arduino, MicroPython, ESP32, STM32, RP2040, Nrf5x...项目地址: https://gitcode.com/gh_mirrors/ai/aily-blocklyaily Blockly是一款面向硬件开发的 AI IDE支持 Arduino、ESP32、STM32、RP2040、nRF5x 等开发板。它的 E2E 测试体系基于Playwright 的_electronAPI直接启动 Electron 桌面应用对生产构建产物做真实回归并配套一份专为 AI 编码代理设计的执行手册AI Runbook让自动化测试既能跑得起来也能说得清楚。一、为什么桌面应用的 E2E 测试很难做普通 Web 应用用 Playwright 测浏览器就行但 aily Blockly 是一个Electron 桌面应用还牵扯编译工具链、开发板包、SDK 安装等重型操作。常见痛点有三个产物失真开发环境dev server能跑不代表生产打包产物能跑进程难管每个用例都要真实启动一个 Electron 实例还有编译、终端等子进程要清理批量测试成本高验证所有开发板 项目广场全部项目动辄几小时失败后从哪继续aily Blockly 的方案可以概括为一句话用生产路径跑测试、用断点扛长流程、用 AI 手册管执行纪律。二、工作原理三步启动真实的生产应用整个 E2E 体系的核心配置在 playwright.config.ts关键逻辑分三步1. 全局构建每次都用最新代码全局设置文件e2e/global-setup.ts会在测试启动前执行ng build --base-href ./然后把 Angular 产物从dist/aily-blockly/browser暂存到项目根目录的renderer/。这正是electron-builder打包时的映射关系browser→renderer每次运行都重新构建不复用旧产物确保测试针对的是当前源码。2. 启动夹具像用户一样打开应用启动夹具e2e/fixtures/electron-app.ts用 Playwright 的_electron.launch以项目根为工作目录启动 Electron 主进程electron/main.js。主进程走非--serve分支通过loadFile(renderer/index.html)加载生产渲染层——无需完整打包安装却跑的是真实生产路径。夹具还处理了三个工程细节每个测试使用独立的临时--user-data-dir隔离用户配置不污染真实数据应用会预缓冲若干about:blank子窗口夹具通过检测app-main-window标签精确定位真正的主窗口关闭应用时优先调用app.quit()走优雅退出让编译、终端等子进程完成清理超时才强制杀进程树。3. 测试策略串行 失败留痕由于每个用例都真实启动 Electron配置里设置workers: 1串行执行避免多实例争抢窗口与资源失败时自动保留trace、截图、视频retain-on-failure方便事后复盘。三、测试套件从冒烟到全开发板编译测试用例统一放在e2e/tests/目录按覆盖范围分为三档完整清单见e2e/README.md档位代表用例覆盖内容✅ 默认运行smoke.spec.ts、guide.spec.ts、tools.spec.ts、aily-chat.spec.ts启动、主窗口、指南页、串口监视器/终端、AI 聊天离线 UI✅ 默认运行compile-diagnostic.spec.ts、error-decision.spec.ts、full-flow-checkpoint.spec.ts编译器根因诊断、错误决策、断点续跑等辅助逻辑回归⏭️ 需环境变量blockly-editor.spec.ts、compile.spec.ts、full-flow.spec.ts打开已有项目、真实编译、单/全开发板与项目广场全流程其中full-flow.spec.ts是全流程核心指定开发板后自动完成选板 → 新建项目 → 安装依赖 → 冷编译 → 热编译的完整链路第二板还会额外验证 QEMU/GDB 块级调试闭环simulator-debug.spec.ts。常用运行入口# 完整回归重新构建生产渲染层后运行 npm run test:e2e # 只跑某个用例文件 npm run test:e2e -- smoke.spec.ts # 有界面调试 / 打开 HTML 报告 npm run test:e2e:headed npm run test:e2e:report所有入口都通过scripts/run-e2e.mjs转发给 Playwright CLI并自动判断是否为交互终端TTY来决定错误提示行为。四、断点续跑让几小时的批量测试可以中断后继续全流程测试指定开发板 / 所有开发板 / 项目广场耗时可能长达数小时e2e/full-flow-checkpoint.ts实现了断点机制待处理条目持久化到e2e/.artifacts/full-flow-checkpoints/下的模式文件如all-boards.json成功项自动移除失败项保留再次执行相同命令时自动从剩余条目继续删除对应 checkpoint 文件即可从头开始交互终端下遇错会标红提示输入c视为已处理并继续输入a中止并保留断点设置AILY_E2E_STOP_ON_ERROR0则无人值守跑完再统一汇总项目广场支持可复现抽样SAMPLE_RATESAMPLE_SEED例如 builder 验证时随机抽取 50% 项目相同 seed 保证续跑时选择同一批项目。五、AI 执行手册把怎么测写成机器可执行的纪律这套体系最有特色的部分是e2e/AI-RUNBOOK.md——一份面向 AI 编码代理的执行手册。它不按测试文件组织而是按操作类型组织规定了 AI 在什么场景下必须跑哪些测试、通过标准是什么、什么不能跳过操作类型场景必测内容OP-UI-CHANGE普通 UI/路由改动冒烟 受影响页面用例合并前跑默认全集OP-BUILDER测试编译工具 aily-builder辅助逻辑回归 代表板冷/热两轮编译 项目广场 50% 抽样OP-RELEASE发布前验收默认 E2E 冷环境 builder 全开发板 项目广场全量OP-FAILURE-RETRY失败定位原命令断点续跑 报告分析禁止弱化断言凑通过手册还定义了AI 错误归因与自动跳过规则项目广场中的失败必须先归入builder/project/environment-or-unknown三类只有凭证据确认是项目自身问题的条目才允许加入跳过列表SKIP_PROJECT_IDSbuilder 或环境问题一律不得跳过。测试完成后AI 必须按固定的 YAML 结构汇报版本、命令、退出码、跳过项与覆盖缺口release_decision只有pass或blocked不允许基本通过这种模糊结论。六、这套设计对普通开发者的启示 即使你不在维护 aily Blockly这套 E2E 体系也提供了桌面应用自动化测试的完整参考清单测生产路径而不是开发环境——用打包同款产物启动应用才能发现真实问题夹具隔离一切状态——临时用户数据目录 优雅退出兜底强杀测试之间互不污染长流程必须可断点——批量验证开发板/项目时中断续跑能把数小时的重跑成本降到失败点之后给 AI 一份带纪律的手册——明确必测/不能证明/汇报格式AI 代理才能可靠地承担回归与发布验收职责。说明当前 E2E 未覆盖上传烧录流程因为它需要真实外设不便在 CI 稳定运行发布前该项由人工验收补充详见e2e/AI-RUNBOOK.md的覆盖边界章节。想动手体验只需克隆仓库、执行npm ci安装依赖后在项目根目录运行npm run test:e2e第一次跑完再看npm run test:e2e:report的 HTML 报告你就能完整感受这套 Playwright Electron AI 执行手册的组合拳。【免费下载链接】aily-blocklyAI IDE for hardware development, support Arduino, MicroPython, ESP32, STM32, RP2040, Nrf5x...项目地址: https://gitcode.com/gh_mirrors/ai/aily-blockly创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表