diff --git a/.github/workflows/pull-request-checks.yml b/.github/workflows/pull-request-checks.yml
new file mode 100644
index 0000000..70d1706
--- /dev/null
+++ b/.github/workflows/pull-request-checks.yml
@@ -0,0 +1,35 @@
+name: Pull Request Checks
+
+on:
+ pull_request:
+ branches:
+ - main
+
+permissions:
+ contents: read
+
+jobs:
+ unit-tests:
+ name: unit-tests
+ runs-on: ubuntu-latest
+
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v4
+
+ - name: Set up pnpm
+ uses: pnpm/action-setup@v4
+ with:
+ version: 10.33.2
+
+ - name: Set up Node
+ uses: actions/setup-node@v4
+ with:
+ node-version-file: .nvmrc
+ cache: pnpm
+
+ - name: Install dependencies
+ run: pnpm install --frozen-lockfile
+
+ - name: Run unit tests
+ run: pnpm test
diff --git a/apps/desktop/renderer/package.json b/apps/desktop/renderer/package.json
index 8ced03d..efc429f 100644
--- a/apps/desktop/renderer/package.json
+++ b/apps/desktop/renderer/package.json
@@ -6,7 +6,8 @@
"scripts": {
"dev": "vite",
"build": "vite build",
- "preview": "vite preview"
+ "preview": "vite preview",
+ "test": "vitest run"
},
"dependencies": {
"@radix-ui/react-slot": "^1.2.4",
@@ -25,7 +26,12 @@
"zustand": "^5.0.12"
},
"devDependencies": {
+ "@testing-library/jest-dom": "^6.9.1",
+ "@testing-library/react": "^16.3.2",
+ "@testing-library/user-event": "^14.6.1",
"@vitejs/plugin-react": "^4.3.0",
- "vite": "^6.0.0"
+ "jsdom": "^29.1.1",
+ "vite": "^6.0.0",
+ "vitest": "^4.1.6"
}
}
diff --git a/apps/desktop/renderer/src/App.tsx b/apps/desktop/renderer/src/App.tsx
index b997ca3..3400a1b 100644
--- a/apps/desktop/renderer/src/App.tsx
+++ b/apps/desktop/renderer/src/App.tsx
@@ -18,6 +18,8 @@ export default function App() {
{t("editor.unsavedChangesConfirm")}