Skip to content
d3 Wiki
04.05

Testing standards

Enough tests to change code with confidence, not so many that they slow us down.

Updated
Oct 3, 2026
On this page

Purpose

Enough tests to change code with confidence, not so many that they slow us down.

The standard

  • Must test: any business logic (calculations, geometry math, parsing), any RLS policy (08.03), any server action that writes data.

  • Should test: critical user flows (login, save page, generate panel) with one end-to-end test each.

  • Don't bother: styling, trivial getters, generated code.

  • Tools: Vitest (unit), Playwright (e2e) for web; pytest for Python (geometry modules tested outside Rhino with pure math); xUnit for C# with the Revit/Rhino API mocked or tested via a headless runner where available.

  • Tests live next to code (foo.test.ts) or in tests/; named for behavior: rejects_save_when_role_is_viewer.

  • CI runs unit tests on every PR; e2e on main and on PRs labeled e2e.

Anti-patterns

Tests that mock the thing they're testing; snapshot tests of large UI; skipping tests to get green.

Owner: Matt · Last reviewed: 2026-09