@e2e-dev/eas

中文文档
0.3.4发布于 2026/11/13Apache-2.0TypeScriptES Module零依赖构建来源已验证近 30 天下载 4.4万

Expo Simulators for e2e: run mobile targets on Expo's hosted iOS simulators and Android emulators

原始使用文档
文档目录3 节
  1. Install
  2. Usage
  3. License

@e2e-dev/eas

Expo Simulators for e2e: mobile({ device: expoSimulators() }) runs a mobile target on Expo's hosted iOS simulators and Android emulators.

Install

npm install --save-dev @e2e-dev/eas

Usage

import type { E2EConfig } from 'e2e';
import { mobile } from '@e2e-dev/mobile';
import { expoSimulators } from '@e2e-dev/eas';

export default {
  targets: [
    {
      engine: mobile({
        platform: 'ios',
        device: expoSimulators({ buildId: process.env.E2E_IOS_BUILD_ID }),
        videoTouches: false,
      }),
      app: { bundleId: 'com.example.app' },
    },
  ],
  workers: 2,
} satisfies E2EConfig;

The sessions belong to the Expo project the app config beside e2e.config.ts links (extra.eas.projectId, from app.json or as expo config evaluates app.config.ts); projectId names another. It authenticates with EXPO_TOKEN from the run's environment, else with the session eas login stored, as eas-cli does. Each worker slot gets its own Expo Simulators session, started when the run starts and stopped when it ends, and the engine drives it through the agent-device daemon Expo runs beside it. Tests start once every slot has a simulator.

  • buildId (or applicationArchiveUrl) has Expo install the app; without it, device.installApp() uploads the target's app.appPath through the daemon. E2E_IOS_BUILD_ID above is a variable you set to the build's ID. Don't read EAS_BUILD_ID: in an Expo Workflows job, Expo sets it to the ID of the running job. In a workflow job, set the variable from needs.<build job>.outputs.build_id.
  • device picks the simulator.
  • maxIdleTimeMinutes (default 10) is how long Expo keeps a session no command reached, the backstop for a run that died.
  • maxDurationMinutes caps a session's life (40 minutes by default, 115 on a high-priority plan), so a run must fit in it.
  • agentDeviceVersion is the agent-device Expo starts, by default the one @e2e-dev/mobile pins.
  • tags are added to the run's own.

Set the engine's videoTouches: false for video: drawing touches into a recording on an Expo iOS simulator outlasts the attempt's cleanup. The package calls Expo's API with fetch, so there is no SDK to install.

Full documentation lives at e2e.com/docs/integrations/eas.

License

Apache-2.0

版本与发布记录

@e2e-dev/eas 共发布 42 个版本,首次发布于 2026/10/01;过去 12 个月发布了 42 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
0.3.4latest2026/11/13今天
0.3.4-nightly-20261113123338nightly2026/11/13今天
0.3.4-nightly-202611100302172026/11/103 天前
0.3.4-nightly-202611090302102026/11/094 天前
0.3.4-nightly-202611080302292026/11/085 天前
0.3.4-nightly-202611070302142026/11/076 天前

关于 @e2e-dev/eas 的常见问题

@e2e-dev/eas 是什么?

Expo Simulators for e2e: run mobile targets on Expo's hosted iOS simulators and Android emulators

如何安装 @e2e-dev/eas?

在项目目录运行 npm install @e2e-dev/eas,或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖:e2e(>=0.15.0 <1)、@e2e-dev/mobile(>=0.8.0 <1)。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖,Yarn 需要手动安装。

@e2e-dev/eas 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@e2e-dev/eas 支持 ESM 还是 CommonJS?

以 ES Module 形式发布,推荐使用 import 引入。在 CommonJS 项目中,Node.js 20.19+ / 22.12+ 可以直接 require() 不含顶层 await 的 ES Module,更早的版本需要改用动态 import()。

@e2e-dev/eas 需要什么版本的 Node.js?

package.json 的 engines 字段要求 Node.js ^22.22.3 || >=24.8.0。版本不符时 npm 默认只给出警告,开启 engine-strict 后会拒绝安装。

@e2e-dev/eas 可以商用吗?

@e2e-dev/eas 使用 Apache-2.0 许可。宽松许可:允许商业使用、修改和再分发,并附带明确的专利授权;分发时需保留许可与 NOTICE 文件,修改过的文件要注明改动。以上为概括,不构成法律意见,请以许可原文为准。

@e2e-dev/eas 的下载量有多少?

根据 npm 官方下载统计,@e2e-dev/eas 在 2026/10/13 – 2026/11/11 这 30 天内被下载 43,784 次,日均约 1,459 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@e2e-dev/eas 还在维护吗?

最新版本 0.3.4 发布于 2026/11/13(今天);至今共发布 42 个版本,其中过去 12 个月发布了 42 个;首次发布于 2026/10/01。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。