# Testing signals — tauri-apps/tauri

> Canonical page: https://codevetter.com/unpack/tauri/testing-signals

# Testing signals — tauri-apps/tauri

Scanned commit 745b9a48aeb6e7f48d70adf3d043e6203de5bac6 (2026-09-22). Generated by codevetter codevetter 1.12.0 on 2026-09-22.

Testing is layered: inline Rust unit tests behind `#[cfg(test)]` in core modules, a mock runtime (`tauri::test`, `test` feature) enabling headless App tests, insta snapshot tests for ACL resolution in crates/tests/acl, a real-binary CLI integration test, WebdriverIO e2e specs in packages/api-e2e that run against examples/api via tauri-driver, vitest tests for the JS CLI package, and bench apps for CI benchmarking. Coverage is strongest around ACL/config parsing and IPC request parsing; the wry runtime and bundler are largely exercised only through e2e and examples.
- Unit tests live inline: crates/tauri/src/ipc/protocol.rs has a `parse_invoke_request` test building a real `AppManager<Wry>` via `generate_context!("test/fixture/src-tauri/tauri.conf.json")`; authority.rs has ~10 `resolve_access`/`resolve_access_message` tests; asset.rs tests multi-range responses. — [crates/tauri/src/ipc/protocol.rs](https://github.com/tauri-apps/tauri/blob/745b9a48aeb6e7f48d70adf3d043e6203de5bac6/crates/tauri/src/ipc/protocol.rs) [crates/tauri/src/ipc/authority.rs](https://github.com/tauri-apps/tauri/blob/745b9a48aeb6e7f48d70adf3d043e6203de5bac6/crates/tauri/src/ipc/authority.rs) [crates/tauri/src/protocol/asset.rs](https://github.com/tauri-apps/tauri/blob/745b9a48aeb6e7f48d70adf3d043e6203de5bac6/crates/tauri/src/protocol/asset.rs) [crates/tauri/test/fixture/src-tauri/tauri.conf.json](https://github.com/tauri-apps/tauri/blob/745b9a48aeb6e7f48d70adf3d043e6203de5bac6/crates/tauri/test/fixture/src-tauri/tauri.conf.json)
- The `test` cargo feature enables `tauri::test` with `mock_app() -> App<MockRuntime>` and `mock_context`, so command/event code can be tested without a webview. — [crates/tauri/src/test/mod.rs](https://github.com/tauri-apps/tauri/blob/745b9a48aeb6e7f48d70adf3d043e6203de5bac6/crates/tauri/src/test/mod.rs) [crates/tauri/src/test/mock_runtime.rs](https://github.com/tauri-apps/tauri/blob/745b9a48aeb6e7f48d70adf3d043e6203de5bac6/crates/tauri/src/test/mock_runtime.rs)
- crates/tests/acl is a dedicated integration crate: `resolve_acl` iterates fixtures/capabilities/*, builds plugin manifests from fixtures/plugins via `tauri_utils::acl::build::define_permissions`, resolves with `Resolved::resolve`, and asserts insta debug snapshots (per-target snapshots for platform-specific permissions). — [crates/tests/acl/src/lib.rs](https://github.com/tauri-apps/tauri/blob/745b9a48aeb6e7f48d70adf3d043e6203de5bac6/crates/tests/acl/src/lib.rs) [crates/tests/acl/fixtures/capabilities/basic-ping/cap.toml](https://github.com/tauri-apps/tauri/blob/745b9a48aeb6e7f48d70adf3d043e6203de5bac6/crates/tests/acl/fixtures/capabilities/basic-ping/cap.toml)
- crates/tests/restart is a workspace integration binary exercising the app restart path. — [crates/tests/restart/src/main.rs](https://github.com/tauri-apps/tauri/blob/745b9a48aeb6e7f48d70adf3d043e6203de5bac6/crates/tests/restart/src/main.rs) [Cargo.toml](https://github.com/tauri-apps/tauri/blob/745b9a48aeb6e7f48d70adf3d043e6203de5bac6/Cargo.toml)
- crates/tauri-cli/tests/init.rs is a real-process test: it locates the built `cargo-tauri` binary next to the test executable, runs `init --app-name testapp --frontend-dist ../dist --dev-url http://localhost:3000` in a tempdir, and asserts src-tauri/tauri.conf.json was created. — [crates/tauri-cli/tests/init.rs](https://github.com/tauri-apps/tauri/blob/745b9a48aeb6e7f48d70adf3d043e6203de5bac6/crates/tauri-cli/tests/init.rs)
- packages/api-e2e runs WebdriverIO + mocha specs (app, core, dpi, event, image, menu, path, tray, webview, webviewWindow, window) against the examples/api app, with wdio.android.conf.ts/wdio.ios.conf.ts variants using appium. — [packages/api-e2e/package.json](https://github.com/tauri-apps/tauri/blob/745b9a48aeb6e7f48d70adf3d043e6203de5bac6/packages/api-e2e/package.json) [packages/api-e2e/test/specs/app.spec.ts](https://github.com/tauri-apps/tauri/blob/745b9a48aeb6e7f48d70adf3d043e6203de5bac6/packages/api-e2e/test/specs/app.spec.ts)
- The JS CLI package has vitest tests under packages/cli/__tests__ (template.spec.ts); the core TS API package has no colocated unit tests — its coverage comes from api-e2e. (inferred) — [packages/cli/__tests__/template.spec.ts](https://github.com/tauri-apps/tauri/blob/745b9a48aeb6e7f48d70adf3d043e6203de5bac6/packages/cli/__tests__/template.spec.ts) [packages/api/package.json](https://github.com/tauri-apps/tauri/blob/745b9a48aeb6e7f48d70adf3d043e6203de5bac6/packages/api/package.json)
- CI coverage: test-core.yml runs `cargo test` on windows-latest, ubuntu-latest and macos-14 with toolchain 1.90; separate workflows cover CLI (test-cli-rs.yml, test-cli-js.yml), e2e (test-api-e2e.yml, test-api-e2e-mobile.yml, test-android.yml), lint (lint-rust.yml, lint-js.yml), fmt, udeps, audit and supply-chain. — [.github/workflows/test-core.yml](https://github.com/tauri-apps/tauri/blob/745b9a48aeb6e7f48d70adf3d043e6203de5bac6/.github/workflows/test-core.yml) [.github/workflows/test-cli-rs.yml](https://github.com/tauri-apps/tauri/blob/745b9a48aeb6e7f48d70adf3d043e6203de5bac6/.github/workflows/test-cli-rs.yml) [.github/workflows/test-api-e2e.yml](https://github.com/tauri-apps/tauri/blob/745b9a48aeb6e7f48d70adf3d043e6203de5bac6/.github/workflows/test-api-e2e.yml) [.github/workflows/lint-rust.yml](https://github.com/tauri-apps/tauri/blob/745b9a48aeb6e7f48d70adf3d043e6203de5bac6/.github/workflows/lint-rust.yml)
- Benchmarks live in bench/ with three fixture apps (helloworld, cpu_intensive, files_transfer) built in CI via bench.yml. — [bench/tests/helloworld/src-tauri/src/main.rs](https://github.com/tauri-apps/tauri/blob/745b9a48aeb6e7f48d70adf3d043e6203de5bac6/bench/tests/helloworld/src-tauri/src/main.rs) [bench/tests/cpu_intensive/src-tauri/src/main.rs](https://github.com/tauri-apps/tauri/blob/745b9a48aeb6e7f48d70adf3d043e6203de5bac6/bench/tests/cpu_intensive/src-tauri/src/main.rs) [.github/workflows/bench.yml](https://github.com/tauri-apps/tauri/blob/745b9a48aeb6e7f48d70adf3d043e6203de5bac6/.github/workflows/bench.yml)
- Gap: crates/tauri-runtime-wry (the actual OS window/webview glue) and crates/tauri-bundler have little visible unit-test surface in-repo; correctness leans on api-e2e, examples and manual QA. (inferred) — [crates/tauri-runtime-wry/src/lib.rs](https://github.com/tauri-apps/tauri/blob/745b9a48aeb6e7f48d70adf3d043e6203de5bac6/crates/tauri-runtime-wry/src/lib.rs) [crates/tauri-bundler/src/bundle.rs](https://github.com/tauri-apps/tauri/blob/745b9a48aeb6e7f48d70adf3d043e6203de5bac6/crates/tauri-bundler/src/bundle.rs)
- check-generated-files.yml enforces that generated artifacts (e.g. CLI templates/schema) are regenerated and committed, a common CI failure source when editing templates or config schema. — [.github/workflows/check-generated-files.yml](https://github.com/tauri-apps/tauri/blob/745b9a48aeb6e7f48d70adf3d043e6203de5bac6/.github/workflows/check-generated-files.yml)

Every claim links to its cited files at the pinned commit. Citations identify source evidence; they do not establish runtime correctness. Independent CodeVetter scan — not reviewed by upstream maintainers.

## Public product links

- [CodeVetter](https://codevetter.com/)
- [Download](https://codevetter.com/download)
- [Documentation](https://codevetter.com/docs/)
- [Source](https://github.com/Codevetter/codevetter)
