Soroban POC

Contract tests

cargo test, proptest, cargo fuzz, and cargo llvm-cov for basic-storage, plus vitest for wallet / WalletConnect. make test-all-contract and make test-all are the same target (all contract-side test types, no JSON). Run make sync-tests to run that plus refresh this page’s JSON.

Demo testnet id from export snapshot.

Passed (cargo test)

63

Failed

0

Captured

Jan 1, 1970, 12:00 AM

Run from the repository root

Executes every contract-side test type, then updates the JSON this page reads. Run this before demos or after changing Rust tests.

Full gate + this page

make sync-tests

All test types only (alias: make test-all)

make test-all-contract

make sync-tests runs make test-all-contract first (full cargo test + optional libFuzzer), then writes frontend/public/test-results.json. make test-all is the same Makefile recipe as make test-all-contract. Reload this page after make sync-tests.

LLVM line coverage

libFuzzer (outside cargo test)

storage_set_get

contracts/basic-storage/fuzz/fuzz_targets/storage_set_get.rs
cargo-fuzz

Run `make sync-tests` and reload for live cargo test rows.

Makefile
make fuzz
CLI
cargo fuzz run storage_set_get -- -runs=1000

Invariant tests (at a glance)

These cases are a subset of the library suite: randomized sequences with a predicate that must always hold (last-write visibility or cross-slot isolation). They also appear in the full tables below.

No invariant rows in the loaded JSON yet. Run make sync-tests after pulling the latest contract tests.

Cargo test suites — each case

Library tests

contracts/basic-storage/src/test.rs
OK

Export test results to populate each row.

Passed
35
Failed
0

No per-test rows in JSON (older export). Run make sync-tests to regenerate with schemaVersion 2.

Integration tests

contracts/basic-storage/tests/integration_contract.rs
OK

Multi-step flows.

Passed
3
Failed
0

No per-test rows in JSON (older export). Run make sync-tests to regenerate with schemaVersion 2.

Frontend wallet tests (Vitest)

frontend/lib/wallet-kit-config.test.ts
OK

WalletConnect + all default SWK wallets (run `make test-frontend` or `make sync-tests`).

Passed
25
Failed
0

No per-test rows in JSON (older export). Run make sync-tests to regenerate with schemaVersion 2.

Manual QA · /tests/mobilewallet

WalletConnectmobile (verified)

We verified mobile WalletConnect sessions to this POC: WalletConnect QR on soroban-fullstack-poc.vercel.app → Freighter and LOBSTR on a phone (Freighter first below). Scan with each wallet's in-app WalletConnect flow (not the iPhone Camera — that often opens MetaMask). Repo log: docs/WalletConnect-Mobile-Success-Log.md.

Mobile WalletConnect

Freighter

WalletConnect on testnet — scan QR in the Freighter app, then sign Soroban writes.

Order: Freighter Settings → Network → Test Net (see steps 1–2 below), then WalletConnect scan in Freighter (not the iPhone Camera). Writes use testnet account GBOE2WOJ…YNRI.

View account on Stellar Expert (testnet)

Freighter: enable Test Net

Freighter Settings screen — open Network to change testnet
1. Settings — open Freighter Settings, then tap Network.
Freighter Network screen with Test Net selected
2. Test Net — on Network, select Test Net.

WalletConnect → Freighter: scan & connect

Freighter scan QR code — WalletConnect scanner in Freighter app
3. Scan QR — Freighter WalletConnect scanner (not iPhone Camera).
Freighter wallet connection request after scanning QR — Soroban Fullstack POC on Test Net
4. Connection request — after scanning QR; Soroban Fullstack POC connection request on Test Net.
Freighter wallet connection success after connection request — connected to Soroban Fullstack POC
5. Connection successful — Freighter shows connected; return to browser.

Freighter: sign Soroban write (testnet)

