mirror of
https://github.com/logos-messaging/logos-delivery.git
synced 2026-07-29 16:03:24 +00:00
* Add in-repo API/e2e test suite (tests-e2e) Migrate the liblogosdelivery API/wrapper pytest suite into tests-e2e/ and run it in CI (e2e-api-tests.yml) against the built library. Edge senders use the real lightpush path (relay=False). * ci: run docker subset of the API/e2e wrapper tests Parametrize e2e-api-tests.yml with `subset` (non-docker|docker) and `node_image` inputs, and add a send-api-e2e-docker-tests job that runs the docker_required wrapper tests (S19/S20/S31) against the built node image. The docker job needs both the liblogosdelivery artifact and the container-image build, and skips when no image is available (fork PRs lack the registry secrets). The non-docker subset still needs only `build`, so a docker-image build failure cannot mask its result. * ci: run docker e2e subset on fork PRs against a pinned public image Drop the gate that skipped the docker subset when no PR-built node image is available. Fork PRs lack the quay secrets, so build-docker-image succeeds with an empty output and the subset now falls back to DEFAULT_NWAKU instead of being skipped. Pin DEFAULT_NWAKU to wakuorg/nwaku:v0.38.1. The rolling :latest tag is a daily upstream master build and currently fails to boot with "updateAddressInENR: Public key does not correspond with given private key", which would have made the subset permanently red on fork PRs. s31 passes against v0.38.1 and against the PR-built image. Echo the resolved peer image at the start of the test step. The job name is left static so the check can still be made required.
tests-e2e — logos-delivery API/e2e tests (Python)
End-to-end tests for liblogosdelivery, driven through the Python bindings (C-FFI).
Migrated from logos-delivery-interop-tests (the wrapper / send-API suite).
Layout
src/— test framework (node wrappers, steps, helpers)tests/wrappers_tests/— the API/e2e scenario tests (test_s02…s31)vendor/logos-delivery-python-bindings/waku/wrapper.py— CFFI binding (NodeWrapper); itdlopens../lib/liblogosdelivery.so
Run locally
# 1. Build the shared library and place it where the binding looks for it
./tests-e2e/scripts/prepare_lib.sh
# 2. Python env + deps
python -m venv .venv && source .venv/bin/activate
pip install -r tests-e2e/requirements.txt
# 3. Run (from tests-e2e/)
cd tests-e2e
pytest tests/wrappers_tests -m "not docker_required" # 18 pure-binding tests
pytest tests/wrappers_tests -m docker_required # 3 tests that also need a Docker nwaku peer (S19/S20/S31)
CI
.github/workflows/e2e-api-tests.yml (called from ci.yml, needs: build) downloads the
liblogosdelivery artifact produced by the build job and runs the non-docker subset on every PR —
so a protocol change and its e2e test land in the same PR.