Files
matrix-rust-sdk/testing/matrix-sdk-integration-testing
Benjamin Bouvier e158e8abc0 refactor(timeline): in thread permalinks, avoid back-paginating if the root event is part of the /context response
For thread permalinks, we start with a /context query that will load the
focused event, and maybe a few other in-thread events. In fact, it can
also include the thread root event, which was excluded before. Instead,
we would get a previous-token for back-paginations, which would be used
in /relations. When the request to /relations returns an empty previous
token, that means we've reached the start of the thread, and in this
case we would manually load the root with /event.

We can do better, if the root event is part of the initial /context
response: skip the back-paginations altogether, and make sure to include
the root event in `init_focus()`.
2025-09-25 10:21:19 +02:00
..
2025-09-01 16:33:10 +02:00

Matrix SDK integration test

This set of tests requires a Synapse instance, and it runs the tests from this directory against this real-world server. As a result, these tests depend on the load of the machine/server, and as such they might be more sensitive to timing issues than other tests in the code base.

Requirements

This requires a synapse backend with a configuration patched for CI. You can get it up and running with docker compose via:

docker compose -f assets/docker-compose.yml up -d
docker compose -f assets/docker-compose.yml logs --tail 100 -f

Note that this works also with podman compose.

Patches You can see the patches we do to configuration (namely activate registration and resetting rate limits, enable a few experimental features), check out what assets/ci-start.sh changes.

Running

The integration tests can be run with cargo test or cargo nextest run.

The integration tests expect the environment variables HOMESERVER_URL to be the HTTP URL to access the synapse server and HOMESERVER_DOMAIN to be set to the domain configured in that server. These variables are set to a default value that matches the default docker-compose.yml template; if you haven't touched it, you don't need to manually set those environment variables.

Maintenance

Delete all instance data

To stop the services and drop the database of your docker-compose cluster, run:

docker compose -f assets/docker-compose.yml down --volumes --remove-orphans -t 0

Rebuild the synapse image

If the Synapse image has been updated in version, you may need to rebuild the custom Synapse image using the following:

docker compose -f assets/docker-compose.yml build --pull synapse

Then restart the synapse service:

docker compose -f assets/docker-compose.yml up -d synapse