@canton-network/tool-conformance-cli
v1.2.0
Published
CLI and Playwright harness for the CIP-103 conformance dApp
Keywords
Readme
CIP-103 Conformance CLI
Runs the CIP-103 conformance suite against a wallet and exports a CTRF report, optionally signed.
Test cases live in the conformance dApp; hooks for automating wallet
approvals live in
@canton-network/core-provider-conformance.
Quick Start
Requires Node 24 or newer.
npm install @canton-network/tool-conformance-cli
npx conformance-cli serveOpen the printed URL (default http://127.0.0.1:8082), choose a provider and
wrapper, and select Run suite. By default you'll have to perform each
requested action in your wallet, then select Action completed. Download the
report when the run finishes.
Use disposable test wallets and credentials. Approving the transaction case
creates a real Ping contract, so the ledger must have
#canton-builtin-admin-workflow-ping:Canton.Internal.Ping:Ping available.
Headless / CI
npx playwright install chromium
npx conformance-cli run --config conformance.config.jsonFailed or incomplete runs exit with code 1. See npx conformance-cli --help for
all commands (serve, run, sign, verify).
Configuration
All commands read an optional JSON config file passed via --config, with one
section per command. Relative paths resolve from the config file's directory.
The run.suite section uses the same format as the browser app's configuration
editor; see ConfigSchema in
src/config.ts for all options.
{
"run": {
"suite": {
"provider": {
"type": "remote",
"url": "http://localhost:3030/api/v0/dapp"
},
"wrapper": { "type": "manual" },
"disabledTests": []
},
"headed": true,
"out": "./result.json",
"signingKey": "./tester.pem"
}
}provider.type:picker(interactive SDK wallet picker),remote(url), orextension(target). Useremoteorextensionfor unattended runs.wrapper.type:manual(requiresrun.headed: true),window, orwebhook(url). See core-provider-conformance for how a wallet answerswindow/webhookinteractions.run.extension: path to an unpacked extension to load.
Signed Reports
Reports can be signed with an Ed25519 key file (run.signingKey or the sign
command) or with a wallet (Sign with wallet in the UI), and checked with
verify. Signatures are detached: the report is never modified, and a separate
<report>.sig JSON file carries the algorithm, the SHA-256 digest of the report
file, the signature over that hex digest string, and optional signer metadata.
Reports downloaded with diagnostics are not covered by the signature and may contain sensitive data.
Development
See docs/CONTRIBUTING.md for environment setup.
pnpm exec nx run @canton-network/tool-conformance-cli:build
pnpm exec nx run @canton-network/tool-conformance-cli:test