A cross-platform version control UI application built with Tauri v2, React, and TypeScript.
Disclaimer: The application uses quite a lot of AI-generated code, especially on the frontend. I review all the code before adding it to the project, but I won't claim to be a frontend expert (or even a frontend developer), mistakes can happen.
pnpm install
pnpm tauri dev# Backend (Rust)
cd src-tauri && cargo test
# Frontend (TypeScript)
pnpm test
# E2E (requires WebKitWebDriver + tauri-driver)
pnpm run test:e2eThe e2e suite uses WebdriverIO + tauri-driver to control the real application via the WebDriver protocol.
-
Install tauri-driver:
cargo install tauri-driver
-
Install WebKitWebDriver:
- Debian/Ubuntu:
sudo apt install webkit2gtk-driver - Fedora:
sudo dnf install webkitgtk6.0-devel(includes the driver) - Arch Linux: Build from WebKitGTK source with
-DENABLE_WEBDRIVER=ON
- Debian/Ubuntu:
-
Install e2e dependencies:
cd e2e && pnpm install
-
Run the suite:
pnpm run test:e2e
This will automatically create a test repository, build the debug binary, and run all specs.
Each spec file is self-contained and can be run independently. Use the --spec flag:
cd e2e
# Run a single spec
npx wdio run wdio.conf.ts --spec specs/22-diff-regression.spec.ts
# Run multiple specs in sequence
npx wdio run wdio.conf.ts --spec specs/04-staging.spec.ts --spec specs/05-branches.spec.tsThe first run will build the app and create the test repository template. Each spec resets the repo to a pristine state in its before() hook, so ordering doesn't matter.
The application version is defined in Cargo.toml under the version field. To publish a new version, update this value before building:
[package]
name = "cheesegit"
version = "x.y.z"
...Then build the release:
pnpm tauri buildThe About dialog reads the version at runtime via the Tauri API. During development (pnpm tauri dev), it shows "Development" instead of a version number.