Fruitback Docs
fruitback.com GitHub
All the docs

Docs Contribute Commands

Commands

The commands of a checkout of this repository, and what each test runner is for.

pnpm install
pnpm dev          # playground on :5177 + worker on :8788, no Linear key needed
pnpm test         # node --test across packages via Nx, vitest for the worker
pnpm e2e          # playwright, starts both servers itself
pnpm typecheck
pnpm lint         # oxlint
pnpm format:fix   # oxfmt

pnpm --filter @fruitback/shared test:watch

Tests run on Node’s own runner (node:test + node:assert/strict) against the TypeScript sources: no test framework, no transpiler, no loader in the dependency tree. Same reason relative imports carry their .ts extension: Node’s resolver wants it, and it buys node --test and node --watch for free. The worker is the exception: its tests run on vitest, so that mutation testing follows each test (conventions.md).

On top of that sits a small Playwright suite, for the two things a DOM emulator cannot vouch for and that this product rests on: a real selector engine and real layout. pnpm dev opens the same page by hand: a deliberately hostile fake client site, with a Redéployer button that rehashes classes and shuffles the markup so re-anchoring can be watched rather than argued about. Both run against a worker with a PostgreSQL in its process and an in-memory Linear, so neither needs a service or an API key, nor touches a workspace.