Skip to Content
Testing

Testing Overview

Start with Before a PR when choosing checks for a change. The matrices below document the broader Solidity coverage and invariants.

Before a PR

ChangeMinimum check
Docspnpm docs:build
Solidity logicmake test
Share accounting or lifecyclemake test && make test-invariant
Frontendpnpm app:build
App unit testspnpm --filter tap-app test:nav
App e2epnpm app:test:e2e
Shared unitspnpm test:units

Commands

GoalCommand
Build contractsmake build
Solidity testsmake test or pnpm test
Verbose testsmake test-v
Invariantsmake test-invariant
Deep invariantsmake test-invariant-deep
Docs buildpnpm docs:build
Frontend buildpnpm app:build
App unit testspnpm --filter tap-app test:nav
App e2epnpm app:test:e2e
@tap/unitspnpm test:units

Compiler pin is Solidity 0.8.37 (chain/foundry.toml). EVM target is osaka (Plume Fusaka). CI installs Foundry v1.8.3.

Solidity coverage

AreaFiles
Cap table setupCapTable.t.sol, CapTableFactory.t.sol, Issuer.t.sol
Access controlAccessControl.t.sol, Wallet.t.sol
Stock lifecycleStockIssuance.t.sol, StockTransfer.t.sol, StockCancellation.t.sol, StockRepurchase.t.sol, StockReissuance.t.sol, StockRetraction.t.sol, StockAcceptance.t.sol
Setup recordsStakeholder.t.sol, StockClass.t.sol, Minting.t.sol
Share adjustmentsAdjustment.t.sol
Invariantstest/invariants/CapTableInvariants.t.sol

Invariants

PropertyPurpose
Issuer shares_issued <= shares_authorizedPrevent issuer over-issuance.
Class shares_issued <= shares_authorizedPrevent class over-issuance.
Stakeholder and stock class counts stay consistent.Catch index drift.
Active position tracking stays consistent.Catch stale securities and missing deletes.
Last updated on