The nightly full run installed Nim and built liblogosdelivery.so in every shard, only to collect tests/wrappers_tests, which now live in the core repository. Skips that directory and drops the build steps, so the run is python + docker. Points node1/node2/additional_nodes and the self-built nodes in rest_flags and metrics at quay.io/wakuorg/nwaku-pr:nightly, so the suite finally exercises our build. sharding keeps upstream nodes through UPSTREAM_NWAKU: setup_nwaku_relay_nodes mixes them with our main node, which is the only compatibility check left in the suite. Drops the RLN shard, whose class is skipped in full, and stops ignoring test_rln.py in the sharded run so the tests are collected wherever they land once that skip goes away. For the measurement window: reruns is an input pinned to 0 for the nightly so flakes stay visible, every shard writes a JUnit report, and the digest of each image is printed before the tests start. Wrapper coverage moves entirely to pr_tests.yml, which was missing test_channel_lifecycle.py and the docker_required tests; both are added there.
logos-messaging-interop-tests
Logos Messaging end‑to‑end (e2e) interoperability test framework for the Waku v2 protocol. It exercises multiple clients (logos-messaging-nim, js‑waku, go‑waku…) in realistic network topologies and reports results via Allure.
Setup & contribution
# Use sparse checkout since the repo has large history
git clone --depth=1 git@github.com:logos-messaging/logos-messaging-interop-tests.git
cd logos-messaging-interop-tests
# create and activate a virtual environment
python -m venv .venv
source .venv/bin/activate
# install python dependencies + prepare git hooks
pip install -r requirements.txt
pre-commit install
Tip
– You can override any default variable defined in
src/env_vars.pyeither • by exporting it before thepytestcall, or • by creating a.envfile at the repository root.
Running tests locally
Run one specific test:
pytest -k test_unsubscribe_from_some_content_topics
Run an entire test class / suite:
pytest -k TestRelaySubscribe
All usual pytest selectors (-k, -m, -q, etc.) work.
Waku logs can be found in log/docker folder while test log can be seen either in the terminal or in the log folder.
Continuous Integration (CI)
Daily build on the logos-delivery nightly image
Every day the workflow nim_waku_daily.yml triggers against quay.io/wakuorg/nwaku-pr:nightly, the image built from logos-delivery master by that repository's pre-release workflow. It is scheduled after the image is published.
To launch it manually:
- Open https://github.com/logos-messaging/logos-messaging-interop-tests/actions/workflows/nim_waku_daily.yml.
- Click ► Run workflow.
- Pick the branch you want to test (defaults to
master) and press Run workflow.
PR tests
Every push to a pull request triggers pr_tests.yml which runs:
- Build — compiles
liblogosdelivery.so(cached by submodule commit hash). - Wrapper tests — all tests under
tests/wrappers_tests/, including thedocker_requiredones (~5 min). - Smoke tests —
pytest -m smokewith Docker nodes (~10 min).
The daily and full-suite runs no longer build liblogosdelivery.so: they skip tests/wrappers_tests/, which runs in the PR tests above. Most of that suite is also mirrored in the logos-delivery repository (tests-e2e/).
To run the full test suite (17 shards) on a PR, add the label full-test to the pull request. Note it runs against wakuorg/nwaku:latest, unlike the daily run, which uses our own image. The full suite will start automatically.
On‑demand matrix against custom logos-messaging-nim versions
Use interop_tests.yml when you need to test a PR or a historical image:
- Open https://github.com/logos-messaging/logos-messaging-interop-tests/actions/workflows/interop_tests.yml.
- Press ► Run workflow and choose the branch.
- In the workflow inputs field set the
nwaku_imageyou want, e.g.wakuorg/nwaku:v0.32.0.
Viewing the results
- When the job finishes GitHub will display an Allure Report link in the run summary.
- The bot also posts the same link in the Waku / test‑reports Discord channel.
Updating the CI job used from logos-messaging-nim
In the logos-messaging-nim repository itself the file .github/workflows/test_PR_image.yml pins the interop test version to SMOKE_TEST_STABLE.
To update it, move the SMOKE_TEST_STABLE tag to point to the desired commit in waku-interop-tests.
License
Licensed under either of:
- MIT License – see LICENSE-MIT or http://opensource.org/licenses/MIT
- Apache License 2.0 – see LICENSE-APACHE-v2 or http://www.apache.org/licenses/LICENSE-2.0
at your option.