恒美微站
首页
关于我们
建站服务
主题模板
案例展示
资讯中心
联系我们
e2e移动端CI指南:没有本地设备也能跑iOS与Android测试
首页
资讯中心
/
e2e移动端CI指南:没有本地设备也能跑iOS与Android测试
e2e移动端CI指南:没有本地设备也能跑iOS与Android测试
发布时间:2026/10/8 18:52:20
e2e移动端CI指南没有本地设备也能跑iOS与Android测试【免费下载链接】e2eNext generation e2e testing framework for web and mobile apps.项目地址: https://gitcode.com/GitHub_Trending/e2e6/e2ee2e 是一个开源的 AI 测试框架Open Source AI Testing Framework它的移动端引擎e2e-dev/mobile让 iOS 与 Android 的端到端测试摆脱了对本地设备的依赖不需要在开发机上常驻 Xcode 模拟器或 Android 模拟器一次npx e2e run就能把测试跑在云端模拟器或任何 CI 平台上。本文面向新手带你用最短的路径搭建e2e 移动端 CI实现 iOS 与 Android 测试在云端自动执行。为什么移动端 E2E 测试该进 CI传统移动端测试最大的痛点是设备绑定iOS只能在 macOS Xcode 上跑模拟器团队里不是人人都有 MacAndroid模拟器依赖 KVM 嵌套虚拟化很多云主机默认不支持本地跑一次测试构建、启动模拟器、安装应用往往要十几分钟阻塞开发节奏。e2e 的思路是移动端 CI 任务在任何服务上都只做四件事——为模拟器/仿真器构建应用、启动设备、安装构建产物、运行npx e2e run变的只是 CI 平台的语法。一个移动端 CI 任务的基础需求如下iOSAndroid机器macOSXcode 模拟器运行时Linux开启 KVM 嵌套虚拟化构建产物Release 模拟器.app无需签名Release.apk设备一个已启动的模拟器一个已启动的仿真器Node 版本24.8或 22.22.324.8或 22.22.3 两个平台都建议构建ReleaseReact Native / Expo 的 Debug 包会从 Metro 加载 JS而 CI 上没有 Metro 服务应用会打开在报错页面。配置层面用bundleId或包名把应用钉在 target 上即可详见 docs/mobile-ci.mdx。路线一云端模拟器跑测试零本地设备如果你连 CI 上的 Xcode 和 Android SDK 都不想碰e2e 提供了官方集成e2e-dev/eas通过easSimulators()从 EAS Simulators 租赁托管的 iOS 模拟器 / Android 仿真器运行开始自动创建、运行结束自动释放。在e2e.config.ts中只需替换deviceimport { easSimulators } from e2e-dev/eas; targets: [ { name: ios, engine: mobile({ platform: ios, device: easSimulators({ buildId }) }), app: { bundleId: com.example.app }, }, ]几个新手关心的问题摘自 docs/integrations/eas.mdx会话生命周期每个会话从请求到就绪约 3 分钟排队、启动、安装构建全部并行且不占测试计时时长上限普通套餐单会话最长 40 分钟高优先级 115 分钟更长的套件请拆分 workers 或拆 CI 任务应用安装EAS Build 产物可直接指定buildId由 EAS 在模拟器就绪前装好并行workers: 2会并行租 2 个云端设备但注意按量计费别开过多。这套集成包的源码在 packages/eas/它基于 packages/mobile/ 的DeviceProvider接口——任何能托管 agent-device 守护进程的设备云都能接入。路线二CI 平台上自建模拟器没有托管设备服务也没关系。e2e 官方支持GitHub Actions、EAS Workflows、Bitrise、Codemagic四大平台完整工作流配置都在 docs/mobile-ci.mdx 中可直接复制。以 GitHub Actions 为例流程是两个 job一个平台一个iOS job 跑在 macOS runner 上Android job 跑在开启 KVM 的 Linux runner 上iOS 用xcodebuild构建模拟器.appAndroid 用 Gradle 打出 Release APK启动模拟器/仿真器并安装应用iOS 用xcrun simctlAndroid 用adb install运行测试并上传产物# iOS npx e2e run --target ios --reporter list,junit # Android npx e2e run --target android --reporter list,junitAndroid 侧推荐reactivecircus/android-emulator-runneraction它会自动处理仿真器启动与收尾。⚠️ 注意托管 Mac 都是 Apple Silicon无法嵌套虚拟化所以 Android 仿真器不能开在 Mac 上——这就是一个平台一个 job的原因。移动端 CI 任务最佳实践清单以下经验在所有平台上通用照做可避坑来源docs/mobile-ci.mdx✅一个 job 只测一个平台--target ios配 Mac--target android配 Linux KVM✅固定 iOS 运行时版本按名字选模拟器如 iPhone 17会跟随 runner 镜像的默认 iOS 版本而 iOS 大版本之间可访问性树会变runner 镜像一更新就可能弄断定位断言。正确做法是指定命名运行时创建模拟器按 UDID 启动✅缓存~/.agent-deviceiOS 自动化 runner 首次使用会现场编译缓存这个目录能省下大量时间✅无论成功失败都上传.e2e/目录report.json和junit.xml告诉你什么失败了.e2e/artifacts/里的截图、屏幕转储和--video录像告诉你为什么失败✅提交回放缓存把 docs/cache.mdx 提到的 replay cache 提交进仓库agent.act步骤可在 CI 上无模型调用地回放缓存以 app 为键本地模拟器录的在 CI 模拟器上照样生效模型密钥只暴露给可信分支CI job 里跑的是 PR 代码密钥对测试代码和依赖可见只给可信分支的构建放行。CI 模式会改变什么当环境变量CI被设置时e2e 自动切换到 CI 默认值docs/ci.mdx配置本地CIretries01workers核心数一半1cache未显式设置时read-writeread-only.only允许拒绝ONLY_IN_CI本地可用CI1 npx e2e run提前复现这些默认值。CI 默认重试一次只在重试后才通过的测试会被标记为 flaky方便你找出需要排查的脆弱流程。失败后还可以用--last-failed只重跑未通过的测试。示例项目与延伸阅读本仓库自带了一个移动端 CI 的活教材apps/mobile-benchmark/一个 Expo 应用 完整 e2e 套件覆盖 Apple Pay、权限弹窗、虚拟化列表等刁钻移动端场景。它自己的确定性套件就在每个 PR 上按macOS 跑 iOS 模拟器 Linux 跑 Android 仿真器的方式执行配置见 apps/mobile-benchmark/e2e.config.tsexamples/with-expo/Expo 最小示例含 examples/with-expo/tests/agent.e2e.ts 移动端 agent 测试写法官方文档docs/mobile.mdx移动端引擎、docs/mobile-ci.mdxCI 平台配置、docs/integrations/eas.mdxEAS 托管模拟器。想要动手试试克隆仓库后打开apps/mobile-benchmark即可体验完整套件git clone https://gitcode.com/GitHub_Trending/e2e6/e2e小结e2e 移动端 CI 的核心价值在于一套测试代码多种执行环境——本地用真机调试、CI 用云端模拟器把关DeviceProvider抽象让你随时切换而不用改一行测试。从今天起你的 iOS 与 Android 测试再也不必等待那台唯一的 Mac 了。【免费下载链接】e2eNext generation e2e testing framework for web and mobile apps.项目地址: https://gitcode.com/GitHub_Trending/e2e6/e2e创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考