# 减少 Expo 应用中的不稳定 E2E 测试

不稳定 E2E 摧毁信心；重试不能替代确定性环境。

Published: 2026-10-20

## 不稳定是产品风险

动画与网络竞态是常见根因。

flake 率应是发布指标。

把测试套件当作产品基础设施：flake 超阈值时，没有 owner 与根因工单就暂停新增 spec。

## 等契约而非计时

固定测试用户与已知后端状态。

用可见性等待而非 sleep。

失败时录一次视频与网络 HAR，而非每次重试——产物应解释 flake，而非靠运气复现。

- 各 spec 之间确定性重置应用状态与服务端 fixture
- 在边界 stub 网络；动画上避免 sleep
- 将不稳定测试隔离并指定 owner 与 SLA，不要永久静音
- 每个 PR 跑子集，夜间在真机跑全矩阵

## 隔离纪律

不要对没有 owner 的不稳定测试无限重试，否则 CI 只是在纵容团队忽略红色构建。

维护带 SLA 的隔离列表，并把每条 flaky spec 绑定到具体负责人。

与 release 经理每周审查隔离；超 SLA 项应阻断发布列车或删除 spec。

## 分层 CI

每个 PR 跑快速冒烟套件；夜间或发布前在完整真机矩阵上跑全量 E2E。

模拟器能抓逻辑问题，真机才能暴露键盘、推送权限与原生模块边界。

将 flake 率与构建时间一并公布，让产品感知移动端 CI 健康的代价。

## 让可靠性可见

本 sprint 选一个 flake 指标、一条隔离 SLA 和一层真机覆盖——问 release 经理信心是否真的提升。

Staff 级 ownership 把 E2E 从抽奖变成团队每周发布 Expo 时信任的工具。
