{"id":13770140,"url":"https://github.com/matrix-org/patience","last_synced_at":"2025-04-10T15:45:26.999Z","repository":{"id":47206322,"uuid":"393052009","full_name":"matrix-org/patience","owner":"matrix-org","description":"Full stack integration testing for Matrix clients and servers","archived":false,"fork":false,"pushed_at":"2021-12-06T17:50:12.000Z","size":1246,"stargazers_count":19,"open_issues_count":8,"forks_count":3,"subscribers_count":5,"default_branch":"main","last_synced_at":"2025-03-24T13:36:13.565Z","etag":null,"topics":["client","integration","matrix","server","testing"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/matrix-org.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2021-08-05T13:26:25.000Z","updated_at":"2025-01-11T03:56:59.000Z","dependencies_parsed_at":"2022-09-15T23:10:46.968Z","dependency_job_id":null,"html_url":"https://github.com/matrix-org/patience","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/matrix-org%2Fpatience","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/matrix-org%2Fpatience/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/matrix-org%2Fpatience/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/matrix-org%2Fpatience/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/matrix-org","download_url":"https://codeload.github.com/matrix-org/patience/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248243509,"owners_count":21071055,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["client","integration","matrix","server","testing"],"created_at":"2024-08-03T17:00:34.658Z","updated_at":"2025-04-10T15:45:26.970Z","avatar_url":"https://github.com/matrix-org.png","language":"TypeScript","funding_links":[],"categories":["Testing"],"sub_categories":["2016"],"readme":"# Patience\n\n[![CI](https://github.com/matrix-org/patience/actions/workflows/ci.yml/badge.svg)](https://github.com/matrix-org/patience/actions/workflows/ci.yml)\n[![Matrix](https://img.shields.io/matrix/matrix-patience:matrix.org?label=%23matrix-patience%3Amatrix.org\u0026logo=matrix)](https://matrix.to/#/#matrix-patience:matrix.org)\n\nFull stack integration testing for Matrix clients and servers\n\n![](example.png)\n\n## Features\n\n* Any permutation of supported clients can be tested together\n* Client specifics are hidden by default (but still accessible) so tests can\n  target many clients without modification\n* Tests written in TypeScript\n* Report mode gives a quick summary of results in your terminal\n* Interactive mode allows you to try out and debug the clients in your browser\n* Builds on top of [Complement's `homerunner` API](https://github.com/matrix-org/complement/tree/master/cmd/homerunner)\n* Test harness displays all clients together on one page\n\n## Supported environments\n\nPatience aims to support testing different combinations of Matrix clients and\nservers in a unified environment.\n\nElement Web and Hydrogen are the currently supported clients. Anything that fits\nin an `iframe` should be easy to add. Tools such as\n[Appetize](https://appetize.io/) could be used to add mobile clients.\n\nSynapse and Dendrite are the currently supported homeservers.\n\n## Usage\n\nSetup is currently a bit manual, as this project is just getting started. If you\nhave suggestions on how to improve setup, please file an issue.\n\nTo get started with Patience in your project, first collect the following bits\nand bobs:\n\n- Docker\n- Go\n- Node.js\n- `homerunner` from [Complement](https://github.com/matrix-org/complement)\n  - `go install github.com/matrix-org/complement/cmd/homerunner@latest`\n- One or more Complement-ready [homeserver\n  images](https://github.com/matrix-org/complement#running-against-dendrite)\n- Chrome\n  - We plan to switch to Playwright in the future to support additional browsers\n\nCreate a directory to hold your tests and add Patience:\n\n`npm add @matrix-org/patience --save-dev`\n\nAdd a test, perhaps by copying [`hello.ts`](./examples/hello.ts). At a minimum,\nyou should call `orchestrate` to set up servers, clients, and rooms for your\ntest. Most likely you'll want to actually test something too.\n\nTo run your tests in reporting mode:\n\n`npx patience '*.ts'`\n\nYou should see:\n\n```\nFinished running tests, all tests passed! 🎉\n```\n\nTo run your tests in interactive mode:\n\n`npx patience '*.ts' -- --manual`\n\nThis will start a server at `localhost:8000` which you can navigate to in your\nbrowser. Click on one of listed test files to watch the test run. You can\ninteract with the clients, timeline, etc. The clients remain after for\nexploration until you stop the server.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmatrix-org%2Fpatience","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmatrix-org%2Fpatience","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmatrix-org%2Fpatience/lists"}