news 2026/8/22 14:05:32

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
aily Blockly E2E测试体系揭秘:Playwright+Electron自动化测试与AI执行手册完整设计指南

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

【免费下载链接】aily-blocklyAI IDE for hardware development, support Arduino, MicroPython, ESP32, STM32, RP2040, Nrf5x...项目地址: https://gitcode.com/gh_mirrors/ai/aily-blockly

aily 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打包时的映射关系(browserrenderer),每次运行都重新构建,不复用旧产物,确保测试针对的是当前源码。

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.tsguide.spec.tstools.spec.tsaily-chat.spec.ts启动、主窗口、指南页、串口监视器/终端、AI 聊天离线 UI
✅ 默认运行compile-diagnostic.spec.tserror-decision.spec.tsfull-flow-checkpoint.spec.ts编译器根因诊断、错误决策、断点续跑等辅助逻辑回归
⏭️ 需环境变量blockly-editor.spec.tscompile.spec.tsfull-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_ERROR=0则无人值守跑完再统一汇总;
  • 项目广场支持可复现抽样SAMPLE_RATE+SAMPLE_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_IDS),builder 或环境问题一律不得跳过。测试完成后,AI 必须按固定的 YAML 结构汇报版本、命令、退出码、跳过项与覆盖缺口,release_decision只有passblocked不允许"基本通过"这种模糊结论

六、这套设计对普通开发者的启示 🚀

即使你不在维护 aily Blockly,这套 E2E 体系也提供了桌面应用自动化测试的完整参考清单:

  1. 测生产路径,而不是开发环境——用打包同款产物启动应用,才能发现真实问题;
  2. 夹具隔离一切状态——临时用户数据目录 + 优雅退出兜底强杀,测试之间互不污染;
  3. 长流程必须可断点——批量验证开发板/项目时,中断续跑能把数小时的重跑成本降到失败点之后;
  4. 给 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),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/22 14:05:18

深入PCSX2模拟器架构:EE/IOP/GS/SPU2硬件虚拟化原理全解析

深入PCSX2模拟器架构&#xff1a;EE/IOP/GS/SPU2硬件虚拟化原理全解析 【免费下载链接】pcsx2 PCSX2 - The Playstation 2 Emulator 项目地址: https://gitcode.com/gh_mirrors/pcsx24/pcsx2 PCSX2 是一款免费开源的 PS2 模拟器&#xff08;PlayStation 2 Emulator&…

作者头像 李华
网站建设 2026/8/22 14:02:18

毕业生福利!2026年高口碑AI论文网站推荐,助力高效写作

还在为写论文发愁&#xff1f;实用AI论文写作工具来了&#xff01; 还在为写期刊论文、毕业论文或者职称论文发愁吗&#xff1f;用传统方法写论文的时候&#xff0c;要查好多资料&#xff0c;找文献就像大海捞针一样&#xff0c;格式要求复杂得让人头疼&#xff0c;还得反复修…

作者头像 李华
网站建设 2026/8/22 13:54:42

PalEdit 存档编辑指南:从备份到改好一只帕鲁只要 5 步

PalEdit 存档编辑指南&#xff1a;从备份到改好一只帕鲁只要 5 步 【免费下载链接】PalEdit A simple tool for Editing and Generating Pals within PalWorld Saves 项目地址: https://gitcode.com/gh_mirrors/pa/PalEdit 在 PalWorld 里&#xff0c;想收的帕鲁等级、技…

作者头像 李华