Freighter confirm set() — Soroban Fullstack POC transaction
6. Signature request — Soroban Fullstack POC wants you to approve set() on testnet.
Freighter transaction signed successfully
7. Transaction confirmed — Freighter confirms the Soroban write after you approve.

Freighter writes on Stellar Expert (desktop)

Stellar Expert testnet showing Freighter wallet GBOE invoked set on contract CBGX
8. Block explorer — GBOE…YNRI invoked set on contract CBGX…6O2R (e.g. set(0 u32), set(42 u32)). Click a row for the tx URL.

Freighter account GBOE2WOJGWZATO2PXEBF7R74T5QOE7XFGNL55I4AIWEESWNC347YYNRI: use Test Net in Freighter before connecting. On Stellar Expert (testnet), filter by contract, click the invoke row, copy https://stellar.expert/explorer/testnet/tx/<hash>.

Verified transaction links (Freighter)

Mobile WalletConnect

LOBSTR

WalletConnect on testnet — Profile → Testnet, then Settings → WalletConnect to scan the desktop QR.

Order: LOBSTR Settings → Profile → Network → Testnet (see steps 1–2 below; Friendbot-fund your G… on testnet), then Settings → WalletConnect to scan the desktop QR — not the iPhone Camera.

LOBSTR: enable Stellar Testnet

LOBSTR Settings screen — open Profile to change network
1. Settings — open LOBSTR Settings, then tap Profile.
LOBSTR Profile settings with Network set to Testnet
2. Testnet — Profile → Network → Testnet (required before Soroban writes on this POC).

WalletConnect → LOBSTR: scan & connect

LOBSTR wallet scan QR codes screenshot — WalletConnect scanner in LOBSTR app
3. Scan QR — LOBSTR Settings → WalletConnect; scan desktop QR (not iPhone Camera).
LOBSTR wallet connection request after scanning QR — Soroban Fullstack POC wants to connect
4. Connection request — after scanning QR; Soroban Fullstack POC wants to connect (soroban-fullstack-poc.vercel.app).
LOBSTR wallet connection successful — Soroban Fullstack POC connection successful
5. Connection successful — “Soroban Fullstack POC connection successful” — return to browser.

LOBSTR: sign Soroban write (testnet)

LOBSTR signature request — Soroban Fullstack POC wants you to sign the Invoke Host Function transaction
6. Signature request — Soroban Fullstack POC wants you to sign the Invoke Host Function transaction (smart contract).
LOBSTR transaction confirmed for Soroban Fullstack POC
7. Transaction confirmed — LOBSTR confirms the Soroban write after you tap Confirm.

LOBSTR writes on Stellar Expert (desktop)

Stellar Expert testnet showing LOBSTR wallet GDYQ invoked set_signed on contract CBGX
8. Block explorer — GDYQ…2LXW invoked set_signed on contract CBGX…6O2R (e.g. set_signed(0 i32), set_signed(-404 i32)). Click a row for the tx URL.

LOBSTR account GDYQKAEPG3RUUQOEDRARAXSGP6BQASATLOZHQTDARQ2YX4J6QYN52LXW: enable testnet and fund via Friendbot before writes.

Verified transaction links (LOBSTR)

Vitest wallet rows above are automated config checks; this section is live QR pairing on testnet. More detail in docs/WalletConnect-Mobile-Success-Log.md or /docs (troubleshooting).

Refresh results

From repo root, or from frontend/:

make sync-tests
make test-all-contract
make test-all

Runs make test-all-contract first (full cargo test + optional libFuzzer), then writes test-results.json from the teed log — no second cargo test. Same target as make export-test-results. To export only (runs cargo test inside the script), run node scripts/export-test-results.mjs without the log env vars.

cd frontend && npm run export-test-results
make coverage
make fuzz

Coverage updates coverage-summary.json (needs cargo-llvm-cov). Fuzz is a separate harness.

Reload after exports. Standard gate: make ci. With coverage: make ci-coverage.