SuperAPI AI 工具集

testing-tauri-apps

测试与质量

查看项目

更新于 10-15 15:45

技能介绍

用途

该技能用于指导开发者测试 Tauri v2 应用,覆盖从单元/集成测试到端到端测试以及 CI 集成的完整测试策略。

主要能力

  1. 单元/集成测试(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() 防止状态泄漏。
  2. 端到端测试(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 安装驱动。
  3. WebdriverIO 配置与示例:提供项目结构、package.json、wdio.conf.js 配置,以及元素查找、点击、等待和断言的测试示例。包括 onPrepare 构建应用、beforeSession 启动 tauri-driver、afterSession 清理等生命周期钩子。

  4. Selenium 配置与示例:提供依赖(chai、mocha、selenium-webdriver)以及使用 Builder 连接 127.0.0.1:4444、以 browserName: 'wry' 和 tauri:options 指定应用路径的完整测试代码。

  5. CI 集成(GitHub Actions):提供工作流文件示例,矩阵包含 ubuntu-latest 与 windows-latest,包含安装 Linux 依赖、Rust 工具链、tauri-driver、Windows WebDriver、Node 依赖、构建应用,并在 Linux 使用 xvfb-run 运行测试。

  6. 最佳实践:

    • Mock 测试:始终在 afterEach 调用 clearMocks();使用 spy 验证 IPC 调用;在正确层级 mock。
    • WebDriver 测试:开发时使用 debug 构建;设置合理超时;显式等待元素;保持测试独立。
    • CI:Linux 使用 xvfb-run 无头测试;Windows 匹配 Edge Driver 版本;先构建应用再运行测试;先跑单元测试再跑 e2e。
  7. 问题排查: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 进行无头测试。其它未在资料中说明的限制暂未提供。