Builder's guide · Section 15

Testing and upgrading

Test against the real thing

  • Server tests for your relay, permissions and approvals, including the side doors (section 10). Test that each refused action is actually refused, not only that allowed actions work.
  • Component and unit tests for money formatting, the command registry and forms.
  • A scripted browser run per chunk (for example with Playwright) against a freshly reset demo ledger, following the same “what to try” steps the owner will.
  • A local GAAPcore built from your pinned commit. Never test against production books.
  • A fast reset: snapshot the seeded database and restore it in seconds, so every test run starts from known books.

Upgrading GAAPcore

  1. Copy the new api/openapi.yaml into your pinned copy and update the pin (commit, schema version).
  2. Regenerate the client and type-check. The compiler lists every screen the change touches.
  3. Run all tests against a database built at the new version.
  4. Upgrade production only after a tested backup (see the warning in section 5).