使用 Maestro 在 EAS Workflows 上运行 E2E 测试
编辑页面
了解如何使用 Maestro 在 EAS Workflows 上设置并运行 E2E 测试。
For the complete documentation index, see llms.txt. Use this Use this file to discover all available pages.
在本指南中,你将学习如何使用 Maestro 在 EAS Workflows 上运行端到端(E2E)测试。该示例演示了如何使用 默认 Expo 模板 配置 E2E 测试工作流。对于你自己的应用,你需要调整这些 flow,以匹配你的应用 UI。
1
设置你的项目
如果你还没有这样做,请创建一个新项目并将其与 EAS 同步。
按照 EAS Workflows 入门指南 创建一个新项目并将其与 EAS 同步。然后,配置你的项目 并关联你的 GitHub 仓库。
2
添加示例 Maestro 测试用例
以下是使用默认 Expo 模板创建的应用 UI 的样子:
让我们为示例应用创建两个简单的 Maestro flow。首先,在项目根目录下创建一个名为 .maestro 的目录。这个目录将包含你要配置的 flow,并且应与 eas.json 处于同一级别。
在其中创建一个名为 home.yml 的新文件。这个 flow 将启动应用,并断言主屏幕上可见文本 "Welcome!"。
appId: dev.expo.eastestsexample # 这是一个示例应用 ID。请将其替换为你的应用 ID。 --- - launchApp - assertVisible: 'Welcome!'
接下来,创建一个名为 expand_test.yml 的新 flow。这个 flow 将打开示例应用中的 "Explore" 屏幕,点击 "File-based routing" 可折叠项,并断言屏幕上可见文本 "This app has two screens."。
appId: dev.expo.eastestsexample # 这是一个示例应用 ID。请将其替换为你的应用 ID。 --- - launchApp - tapOn: 'Explore.*' - tapOn: '.*File-based routing' - assertVisible: 'This app has two screens.*'
3
在本地运行 Maestro 测试(可选)
要在本地运行 Maestro 测试,请按照 安装 Maestro 中的说明安装 Maestro CLI。
将你的应用安装到本地 Android 模拟器或 iOS 模拟器。打开终端,进入 Maestro 目录,并运行以下命令,使用 Maestro CLI 启动测试:
- maestro test .maestro/expand_test.yml- maestro test .maestro/home.yml下面的视频展示了 .maestro/expand_test.yml flow 成功运行的过程:
4
E2E 测试的构建配置
E2E 测试需要一个已构建的应用文件:Android 使用 .apk,iOS 使用 .app — EAS 可以将其安装到模拟器上并进行测试。
在你的 eas.json 文件中,为 E2E 测试创建一个构建配置。如果该文件不存在,请运行 eas build:configure 来生成它。
{ "build": { "e2e-test": { "withoutCredentials": true, "ios": { "simulator": true }, "android": { "buildType": "apk" } } } }
上述构建配置会为 Android 生成 .apk,并为 iOS 生成 .app。该工作流使用此配置在 EAS 服务器上构建应用。
5
创建一个 E2E 测试工作流
在项目根目录下,创建一个 .eas/workflows 目录。然后,为你的 E2E 测试工作流添加一个 YAML 文件,例如 .eas/workflows/e2e-test-android.yml。
name: e2e-test-android on: pull_request: branches: ['*'] # 在每个 pull request 上运行 E2E 测试工作流。 jobs: build_android_for_e2e: type: build params: platform: android profile: e2e-test # 你的 E2E 测试用 eas build 配置 maestro_test: needs: [build_android_for_e2e] type: maestro params: build_id: ${{ needs.build_android_for_e2e.outputs.build_id }} flow_path: ['.maestro/home.yml', '.maestro/expand_test.yml']
此工作流使用上一步中的 e2e-test 构建配置为 Android 构建一个 .apk。然后在构建好的 APK 上运行 .maestro/home.yml flow。
下面是 iOS 的同样测试工作流示例:
name: e2e-test-ios on: pull_request: branches: ['*'] jobs: build_ios_for_e2e: type: build params: platform: ios profile: e2e-test # 你的 E2E 测试用 eas build 配置 maestro_test: needs: [build_ios_for_e2e] type: maestro params: build_id: ${{ needs.build_ios_for_e2e.outputs.build_id }} flow_path: ['.maestro/home.yml', '.maestro/expand_test.yml']
了解更多关于 EAS Workflows 语法 的信息。
6
运行 E2E 测试工作流
你可以通过两种方式运行 E2E 测试工作流:
- 使用 EAS CLI 手动运行
- npx eas-cli@latest workflow:run .eas/workflows/e2e-test-android.yml- 在你打开 pull request 时自动运行
该工作流使用 pull_request 触发器,在有人向你的仓库打开 pull request 时自动运行。了解更多关于 EAS Workflows 触发器 的信息。
工作流启动后,你可以在 EAS 仪表板中跟踪进度并查看结果。下面是一个已完成工作流运行的截图:
更多
了解更多关于 EAS Workflows 语法的信息。
了解更多关于 EAS Workflows 示例 CI/CD 工作流的信息。
了解更多关于 Maestro flows 以及如何编写它们。