Maestro 移动端 E2E 测试完整指南:用 YAML 跑通自动化
【免费下载链接】MaestroPainless E2E Automation for Mobile and Web项目地址: https://gitcode.com/GitHub_Trending/ma/Maestro
每次发版前,你都要手工点几十遍同样的路径,只为确认"上次改的那个按钮没把登录流程弄坏"。UI 元素坐标一变脚本就崩,测试框架还得先编译才能跑——回归测试的负担,大多压在了这些环节上。Maestro 就是来解决这件事的:它是一个开源的 UI 自动化测试框架,让你用人类可读的 YAML 写 Android、iOS 和 Web 的端到端测试,写完即跑,无需编译。
三步跑通你的第一个测试
先别啃文档,用 5 分钟把流程跑起来。
前提只有一个:系统装有 Java 17 或更高版本。安装命令一条:
curl -fsSL "https://get.maestro.mobile.dev" | bashmacOS、Linux、Windows(WSL)都适用。装完后,仓库里现成有一个最短的 Web 示例,你可以直接读它学习写法,见 e2e/workspaces/web/simple.yaml。一个典型的流程长这样:
- launchApp - tapOn: "Login" - assertVisible: "Products"三行:启动应用、点按钮、断言页面出现预期内容。这就是一个完整的端到端用例。
它替你在哪三件事上省了力
等待,交给框架。动态 UI 是移动端测试里 flaky 的主要来源。Maestro 内置自动等待与抗抖动机制,assertVisible这类命令会在元素就绪后继续执行,你不再需要满屏的手动sleep()。场景:列表数据从网络加载,快设备 200 毫秒出内容,慢设备要 3 秒,同一条断言在两边都能过。
一次编写,三端运行。同一套流程语法覆盖 Android 模拟器、iOS 模拟器和浏览器,React Native、Flutter、混合应用也在支持范围内。场景:一个登录回归用例,Android、iOS、Web 各跑一遍,不用维护三套脚本。
解释执行,改完即测。流程文件是解释执行的,不存在编译步骤,改一行 YAML 立刻重跑。场景:断言文案改错了,保存后 10 秒内看到新结果,而不是等一轮构建。
示例、配方与文档:按你的深度分层找
首次接触
- e2e/workspaces/web/simple.yaml:最短的完整示例,从启动应用到断言可见元素
- e2e/workspaces/simple_web_view/webview.yaml:WebView 场景的最小流程
- 在本地跑
maestro download-samples命令,可以拉下一套带示例 App 的 workspace(对应 e2e/workspaces/wikipedia/ 目录),不用为自家应用写任何用例就能体验
深入使用
- e2e/workspaces/wikipedia/android-flow.yaml:真实的第三方 App 用例,含跨平台变体(android / ios 两套流程)
- e2e/workspaces/wikipedia/subflows/:子流程拆分与平台差异处理的实际写法
- e2e/README.md:了解整个 e2e 目录如何组织、如何本地复现
进阶探索
- maestro-cli/src/test/mcp/:MCP 相关工具测试与评估用例
- e2e/cli/test-cli.sh:CLI 自身的端到端脚本,想读"框架怎么测自己"从这里入手
看不见的部分:可视化 IDE 与 AI 能力
命令行之外,Maestro 还有两条扩展路线值得了解。
Maestro Studio:图形化测试 IDE。它是独立的桌面应用(非开源,源码不在本仓库),可以下载 macOS、Windows、Linux 原生版本。核心价值是两个:可视化流程构建器,让你录制交互、检查元素后直接生成流程;不用终端就能设计并执行测试。对刚接手项目的人来说,它是读代码最快的"活文档"。
maestro-ai:AI 缺陷识别。maestro-ai/ 模块把大模型接入测试链路,可以拿一张截图让 AI 判断界面是否存在缺陷,并支持查看提示词与原始 LLM 响应。它同时是一个可执行的演示应用:设置MAESTRO_CLI_AI_KEY环境变量(OpenAI 或 Anthropic 密钥均可),构建后对截图目录批量运行即可,不同模型通过命令行参数切换。
遇到问题怎么办,怎么提交第一个贡献
获取帮助。项目维护公开的 Slack 社区频道,官方文档站覆盖安装、写流程、构建被测应用等主题,README 中给出了文档站入口链接。查不到答案时,社区频道是最直接的求助路径。
第一个贡献。读 CONTRIBUTING.md,重点看贡献分类:简单修复(bug、错别字、清理)可以直接提 PR,合入概率高;功能类或大型重构则建议先开 issue 讨论。找入门任务,去 issue 列表里筛good first issue标签。团队的承诺是所有公开 PR 尽量在一周内完成评审,合并后约一周随下一个版本发布。改 CLI 的话,用./gradlew :maestro-cli:installDist构建本地版本自测,别覆盖全局安装的maestro。
从这个仓库 clone 一份代码开始:https://gitcode.com/GitHub_Trending/ma/maestro,跑通simple.yaml,你就走完了从 0 到 1 的全部路径。
【免费下载链接】MaestroPainless E2E Automation for Mobile and Web项目地址: https://gitcode.com/GitHub_Trending/ma/Maestro
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考