E2E 测试
桌面 E2E 测试使用 WebDriverIO (WDIO) 通过两个自动化后端驱动 Tauri 应用:
| 平台 | 驱动 | 端口 | 应用格式 | 选择器 |
|---|---|---|---|---|
| Linux / CEF | tauri-driver | 4444 | 调试二进制 | CSS / DOM |
| macOS / Appium | Appium Mac2 | 4723 | .app 包 | XPath / 无障碍 |
快速开始
macOS / Appium
# 安装 Appium + Mac2 驱动(一次性,需要 Node 24+)
npm install -g appium
appium driver install mac2
# 构建 .app 包
pnpm --filter openhuman-app test:e2e:build
# 运行所有流
pnpm --filter openhuman-app test:e2e:all:flows
Docker on macOS
# 构建 + 运行所有 E2E 流
docker compose -f e2e/docker-compose.yml run --rm e2e
# 运行单个 spec
docker compose -f e2e/docker-compose.yml run --rm e2e \
bash app/scripts/e2e-run-spec.sh test/e2e/specs/smoke.spec.ts smoke
环境变量
| 变量 | 默认值 | 说明 |
|---|---|---|
TAURI_DRIVER_PORT | 4444 | tauri-driver WebDriver 端口 |
APPIUM_PORT | 4723 | Appium 服务器端口 |
E2E_MOCK_PORT | 18473 | Mock 后端服务器端口 |
OPENHUMAN_WORKSPACE | (temp dir) | 应用工作区目录 |
元素 helpers
app/test/e2e/helpers/element-helpers.ts 提供统一 API:
| Helper | 说明 |
|---|---|
waitForText(text) | 等待文本出现 |
waitForButton(text) | 等待按钮出现 |
clickNativeButton(text) | 点击原生按钮 |
clickToggle() | 点击开关 |
waitForWebView() | 等待 WebView 就绪 |
稳定测试 ID
使用稳定的 data-testid hook:
cron-jobs-panel,cron-refreshsettings-nav-<routeId>onboarding-next-button
CI 工作流
Push / PR 检查
默认 test.yml 工作流运行前端单元测试和 Rust 检查。Linux tauri-driver E2E 作业因 WebKitWebDriver 无法驱动 CEF 支持的 WebView 而被禁用。
macOS / Appium
macOS/Appium 是当前 CEF 桌面应用的支持自动化后端:
- 安装 Appium + Mac2 驱动
- 构建
.app包 - 运行所有 E2E 流
故障排除
Linux: "WebView not ready" 超时
对于默认 CEF 运行时,这意味着不支持的 Linux tauri-driver 路径正尝试通过 WebKitWebDriver 驱动 CEF 支持的 WebView。使用 macOS/Appium。
macOS: Deep links 在 tauri dev 中不工作
Deep links 需要 .app 包。使用 pnpm tauri build --debug --bundles app。
代理可观察工件流
bash app/scripts/e2e-agent-review.sh
工件位于 app/test/e2e/artifacts/<timestamp>-agent-review/。