* test: replace deprecated React test renderer * fix(review): migrate MessageView interactive test off react-test-renderer, unify lockfile - MessageView.test.mjs: the grouped-tool-inputs test (added by #89 after this branch) drove Collapsible via TestRenderer internals; reworked onto Testing Library over the real DOM (row triggers, input toggles, rerender) with identical assertions. Last react-test-renderer consumer gone. - package-lock.json: regenerated for the merged dependency set (main's dbus-next plus the Testing Library/jsdom swap). --------- Co-authored-by: kahme247 <[email protected]>
2.2 KiB
Contributing to omp-web
Thanks for your interest in contributing!
Setup
- Node.js 22.19.0 or newer
- The omp binary on your
PATH(or setOMP_WEB_OMP_BIN)
npm install
npm run dev # http://127.0.0.1:30178
Checks (must pass before submitting)
npx tsc --noEmit # type check
npm run lint # ESLint, zero warnings
npm test # unit tests
Avoid npm run build during local development — it writes to .next/ and
interferes with the dev server. Builds are for release work.
React tests
Tests use node:test and jiti; no Jest or Vitest configuration is required.
For interactive components and hooks, import tests/setup-dom.mjs before
@testing-library/react/pure.js, and register cleanup with afterEach.
Use DOM queries and @testing-library/user-event for component interactions,
and renderHook for hook state and lifecycle tests. Keep the real jsdom
window and document; mock only the browser or network APIs a scenario needs.
Static HTML tests can continue using react-dom/server. Layout, scrolling,
and native browser navigation still require real-browser verification.
The jsdom dependency stays on 29.x to support the Node 22.19.0 baseline.
Conventions
- Styling: use the design tokens in
app/globals.css(colors, radius, shadow, motion) — no hardcoded colors. Shared primitives live incomponents/ui/(Dialog/Tooltip/Collapsible/field/toast, built on Base UI); icons come fromlucide-react. - i18n: every user-facing string needs entries in all three dictionaries:
lib/i18n/locales/{en,zh-CN,ja}.json. - Architecture: omp-web never imports
@oh-my-pi/*or@earendil-works/*packages (Bun-only). Live agent features go through theompchild process via RPC; seeDESIGN.mdandAGENTS.mdfor the full contract.
Pull requests
- Keep PRs focused; describe the user-visible change and how you verified it.
- For UI changes, include before/after screenshots in both light and dark themes when practical.
Reporting issues
Please use the issue templates and include your OS, Node version, omp version, and browser.