Use per-node internal identities with a shared relay identity in supertest bootstrap and compose fixtures, and update the runner and lock data for the new node pubkey contract.
tribes-plugin-supertest
Migration and sync fixture plugin for Tribes supertest scenarios.
This plugin is intentionally small and boring. It exists so live rollout tests can validate behavior that Aether does not cover:
- plugin-owned Ash resources
AshNostrSyncregistration for plugin domains- reversible plugin database migrations
- plugin-owned JSON API access from the infra runner
Runtime surface
The plugin exposes a local-only JSON API under /plugins-api/supertest:
GET /healthGET /schemaPOST /resetPOST /casesPOST /cases/:id/incrementPOST /eventsGET /state?run_id=...
The API rejects non-loopback requests. Supertest calls it over SSH with curl
against 127.0.0.1:4000 on each node.
Resources
Supertest.CaseSupertest.Event
Both resources are backed by Tribes.Repo, use AshPostgres.DataLayer, and
participate in AshNostrSync.
Development
Use the host-backed plugin helper:
devenv shell plugin validate
devenv shell plugin test
devenv shell plugin precommit
Plain mix test and mix precommit are guarded because this suite expects the
host plugin test environment. Use mix raw_test / mix raw_precommit only for
low-level debugging after setting the same host environment yourself.
Docker e2e
The Docker e2e suite builds a Tribes host release with tribes_ui and
supertest, starts two nodes, runs plugin migrations, and verifies plugin-owned
AshNostrSync resources across the cluster:
scripts/run_docker_e2e.sh
Set TRIBES_HOST_ROOT=/path/to/tribes when the host checkout is not at
../tribes.