Skip to content

SDK compatibility e2e suites (Evolution SDK, Lucid, MeshJS, PyCardano, cardano-client-lib) and a runner - #194

Merged
satran004 merged 1 commit into
mainfrom
feat/sdk-e2e-tests
Sep 30, 2026
Merged

satran004 merged 1 commit into
mainfrom
feat/sdk-e2e-tests

Conversation

@satran004

Copy link
Copy Markdown
Member

Checks that Yaci Store works as a drop-in Blockfrost backend for the main off-chain SDKs. Every test builds, signs and submits through its SDK's Blockfrost provider, not a Yaci-specific one. Run it before each DevKit or Yaci Store release.

Depends on #193 to pass. The tests hit Blockfrost API gaps that Yaci Store 2.0.4 fixes, and #193 is what bumps DevKit to 2.0.4. Against Store 2.0.3 on main, some tests fail.

Suites

Suite Tests Runtime Change
evolution-sdk protocol_params, payment, plutus_v3 bun new
lucid-evo payment, plutus_v2, plutus_v3 bun 0.4.27 → 0.6.5
meshjs payment, payment_splitter_plutusV3 bun 1.9.0-beta-39 → 1.9.1
pycardano payment, plutus_v3 python3 venv new (replaces the placeholder)
cardano-client-lib Payment, MintToken, PlutusV3 JBang new

SDK-specific notes:

  • Lucid 0.6: needs an explicit slotConfig for the Custom network. lucid-evo/devnet.ts builds it from /admin/devnet.
  • MeshJS:
    • The tests use BlockfrostProvider. YaciProvider accepts only a 202 response from submit and evaluate, and Store now returns 200 like Blockfrost. Its fetchCostModels isn't implemented either.
    • The Plutus tests spend only the UTxO they locked, because Mesh's default ex-units fit just a few script inputs.
  • PyCardano:
    • devnet.py splits .../api/v1 into a base URL plus the API version, because blockfrost-python appends the version itself.
    • cbor2<6 is pinned.
    • The Plutus spend uses a short validity interval, because the default TTL is past a young devnet's forecast horizon (PastHorizon).
  • All suites: each test waits for its own lock UTxO and final tx, so leftovers from earlier runs don't break it.

Runner: e2e-tests/run-sdk-tests.sh

./run-sdk-tests.sh                                   # against a running DevKit
./run-sdk-tests.sh --update --restart                # latest SDKs on a fresh devnet
./run-sdk-tests.sh --store-jar <yaci-store>.jar      # test a Yaci Store build (java mode)
./run-sdk-tests.sh --store-native <dir>/yaci-store-n2c
./run-sdk-tests.sh --only pycardano --ccl-version 0.8.0-pre5
  • Prints a PASS/FAIL table and exits non-zero on any failure. Per-test logs go to .logs/.
  • --update rewrites the pinned versions: npm latest, the newest PyPI release, and Maven Central <latest> for cardano-client-lib.
  • --restart, --store-jar and --store-native recreate the devnet, and they stop processes by command line. That means they also stop any other cardano-node or cardano-submit-api on the machine. The README says so; without those flags nothing is stopped.

Requires bun, python3, jbang, Java 21 and GNU timeout.

Results

All 13 tests pass on a companion devnet (Yano pre17, --epoch-length 40) with Yaci Store 2.0.4 (native n2c, macOS arm64), with every SDK updated to its latest version.

Not in this PR

  • The examples/evolution-sdk dependency bump (0.5.8 → 0.5.14), which is unrelated to the tests.
  • Yano-only mode (yaci-store-all) hasn't been run with this suite yet.

🤖 Generated with Claude Code

Every suite builds, signs and submits through its SDK's Blockfrost
provider against Yaci Store, so they check that Store works as a drop-in
Blockfrost backend.

- New suites: Evolution SDK, PyCardano and cardano-client-lib (JBang)
- Lucid Evolution 0.6.5 (explicit slotConfig for the Custom network, via
  devnet.ts) and MeshJS 1.9.1 (BlockfrostProvider; Plutus tests spend only
  the UTxO they locked)
- run-sdk-tests.sh runs all suites and prints a PASS/FAIL table.
  --update moves each SDK to its latest version, --restart recreates the
  devnet, --store-jar / --store-native test a Yaci Store build, and
  --only / --ccl-version narrow the run
- bun lockfiles only (the runner uses bun); node_modules, .venv and
  .logs are ignored

All 13 tests pass against Yaci Store 2.0.4 (#193).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@satran004
satran004 merged commit 2b0db4a into main Sep 30, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant