用途
该技能用于指导开发者测试 Tauri v2 应用,覆盖从单元/集成测试到端到端测试以及 CI 集成的完整测试策略。
主要能力
-
单元/集成测试(Mock Runtime):无需执行原生 webview 库,通过
@tauri-apps/api/mocks模块模拟 Tauri 环境。- 模拟 IPC 命令:使用
mockIPC拦截invoke调用并返回预期结果。 - 验证调用:使用
vi.spyOn(window.__TAURI_INTERNALS__, 'invoke')检查命令是否被调用。 - 模拟 Sidecar 与 Shell 命令:在
mockIPC中处理 execute 消息,通过事件回调发出 Stdout、Terminated 等事件。 - 模拟事件(v2.7.0+):
mockIPC(() => {}, { shouldMockEvents: true })配合listen/emit。 - 模拟窗口:
mockWindows('main', 'second', 'third'),首个参数为“当前”窗口。 - 清理:在
afterEach中调用clearMocks()防止状态泄漏。
- 模拟 IPC 命令:使用
-
端到端测试(WebDriver):通过
tauri-driver自动化 Tauri 应用。- 平台支持:Windows 完整支持(需 Microsoft Edge Driver);Linux 完整支持(需 WebKitWebDriver);macOS 无支持(WKWebView 缺少 WebDriver 工具)。
- 安装
tauri-driver:cargo install tauri-driver --locked。 - Linux 依赖:
sudo apt install webkit2gtk-driver xvfb,并用which WebKitWebDriver验证。 - Windows 需通过
msedgedriver-tool安装驱动。
-
WebdriverIO 配置与示例:提供项目结构、package.json、wdio.conf.js 配置,以及元素查找、点击、等待和断言的测试示例。包括
onPrepare构建应用、beforeSession启动 tauri-driver、afterSession清理等生命周期钩子。 -
Selenium 配置与示例:提供依赖(chai、mocha、selenium-webdriver)以及使用 Builder 连接 127.0.0.1:4444、以
browserName: 'wry'和tauri:options指定应用路径的完整测试代码。 -
CI 集成(GitHub Actions):提供工作流文件示例,矩阵包含 ubuntu-latest 与 windows-latest,包含安装 Linux 依赖、Rust 工具链、tauri-driver、Windows WebDriver、Node 依赖、构建应用,并在 Linux 使用
xvfb-run运行测试。 -
最佳实践:
- Mock 测试:始终在
afterEach调用clearMocks();使用 spy 验证 IPC 调用;在正确层级 mock。 - WebDriver 测试:开发时使用 debug 构建;设置合理超时;显式等待元素;保持测试独立。
- CI:Linux 使用
xvfb-run无头测试;Windows 匹配 Edge Driver 版本;先构建应用再运行测试;先跑单元测试再跑 e2e。
- Mock 测试:始终在
-
问题排查:WebDriver 连接超时、Mock 不生效、CI 失败等常见问题的检查与解决建议。
使用方式
按照资料中的步骤:先安装 mock 依赖(npm install -D vitest @tauri-apps/api),配置 Vitest(environment: 'jsdom',setupFiles 中设置 window.__TAURI_INTERNALS__),再依据示例编写单元测试;E2E 部分需安装 tauri-driver 与平台依赖,配置 WebdriverIO 或 Selenium,最后接入 CI。所有代码与命令均以资料原文为准。
适用场景
适用于正在开发 Tauri v2 桌面应用的团队或个人,希望在本地和 CI 中对前端逻辑、IPC 命令、多窗口行为以及整体应用进行自动化测试。
限制
macOS 平台不支持 WebDriver 端到端测试。事件 mock 需要 v2.7.0 及以上版本。Windows 需 Edge Driver 版本匹配,Linux 需 WebKitWebDriver 并配合 xvfb 进行无头测试。其它未在资料中说明的限制暂未提供。