双端回归从「一台台串行」压到「三台并行」:Midscene.js 多设备协同测试实战
【免费下载链接】midsceneGUI Agent for E2E Testing项目地址: https://gitcode.com/GitHub_Trending/mid/midscene
同一套下单用例要在 Android 和 iOS 上各跑一遍,串行执行、来回切设备,花在人工核对上的时间不少。Midscene.js 把自动化步骤写成自然语言指令("点击登录按钮"),由 AI 模型看屏幕决定怎么操作;它的 CLI 还能把一批 YAML 用例文件分发到多台设备并行执行,一次回归覆盖两个平台。
30 秒上手:最小可运行示例
先安装@midscene/cli和对应平台的@midscene/android或@midscene/ios,确认连接:Android 设备要出现在adb devices列表里;iOS 需要自动化服务 WebDriverAgent(WDA)在运行。然后写第一个用例文件:
android: deviceId: emulator-5554 launch: https://www.ebay.com tasks: - name: search for headphones flow: - ai: 在搜索框输入 Headphones 并点击搜索 - aiAssert: 页面上出现 Filter 按钮用midscene --files ./search-headphone.yaml执行。ai行是自然语言指令,模型看截图后执行;aiAssert是让模型判断条件是否成立,作为断言用。
它是怎么跑的
- 用例文件:一个文件两部分——顶部
android:或ios:块(指定 deviceId 和启动页),下面tasks列表(每条自然语言步骤)。 - 批量文件:一个索引 YAML 声明
files(支持*.yaml这类 glob 模式)、concurrent和continueOnError,由批量执行器实现按这些参数调度。 - 并发:
concurrent: n表示同时跑 n 个文件,默认 1 即串行;每个文件各自写 deviceId,同一批就能分到不同设备、不同平台。 - 结果:跑完 CLI 会打印成功/失败摘要,每个用例还生成一份 HTML 报告,可回看每步截图和模型判断。
三个典型场景
兼容性回归:同一用例、多台设备。每台设备写一个文件,都放进批量文件的files:
concurrent: 5 continueOnError: true files: - "./android/*.yaml" - "./ios/*.yaml"continueOnError: true保证一台设备失败不会终止整批,摘要里逐条列出失败文件,方便只重跑失败项。
批量用例执行:用例之间互不依赖时,把并发拉满。20 条回归串行跑 40 分钟,concurrent: 4时约 12 分钟跑完(取决于单条时长);偶发不稳定的用例配retry: 2,失败自动重跑。
跨设备协作:一台 Android 设备跑"加购物车"用例,一台 iOS 设备跑"核对购物车状态",两个文件各写各的 deviceId,放进同一批执行。需要传递数据时,前一个用例用aiQuery加output把结果写进 JSON 文件,后续流程再取用。多设备批量的现成脚本可以参考 multi_yaml_android_scripts。
关键配置速查
| 参数 | 默认 | 作用 | 什么时候该调 |
|---|---|---|---|
concurrent | 1 | 并行执行的用例文件数 | 多台设备时设为设备数;用例有先后依赖时保持 1 |
continueOnError | false | 某文件失败后是否继续 | 夜间回归设 true,避免一个失败拖住整批 |
retry | 0 | 失败文件额外重跑次数 | 用例偶发抖动时设 1~2 |
setup | 无 | 主用例前执行的准备脚本 | 登录一次后让所有用例复用,省去逐条登录 |
shareBrowserContext | false | 文件间共享浏览器上下文 | 仅 Web 目标有效,Android/iOS 场景不涉及 |
容易踩的坑
adb devices看不到设备→ 未开 USB 调试,或电脑没被授权 → 打开开发者选项和 USB 调试,在设备弹窗里点"始终允许"。- iOS 用例卡在启动→ WDA 没跑起来,或
wdaPort没配对 → 先确认 WDA 正常,再在ios块里指定wdaPort。 - 脚本跑到了别的设备上→ 接了多台设备但 YAML 没写 deviceId,默认取第一台 → 显式写
deviceId,用adb devices核对。 - 指令执行了但结果不对→ 描述太笼统,模型点错元素 → 指令里引用屏幕上可辨认的特征(按钮文字、位置),关键步骤后加一条
aiAssert。 - 并发一高就批量超时→ 多个用例挤同一个模型 API 额度或设备网络 → 调低
concurrent,或给不同批次配置独立模型环境。
先拿 1 台 Android + 1 台 iOS 各跑通一个最小用例,再按上面的批量文件模板扩到整套回归。🚀
【免费下载链接】midsceneGUI Agent for E2E Testing项目地址: https://gitcode.com/GitHub_Trending/mid/midscene
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考