# End-to-end tests They drive a running movim-rs (and, for the `browser_*` ones, the real Movim frontend in a headless Chromium) against a local Prosody. ./setup.sh # once: builds Prosody locally, creates alice, bob and carol cargo build && ./run.sh # starts movim-rs on 127.0.0.1:8099 uv run --with websockets --with requests python e2e.py uv run --with websockets --with requests python e2e_muc.py uv run --with websockets --with requests python setup_roster.py # alice and bob become contacts uv run --with playwright python -m playwright install chromium uv run --with playwright python browser_smoke.py # also browser_call, browser_omemo, ... uv run --with playwright python browser_muji.py # 3-way group call (--video for video) uv run --with playwright python browser_preview.py # link previews (serves pages on :8765) Screenshots are written to `shots/`. On a fresh database the first login replays the whole archive (MAM), so the scripts match on the ids of the messages they send rather than on the first message that shows up. The Python clients send no timezone, so times are UTC.