# Testing maCopy has an automated suite. There is no separate “live” Storybook/UI docs site yet — product behavior is documented in README / ROADMAP, and verified by tests. ## Commands | Command | What it runs | |---|---| | `npm test` | Frontend (Vitest + Testing Library, jsdom — CI default) | | `npm run test:ui` | Same tests in the Vitest UI (open in your browser) | | `npm run test:headed` | Unit tests in Chromium — still mostly a flash (DOM mount/unmount) | | `npm run test:visual` | **Watchable** headed Playwright walkthrough of the real UI (`visual.html`) | | `npm run test:watch` | Frontend in watch mode | | `npm run test:rust` | Rust unit tests (`cargo test`) | | `npm run test:all` | Frontend + Rust | | `npm run lint` | TypeScript `tsc --noEmit` | | `npm run check` | Lint + all tests (CI-style gate) | Current counts (approx.): **~60 frontend** + **~52 Rust** unit tests. ## What is covered ### Frontend (`src/**/*.test.tsx`, `transforms.test.ts`) - App: load entries, paste invoke, delete via keyboard - ClipboardList: selection, multi-select modifiers, image stubs/thumbs, Alt=plain paste - ContextMenu: Paste / Paste plain / transforms / Pin / Delete - SettingsPanel: toggles, history limit, hotkey recorder, **Launch at login → autostart enable** - SearchBar basics - Transforms: plain text strip, JSON pretty, collapse / oneline Tauri APIs are mocked in `src/test/setup.ts` (invoke, window, events, clipboard, autostart). ### Backend (`src-tauri/src/**` `#[cfg(test)]`) - SQLite CRUD, FTS5, trim + pin preservation, settings - List previews: truncate text, omit image blobs, return thumbnails - Sensitive redaction (card / password / banking) while `get_entry` stays full - Hotkey parser (`cmd+\`` etc.) - Image thumbnail / PNG helpers - Clipboard content hashing fingerprints ## What is *not* covered (yet) - End-to-end UI on a real Mac (no Playwright against the Tauri window) - Accessibility permission / AppleScript paste in CI - Notarized release smoke tests - Performance benchmarks in CI ## Recommended workflow ```bash npm run check # before every PR / commit npm run tauri dev # manual smoke: hotkey, paste, redaction, thumbs npm run tauri build # release .app when testing Login Items / signing ```